mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-05 11:45:45 +00:00
(compilation-gcpro): New var
(compilation-fake-loc): Use it. (compilation-forget-errors): Reset it.
This commit is contained in:
parent
55f2eb7e34
commit
e3bef839dd
@ -1457,6 +1457,10 @@ Use this command in a compilation log buffer. Sets the mark at point there."
|
||||
(compilation-goto-locus marker (nth 3 loc) (nth 3 end-loc))
|
||||
(setcdr (nthcdr 3 loc) t))) ; Set this one as visited.
|
||||
|
||||
(defvar compilation-gcpro nil
|
||||
"Internal variable used to keep some values from being GC'd.")
|
||||
(make-variable-buffer-local 'compilation-gcpro)
|
||||
|
||||
(defun compilation-fake-loc (marker file &optional line col)
|
||||
"Preassociate MARKER with FILE.
|
||||
FILE should be ABSOLUTE-FILENAME or (RELATIVE-FILENAME . DIRNAME).
|
||||
@ -1476,6 +1480,11 @@ call this several times, once each for the last line of one
|
||||
region and the first line of the next region."
|
||||
(or (consp file) (setq file (list file)))
|
||||
(setq file (compilation-get-file-structure file))
|
||||
;; Between the current call to compilation-fake-loc and the first occurrence
|
||||
;; of an error message referring to `file', the data is only kept is the
|
||||
;; weak hash-table compilation-locs, so we need to prevent this entry
|
||||
;; in compilation-locs from being GC'd away. --Stef
|
||||
(push file compilation-gcpro)
|
||||
(let ((loc (compilation-assq (or line 1) (cdr file))))
|
||||
(setq loc (compilation-assq col loc))
|
||||
(if (cdr loc)
|
||||
@ -1730,6 +1739,7 @@ FILE should be (ABSOLUTE-FILENAME) or (RELATIVE-FILENAME . DIRNAME)."
|
||||
;; In case we hit the same file/line specs, we want to recompute a new
|
||||
;; marker for them, so flush our cache.
|
||||
(setq compilation-locs (make-hash-table :test 'equal :weakness 'value))
|
||||
(setq compilation-gcpro nil)
|
||||
;; FIXME: the old code reset the directory-stack, so maybe we should
|
||||
;; put a `directory change' marker of some sort, but where? -stef
|
||||
;;
|
||||
|
Loading…
Reference in New Issue
Block a user