auctex
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [AUCTeX] inverse search when comipling only part of the document


From: Jonas Frey
Subject: Re: [AUCTeX] inverse search when comipling only part of the document
Date: Mon, 29 Aug 2011 15:08:27 +0200

ok, now it works. thanks!

On Fri, Aug 19, 2011 at 10:47 AM, Ivan Andrus <address@hidden> wrote:
On Aug 18, 2011, at 1:57 PM, Jonas Frey wrote:

> Thanks a lot for your answer -- it almost works!
>
> I copied the definition that you gave to my .emacs, and now when inverse searching, the cursor jumps to the right line in both files (source file and region file), but it still activates the buffer with the region file.
>
> How can I have the source file active after inverse search?

Oops.  That's because I put too much in the (save-excursion ...)  Here is a version that doesn't do that.  Testing it today I was also having a problem of being off by 3 lines (that's the offset), so I made a change that fixed it for me.  If that fix screws things up for you then you can delete the `(forward-line offset)` portion.

You could also add some code to delete the _region_.tex buffer, but I didn't think it was worth it since you're probably going to reopen it again soon anyway.

-Ivan

(defadvice server-goto-line-column (after server-visit-region.tex
                                         (line-col)
                                         activate)
 "When visiting _region_.tex from an external
source (e.g. inverse search), go to the original file so that any
changes made won't be lost."
 (when (string-match "_region_.tex\\'" (buffer-file-name))
   (if (save-excursion ;; in case we don't find the other file we at least want the right line...
         (re-search-backward
          "\message{ !name(\\([^)]+\\))\\(?: !offset(\\([-0-9]+\\))\\)?\\s *}" nil nil))
       (let ((file-name (match-string 1))
             (offset (match-string 2))
             (line (car (ad-get-arg 0)))
             (col (cdr (ad-get-arg 0))))
         (if offset (setq line (+ line (string-to-number offset))))
         (find-file file-name nil)
         ;; For some reason this doesn't actually go to the offset
         ;; line.  It's probably because of how advice works.
         (server-goto-line-column (cons line col))
         (message "Moved from _region_.tex to line %s of %s." line file-name)
         (forward-line offset))

     ;; else
     (message "This is _region_.tex, but I couldn't find the original file!"))))


reply via email to

[Prev in Thread] Current Thread [Next in Thread]