emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 459a234 2/7: Show watchpoints when describing varia


From: Noam Postavsky
Subject: [Emacs-diffs] master 459a234 2/7: Show watchpoints when describing variables
Date: Sat, 3 Dec 2016 01:45:05 +0000 (UTC)

branch: master
commit 459a23444e321d25f0b82bede76947576f01ecc3
Author: Noam Postavsky <address@hidden>
Commit: Noam Postavsky <address@hidden>

    Show watchpoints when describing variables
    
    * src/data.c (Fget_variable_watchers): New function.
    * lisp/help-fns.el (describe-variable): Use it to detect watching
    functions.
---
 lisp/help-fns.el |    7 +++++++
 src/data.c       |   11 +++++++++++
 2 files changed, 18 insertions(+)

diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 87e7d8f..23dec89 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -918,6 +918,7 @@ it is displayed along with the global value."
                               (indirect-variable variable)
                             (error variable)))
                    (obsolete (get variable 'byte-obsolete-variable))
+                   (watchpoints (get-variable-watchers variable))
                   (use (car obsolete))
                   (safe-var (get variable 'safe-local-variable))
                    (doc (or (documentation-property
@@ -967,6 +968,12 @@ if it is given a local binding.\n"))))
                             (t ".")))
                 (terpri))
 
+              (when watchpoints
+                (setq extra-line t)
+                (princ "  Calls these functions when changed: ")
+                (princ watchpoints)
+                (terpri))
+
              (when (member (cons variable val)
                             (with-current-buffer buffer
                               file-local-variables-alist))
diff --git a/src/data.c b/src/data.c
index 07730d0..095b740 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1463,6 +1463,16 @@ SYMBOL (or its aliases) are set.  */)
   return Qnil;
 }
 
+DEFUN ("get-variable-watchers", Fget_variable_watchers, Sget_variable_watchers,
+       1, 1, 0,
+       doc: /* Return a list of SYMBOL's active watchers.  */)
+  (Lisp_Object symbol)
+{
+  return (SYMBOL_TRAPPED_WRITE_P (symbol) == SYMBOL_TRAPPED_WRITE)
+    ? Fget (Findirect_variable (symbol), Qwatchers)
+    : Qnil;
+}
+
 void
 notify_variable_watchers (Lisp_Object symbol,
                           Lisp_Object newval,
@@ -3874,4 +3884,5 @@ syms_of_data (void)
   DEFSYM (Qset_default, "set-default");
   defsubr (&Sadd_variable_watcher);
   defsubr (&Sremove_variable_watcher);
+  defsubr (&Sget_variable_watchers);
 }



reply via email to

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