From ec3e24819c5e2ec2df1f51bd3cb70ac4e598b9d6 Mon Sep 17 00:00:00 2001 From: Allen Li Date: Wed, 24 Oct 2018 20:48:15 -0600 Subject: [PATCH 2/2] Add setter for xref-marker-ring-length * etc/NEWS: Document change * lisp/progmodes/xref.el (xref-marker-ring-length): Add setter --- etc/NEWS | 7 +++++++ lisp/progmodes/xref.el | 16 ++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index c67b13205c..f9a9fa6afc 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -113,6 +113,13 @@ option 'vc-hg-symbolic-revision-styles' to the value '("{rev}")'. --- ** shadowfile.el has been rewritten to support Tramp file names. +** xref + ++++ +*** Setter added for 'xref-marker-ring-length'. +Previously, setting 'xref-marker-ring-length' would only take effect +if set before `xref.el` was loaded. + * New Modes and Packages in Emacs 26.2 diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index abb2a93425..eaa4014145 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -317,8 +317,12 @@ xref--search-property ;;; Marker stack (M-. pushes, M-, pops) (defcustom xref-marker-ring-length 16 - "Length of the xref marker ring." - :type 'integer) + "Length of the xref marker ring. +If this variable is not set through Customize, you must call +‘xref-set-marker-ring-length’ for changes to take effect." + :type 'integer + :initialize #'custom-initialize-default + :set #'xref-set-marker-ring-length) (defcustom xref-prompt-for-identifier '(not xref-find-definitions xref-find-definitions-other-window @@ -354,6 +358,14 @@ xref-after-return-hook (defvar xref--marker-ring (make-ring xref-marker-ring-length) "Ring of markers to implement the marker stack.") +(defun xref-set-marker-ring-length (var val) + "Set ‘xref-marker-ring-length’. +VAR is the symbol ‘xref-marker-ring-length’ and VAL is the new +value." + (set-default var val) + (if (ring-p xref--marker-ring) + (ring-resize xref--marker-ring val))) + (defun xref-push-marker-stack (&optional m) "Add point M (defaults to `point-marker') to the marker stack." (ring-insert xref--marker-ring (or m (point-marker)))) -- 2.19.1.568.g152ad8e336-goog