CVSROOT: /sources/auctex Module name: auctex Changes by: Tassilo Horn <tsdh> 12/04/08 09:35:12
Index: tex.el =================================================================== RCS file: /sources/auctex/auctex/tex.el,v retrieving revision 5.688 retrieving revision 5.689 diff -u -b -r5.688 -r5.689 --- tex.el 24 Aug 2011 16:24:17 -0000 5.688 +++ tex.el 8 Apr 2012 09:35:11 -0000 5.689 @@ -1003,6 +1003,40 @@ :group 'TeX-view :type '(alist :key-type symbol :value-type (group sexp))) +(defun TeX-evince-dbus-p () + "Return non-nil, if evince is installed and accessible via its +DBUS interface." + (and (fboundp 'dbus-register-signal) + (fboundp 'dbus-call-method) + (getenv "DBUS_SESSION_BUS_ADDRESS") + (executable-find "evince") + (member + "org.gnome.evince.Daemon" + (dbus-introspect-get-interface-names + :session "org.gnome.evince.Daemon" + "/org/gnome/evince/Daemon")))) + +(defun TeX-evince-sync-view () + (let* ((uri (concat "file://" (expand-file-name + (concat file "." (TeX-output-extension))))) + (owner (dbus-call-method + :session "org.gnome.evince.Daemon" + "/org/gnome/evince/Daemon" + "org.gnome.evince.Daemon" + "FindDocument" + uri + t))) + (if owner + (dbus-call-method + :session owner + "/org/gnome/evince/Window/0" + "org.gnome.evince.Window" + "SyncView" + (buffer-file-name) + (list :struct :int32 (line-number-at-pos) :int32 1) + (round (float-time))) + (error "Couldn't find the Evince instance for %s" uri)))) + (defvar TeX-view-program-list-builtin (cond ((eq system-type 'windows-nt) @@ -1031,13 +1065,15 @@ ("dvips and gv" "%(o?)dvips %d -o && gv %f") ("gv" "gv %o") ("xpdf" ("xpdf -remote %s -raise %o" (mode-io-correlate " %(outpage)"))) - ("Evince" ("evince" (mode-io-correlate + ("Evince" ,(if (TeX-evince-dbus-p) + 'TeX-evince-sync-view + `("evince" (mode-io-correlate ;; With evince 3, -p N opens the page *labeled* N, ;; and -i,--page-index the physical page N. ,(if (string-match "--page-index" (shell-command-to-string "evince --help")) " -i %(outpage)" - " -p %(outpage)")) " %o")) + " -p %(outpage)")) " %o"))) ("Okular" ("okular --unique %o" (mode-io-correlate "#src:%n%b"))) ("xdg-open" "xdg-open %o")))) "Alist of built-in viewer specifications. @@ -1473,10 +1509,7 @@ (TeX-set-mode-name 'TeX-source-correlate-mode t t) (setq TeX-source-correlate-start-server-flag TeX-source-correlate-mode) ;; Register Emacs for the SyncSource DBUS signal emitted by Evince. - (when (and (fboundp 'dbus-register-signal) - (fboundp 'dbus-call-method) - (getenv "DBUS_SESSION_BUS_ADDRESS") - (executable-find "evince")) + (when (TeX-evince-dbus-p) (require 'dbus) (dbus-register-signal :session nil "/org/gnome/evince/Window/0" _______________________________________________ auctex-diffs mailing list auctex-di...@gnu.org https://lists.gnu.org/mailman/listinfo/auctex-diffs