branch: externals/ggtags commit 8e16861392d7499bf3a212db1f5e9e0ef2e4fba9 Author: Leo Liu <sdl....@gmail.com> Commit: Leo Liu <sdl....@gmail.com>
Fix #214: unbreak xref support on Emacs <= 27 --- ggtags.el | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/ggtags.el b/ggtags.el index 85e6fd30f6..3e9e9bc2f2 100644 --- a/ggtags.el +++ b/ggtags.el @@ -2371,11 +2371,23 @@ Function `ggtags-eldoc-function' disabled for eldoc in current buffer: %S" err)) (cl-defstruct (ggtags-xref-location (:constructor ggtags-make-xref-location (file line column project-root))) - file project-root) + file line column project-root) (cl-defmethod xref-location-group ((l ggtags-xref-location)) (file-relative-name (ggtags-xref-location-file l) (ggtags-xref-location-project-root l))) +(cl-defmethod xref-location-marker ((l ggtags-xref-location)) + (let ((buffer (find-file-noselect (ggtags-xref-location-file l)))) + (with-current-buffer buffer + (save-excursion + (goto-char (point-min)) + (forward-line (1- (ggtags-xref-location-line l))) + (move-to-column (1- (ggtags-xref-location-column l))) + (point-marker))))) + +(cl-defmethod xref-location-line ((l ggtags-xref-location)) + (ggtags-xref-location-line l)) + (defun ggtags--xref-backend () (and (ggtags-find-project) (let ((tag (ggtags-tag-at-point)))