• Dmitry Gutov's avatar
    xref: Keep track of temporary buffers · 956b13c5
    Dmitry Gutov authored
    Fixes: debbugs:19466
    
    xref: Keep track of temporary buffers.
    * lisp/progmodes/xref.el (xref--temporary-buffers, xref--selected)
    (xref--inhibit-mark-selected): New variables.
    (xref--mark-selected): New function.
    (xref--show-location): Maybe add the buffer to
    `xref--temporary-buffers', add `xref--mark-selected' to
    `buffer-list-update-hook' there.
    (xref--window): Add docstring.
    (xref-quit): Rename from `xref--quit'.  Update both references.
    Add KILL argument.  When it's non-nil, kill the temporary buffers
    that haven't been selected by the user.
    (xref--show-xref-buffer): Change the second argument to alist,
    extract the values for `xref--window' and
    `xref--temporary-buffers' from it.  Add `xref--mark-selected' to
    `buffer-list-update-hook' to each buffer in the list.
    (xref--show-xrefs): Move the logic of calling `xref-find-function'
    here.  Save the difference between buffer lists before and after
    it's called as "temporary buffers", and `pass it to
    `xref-show-xrefs-function'.
    (xref--find-definitions, xref-find-references)
    (xref-find-apropos): Update accordingly.
    956b13c5
ChangeLog 875 KB