emacs-pretest-bug
[Top][All Lists]
Advanced

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

Re: fringe arrow conflict between compile and gud?


From: Nick Roberts
Subject: Re: fringe arrow conflict between compile and gud?
Date: Tue, 29 Mar 2005 23:24:35 +1200

 > > Kim Storm created a variable overlay-arrow-variable-list to allow
 > > multiple overlay arrows (see info). I have used this for buffers
 > > displaying assembler in gdb-ui.el (gdb-overlay-arrow-position).
 > 
 > I tried to use overlay-arrow-variable-list, but can't display more
 > than one fringe arrow in one buffer.  I tried the code below:

I don't use more than one arrow per buffer.  However, I do think compile
should use overlay-arrow-variable-list instead of making
overlay-arrow-position a local variable. I now can reproduce the conflict that
Juan-Leon reports. GUD and Compile are operating on the same source buffer and
the local variable masks the global one when set in gud-display-line. The
global value is used to set window-point and this remains unchanged (from
nil):

(defun gud-display-line (true-file line)
...
> ***buffer = source buffer***
(with-current-buffer buffer
  (unless (or (verify-visited-file-modtime buffer) gud-keep-buffer)
          (if (yes-or-no-p
               (format "File %s changed on disk.  Reread from disk? "
                       (buffer-name)))
              (revert-buffer t t)
            (setq gud-keep-buffer t)))
  (save-restriction
    (widen)
    (goto-line line)
    (setq pos (point))
    (setq overlay-arrow-string "=>")
    (or overlay-arrow-position
          (setq overlay-arrow-position (make-marker)))
    (set-marker overlay-arrow-position (point) (current-buffer)))
  (cond ((or (< pos (point-min)) (> pos (point-max)))
           (widen)
           (goto-char pos))))
> ***current buffer = GUD buffer***
(if window (set-window-point window overlay-arrow-position))))))

The reason that Kim hasn't seen the same problem when using Gnus and GUD
at the same time is probably because they don't share the same buffers.


Nick




reply via email to

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