diff --git a/ChangeLog b/ChangeLog
index 7a52e8e..d483bd5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2013-07-06  Mosè Giordano  <giordano.mose@libero.it>
+
+	* tex.el (TeX-expand-list): In "%(outpage)" expander, set
+	`TeX-source-correlate-output-page-function' when it is nil.
+	(TeX-source-correlate-method-active): Convert from variable to
+	function.
+	(TeX-source-correlate-method): Update doc-string accordingly.
+	(TeX-source-correlate-determine-method): Better way to determine
+	forward and inverse search method.
+	(TeX-source-correlate-mode): Move setting of
+	`TeX-source-correlate-output-page-function' into "%(outpage)"
+	expander; move setting of old `TeX-source-correlate-method-active'
+	variable into definition of new function with the same name.
+	(TeX-source-specials-view-expand-options): Use
+	`TeX-source-correlate-method-active' function.
+
 2013-06-29  Mosè Giordano  <giordano.mose@libero.it>
 
 	* bib-cite.el: Replace `save-excursion'+`set-buffer' with
diff --git a/context.el b/context.el
index 3a2622b..53cce9b 100644
--- a/context.el
+++ b/context.el
@@ -1490,7 +1490,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 7e717b7..2f7ea3e 100644
--- a/tex.el
+++ b/tex.el
@@ -459,8 +459,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)
@@ -1387,14 +1395,17 @@ This can be `source-specials' if source specials should be used,
 `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."
+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))
   :group 'TeX-view)
 
-(defvar TeX-source-correlate-method-active nil
-  "Method actually used for forward and inverse search.")
+(defun TeX-source-correlate-method-active ()
+  "Method actually used for forward and inverse search."
+  (if (eq TeX-source-correlate-method 'auto)
+      (TeX-source-correlate-determine-method)
+    TeX-source-correlate-method))
 
 (defvar TeX-source-correlate-output-page-function nil
   "Symbol of function returning an output page relating to buffer position.
@@ -1458,22 +1469,20 @@ This is the case if `TeX-source-correlate-start-server-flag' is non-nil."
 	(funcall start))))))
 
 (defun TeX-source-correlate-determine-method ()
-  "Determine which method is available for forward and inverse search."
-  (let ((help (condition-case nil
-		  (with-output-to-string
-		    (call-process LaTeX-command
-				  nil (list standard-output nil) nil "--help"))
-		(error ""))))
-    (if (string-match "^[ ]*-?-synctex" help)
-	'synctex
-      'source-specials)))
+  "Determine which method is available for forward and inverse search.
+
+If `TeX-PDF-mode' is non-nil return `synctex', `source-specials'
+otherwise."
+  (if TeX-PDF-mode
+      'synctex
+    'source-specials))
 
 (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
@@ -1552,16 +1561,7 @@ 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)
 (defalias 'tex-source-correlate-mode 'TeX-source-correlate-mode)
@@ -1649,7 +1649,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)))
