mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-11-21 06:55:35 +00:00
Add docview link type (open files in doc-view mode at a specific page)
This commit is contained in:
parent
ed69cd7f3b
commit
9f1fd65a06
@ -2760,6 +2760,7 @@ file:sometextfile::NNN @r{file with line number to jump to}
|
||||
file:projects.org @r{another Org file}
|
||||
file:projects.org::some words @r{text search in Org file}
|
||||
file:projects.org::*task title @r{heading search in Org file}
|
||||
docview:papers/last.pdf::NNN @r{file with page number to open in doc-view mode}
|
||||
id:B7423F4D-2E8A-471B-8810-C40F074717E9 @r{Link to heading by ID}
|
||||
news:comp.emacs @r{Usenet link}
|
||||
mailto:adent@@galaxy.net @r{Mail link}
|
||||
|
@ -5,6 +5,10 @@
|
||||
|
||||
* org.el (org-inside-latex-macro-p): Save match data.
|
||||
|
||||
2009-11-28 Jan Böcker <jan.boecker@jboecker.de>
|
||||
|
||||
* org-docview.el: New file.
|
||||
|
||||
2009-11-27 Carsten Dominik <carsten.dominik@gmail.com>
|
||||
|
||||
* org-latex.el (org-export-latex-class-options): New variable.
|
||||
|
83
lisp/org-docview.el
Normal file
83
lisp/org-docview.el
Normal file
@ -0,0 +1,83 @@
|
||||
;;; org-docview.el --- support for links to doc-view-mode buffers
|
||||
|
||||
;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
|
||||
;; Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Jan Böcker <jan.boecker at jboecker dot de>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.33trans
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;
|
||||
;;; Commentary:
|
||||
|
||||
;; This file implements links to open files in doc-view-mode.
|
||||
;; Org-mode loads this module by default - if this is not what you want,
|
||||
;; configure the variable `org-modules'.
|
||||
|
||||
;; The links take the form
|
||||
;;
|
||||
;; docview:<file path>::<page number>
|
||||
;;
|
||||
;; for example: [[docview:~/.elisp/org/doc/org.pdf::1][Org-Mode Manual]]
|
||||
;;
|
||||
;; Autocompletion for inserting links is supported; you will be
|
||||
;; prompted for a file and a page number.
|
||||
;;
|
||||
;; If you use org-store-link in a doc-view mode buffer, the stored
|
||||
;; link will point to the current page.
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
(require 'org)
|
||||
|
||||
(org-add-link-type "docview" 'org-docview-open)
|
||||
(add-hook 'org-store-link-functions 'org-docview-store-link)
|
||||
|
||||
(defun org-docview-open (link)
|
||||
(when (string-match "\\(.*\\)::\\([0-9]+\\)$" link)
|
||||
(let* ((path (match-string 1 link))
|
||||
(page (string-to-number (match-string 2 link))))
|
||||
(org-open-file path 1) ;; let org-mode open the file (in-emacs = 1)
|
||||
;; to ensure org-link-frame-setup is respected
|
||||
(doc-view-goto-page page)
|
||||
)))
|
||||
|
||||
(defun org-docview-store-link ()
|
||||
"Store a link to a docview buffer"
|
||||
(when (eq major-mode 'doc-view-mode)
|
||||
;; This buffer is in doc-view-mode
|
||||
(let* ((path buffer-file-name)
|
||||
(page (doc-view-current-page))
|
||||
(link (concat "docview:" path "::" (number-to-string page)))
|
||||
(description ""))
|
||||
(org-store-link-props
|
||||
:type "docview"
|
||||
:link link
|
||||
:description path))))
|
||||
|
||||
(defun org-docview-complete-link ()
|
||||
"Use the existing file name completion for file: links to get the file name,
|
||||
then ask the user for the page number and append it."
|
||||
(concat (replace-regexp-in-string "^file:" "docview:" (org-file-complete-link))
|
||||
"::"
|
||||
(read-from-minibuffer "Page:" "1")))
|
||||
|
||||
|
||||
(provide 'org-docview)
|
@ -170,7 +170,7 @@ With prefix arg HERE, insert it at point."
|
||||
(let ((a (member 'org-infojs org-modules)))
|
||||
(and a (setcar a 'org-jsinfo))))
|
||||
|
||||
(defcustom org-modules '(org-bbdb org-bibtex org-gnus org-info org-jsinfo org-irc org-mew org-mhe org-rmail org-vm org-w3m org-wl)
|
||||
(defcustom org-modules '(org-bbdb org-bibtex org-docview org-gnus org-info org-jsinfo org-irc org-mew org-mhe org-rmail org-vm org-w3m org-wl)
|
||||
"Modules that should always be loaded together with org.el.
|
||||
If a description starts with <C>, the file is not part of Emacs
|
||||
and loading it will require that you have downloaded and properly installed
|
||||
@ -189,6 +189,7 @@ to add the symbol `xyz', and the package must have a call to
|
||||
(const :tag " bbdb: Links to BBDB entries" org-bbdb)
|
||||
(const :tag " bibtex: Links to BibTeX entries" org-bibtex)
|
||||
(const :tag " crypt: Encryption of subtrees" org-crypt)
|
||||
(const :tag " docview: Links to doc-view buffers" org-docview)
|
||||
(const :tag " gnus: Links to GNUS folders/messages" org-gnus)
|
||||
(const :tag " id: Global IDs for identifying entries" org-id)
|
||||
(const :tag " info: Links to Info nodes" org-info)
|
||||
|
Loading…
Reference in New Issue
Block a user