Hi Tassilo,
2014-06-25 23:40 GMT+02:00 Tassilo Horn <[email protected]>:
>> We could add another possible value for the
>> `TeX-source-correlate-method' option: an alist of the kind
>> ((dvi . <source-specials or synctex>)
>> (pdf . <source-specials or synctex>))
>> so one can tell AUCTeX to use SyncTeX in PDF mode and source specials
>> with DVI output. This possibility should be documented because most
>> users (i.e., all those not using Evince) will want it. In addition, a
>> Lisp hacker is able to set the correlation method depending on the
>> chosen viewer (useful when writing multi-system init files). The
>> change to `TeX-source-correlate-determine-method' wouldn't be
>> necessary anymore. What do you think?
>
> That's a good idea. But what would the value `auto' do then when
> compiling to DVI, source-specials or synctex? I'd probably suggest
> source-specials since that's the safe bet for all users that don't use a
> pretty recent evince.
My idea is as follows:
- convert `TeX-source-correlate-method-active' into a function;
- leave `TeX-source-correlate-determine-method' as it is now, at least
I don't think it will be necessary to change it as I proposed last
year;
- add the alist above to the possible values of `TeX-source-correlate-method';
- adapt `TeX-source-correlate-mode'.
But a patch is worth a thousand words, see the one attached.
I believe a safe default for `TeX-source-correlate-method' would be
'((dvi . source-specials) (pdf . synctex))
which is compatible with most viewers, instead of the current 'auto.
Bye,
Mosè
diff --git a/context.el b/context.el
index ea333e5..469a128 100644
--- a/context.el
+++ b/context.el
@@ -1586,7 +1586,7 @@ else. There might be text before point."
(format "--interface=%s " ConTeXt-current-interface))
(when TeX-source-correlate-mode
(format "--passon=\"%s\" "
- (if (eq TeX-source-correlate-method-active 'synctex)
+ (if (eq (TeX-source-correlate-method-active) 'synctex)
TeX-synctex-tex-flags
TeX-source-specials-tex-flags)))
(unless TeX-interactive-mode
diff --git a/tex.el b/tex.el
index 89b7437..babd3f8 100644
--- a/tex.el
+++ b/tex.el
@@ -418,15 +418,15 @@ string."
;; to handle .ps files.
(defcustom TeX-expand-list
- '(("%p" TeX-printer-query) ;%p must be the first entry
+ '(("%p" TeX-printer-query) ;%p must be the first entry
("%q" (lambda ()
(TeX-printer-query t)))
("%V" (lambda ()
(TeX-source-correlate-start-server-maybe)
(TeX-view-command-raw)))
("%vv" (lambda ()
- (TeX-source-correlate-start-server-maybe)
- (TeX-output-style-check TeX-output-view-style)))
+ (TeX-source-correlate-start-server-maybe)
+ (TeX-output-style-check TeX-output-view-style)))
("%v" (lambda ()
(TeX-source-correlate-start-server-maybe)
(TeX-style-check TeX-view-style)))
@@ -465,8 +465,16 @@ string."
("%dS" TeX-source-specials-view-expand-options)
("%cS" TeX-source-specials-view-expand-client)
("%(outpage)" (lambda ()
- (or (when TeX-source-correlate-output-page-function
- (funcall TeX-source-correlate-output-page-function))
+ ;; When `TeX-source-correlate-output-page-function' is nil
+ ;; and we are using synctex, fallback on
+ ;; `TeX-synctex-output-page'.
+ (and TeX-source-correlate-mode
+ (null TeX-source-correlate-output-page-function)
+ (eq (TeX-source-correlate-method-active) 'synctex)
+ (setq TeX-source-correlate-output-page-function
+ 'TeX-synctex-output-page))
+ (or (if TeX-source-correlate-output-page-function
+ (funcall TeX-source-correlate-output-page-function))
"1")))
;; `file' means to call `TeX-master-file' or `TeX-region-file'
("%s" file nil t)
@@ -502,7 +510,7 @@ string."
(setq pos (+ (length TeX-command-text) 9)
TeX-command-pos
(and (string-match " "
- (funcall file t t))
+ (funcall file t t))
"\""))
(concat TeX-command-text " \"\\input\""))
(setq TeX-command-pos nil)
@@ -1402,18 +1410,35 @@ For available TYPEs, see variable `TeX-engine'."
(defcustom TeX-source-correlate-method 'auto
"Method to use for enabling forward and inverse search.
This can be `source-specials' if source specials should be used,
-`synctex' if SyncTeX should be used, or`auto' if AUCTeX should
+`synctex' if SyncTeX should be used, or `auto' if AUCTeX should
decide.
-Setting this variable does not take effect if TeX Source
-Correlate mode has already been active. Restart Emacs in this
-case."
- :type '(choice (const auto) (const synctex) (const source-specials))
+The previous values determine the variable for both DVI and PDF
+mode. This variable can also be an alist of the kind
+
+ ((dvi . <source-specials or synctex>)
+ (pdf . <source-specials or synctex>))
+
+in which the CDR of each entry is a symbol specifying the method
+to be used in the corresponding mode.
+
+Programs should not use this variable directly but the function
+`TeX-source-correlate-method-active' which returns the method
+actually used for forward and inverse search."
+ :type '(choice (const auto)
+ (const synctex)
+ (const source-specials)
+ (list :tag "Different method for DVI and PDF"
+ (cons (const dvi)
+ (choice :tag "Method for DVI mode"
+ (const synctex)
+ (const source-specials)))
+ (cons (const pdf)
+ (choice :tag "Method for PDF mode"
+ (const synctex)
+ (const source-specials)))))
:group 'TeX-view)
-(defvar TeX-source-correlate-method-active nil
- "Method actually used for forward and inverse search.")
-
(defvar TeX-source-correlate-output-page-function nil
"Symbol of function returning an output page relating to buffer position.
The function should take no arguments and return the page numer
@@ -1486,12 +1511,24 @@ This is the case if
`TeX-source-correlate-start-server-flag' is non-nil."
'synctex
'source-specials)))
+(defun TeX-source-correlate-method-active ()
+ "Return the method actually used for forward and inverse search."
+ (cond
+ ((eq TeX-source-correlate-method 'auto)
+ (TeX-source-correlate-determine-method))
+ ((listp TeX-source-correlate-method)
+ (if TeX-PDF-mode
+ (cdr (assoc 'pdf TeX-source-correlate-method))
+ (cdr (assoc 'dvi TeX-source-correlate-method))))
+ (t
+ TeX-source-correlate-method)))
+
(defun TeX-source-correlate-expand-options ()
"Return TeX engine command line option for forward search facilities.
The return value depends on the value of `TeX-source-correlate-mode'.
If this is nil, an empty string will be returned."
(if TeX-source-correlate-mode
- (if (eq TeX-source-correlate-method-active 'source-specials)
+ (if (eq (TeX-source-correlate-method-active) 'source-specials)
(concat TeX-source-specials-tex-flags
(if TeX-source-specials-places
;; -src-specials=WHERE: insert source specials
@@ -1570,16 +1607,8 @@ SyncTeX are recognized."
(dbus-register-signal
:session nil "/org/gnome/evince/Window/0"
"org.gnome.evince.Window" "SyncSource"
- 'TeX-source-correlate-sync-source))
- (unless TeX-source-correlate-method-active
- (setq TeX-source-correlate-method-active
- (if (eq TeX-source-correlate-method 'auto)
- (TeX-source-correlate-determine-method)
- TeX-source-correlate-method)))
- (when (eq TeX-source-correlate-method-active 'synctex)
- (setq TeX-source-correlate-output-page-function
- (when TeX-source-correlate-mode
- 'TeX-synctex-output-page))))
+ 'TeX-source-correlate-sync-source)))
+
(defalias 'TeX-source-specials-mode 'TeX-source-correlate-mode)
(make-obsolete 'TeX-source-specials-mode 'TeX-source-correlate-mode "11.86")
(defalias 'tex-source-correlate-mode 'TeX-source-correlate-mode)
@@ -1667,7 +1696,7 @@ The return value depends on the values of
`source-specials' respectively, an empty string will be
returned."
(if (and TeX-source-correlate-mode
- (eq TeX-source-correlate-method-active 'source-specials))
+ (eq (TeX-source-correlate-method-active) 'source-specials))
(concat TeX-source-specials-view-position-flags
(when (TeX-source-correlate-server-enabled-p)
(concat " " TeX-source-specials-view-editor-flags)))
_______________________________________________
auctex-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/auctex-devel