emacs-devel
[Top][All Lists]
Advanced

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

Re: [Emacs-diffs] master f3c77d1 2/2: stash


From: Stefan Monnier
Subject: Re: [Emacs-diffs] master f3c77d1 2/2: stash
Date: Tue, 31 Jan 2017 08:56:30 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux)

Hmm?  Did you really mean to commit this?
If so, there's a problem with the commit message,


        Stefan


>>>>> "Dima" == Dima Kogan <address@hidden> writes:

> branch: master
> commit f3c77d11af65f3b319b1784b4c3cf08c51aa7997
> Author: Dima Kogan <address@hidden>
> Commit: Dima Kogan <address@hidden>

>     stash
> ---
>  lisp/comint.el           |    6 +++++-
>  lisp/emacs-lisp/debug.el |   54 
> ++++++++++++++++++++++++++++++++++++++++++++++
>  lisp/shell.el            |    2 ++
>  src/data.c               |   50 ++++++++++++++++++++++++++++++++++++++++++
>  src/fns.c                |    4 ++++
>  5 files changed, 115 insertions(+), 1 deletion(-)

> diff --git a/lisp/comint.el b/lisp/comint.el
> index b23f72e..c82c3d0 100644
> --- a/lisp/comint.el
> +++ b/lisp/comint.el
> @@ -1879,6 +1879,7 @@ Similarly for Soar, Scheme, etc."
>            (let ((echo-len (- comint-last-input-end
>                               comint-last-input-start)))
>              ;; Wait for all input to be echoed:
> +            
>              (while (and (> (+ comint-last-input-end echo-len)
>                             (point-max))
>                          (accept-process-output proc)
> @@ -1890,6 +1891,7 @@ Similarly for Soar, Scheme, etc."
>                            ;; (+ comint-last-input-start
>                            ;;    (- (point-max) comint-last-input-end))
>                            nil comint-last-input-end (point-max)))))
> +            
>              (if (and
>                   (<= (+ comint-last-input-end echo-len)
>                       (point-max))
> @@ -1901,6 +1903,7 @@ Similarly for Soar, Scheme, etc."
>                  ;; Certain parts of the text to be deleted may have
>                  ;; been mistaken for prompts.  We have to prevent
>                  ;; problems when `comint-prompt-read-only' is non-nil.
> +                
>                  (let ((inhibit-read-only t))
>                    (delete-region comint-last-input-end
>                                   (+ comint-last-input-end echo-len))
> @@ -1909,6 +1912,7 @@ Similarly for Soar, Scheme, etc."
>                        (goto-char comint-last-input-end)
>                        (comint-update-fence)))))))
 
> +        
>          ;; This used to call comint-output-filter-functions,
>          ;; but that scrolled the buffer in undesirable ways.
>          (run-hook-with-args 'comint-output-filter-functions "")))))
> @@ -2666,7 +2670,7 @@ This command is like `M-.' in bash."
>    (set-marker comint-insert-previous-argument-last-start-pos (point))
>    ;; Insert the argument.
>    (let ((input-string (comint-previous-input-string 0)))
> -    (when (string-match "[ \t\n]*&" input-string)
> +    (when (string-match "[ \t\n]*&[ \t\n]*$" input-string)
>        ;; strip terminating '&'
>        (setq input-string (substring input-string 0 (match-beginning 0))))
>      (insert (comint-arguments input-string index index)))
> diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
> index cb77148..faa323f 100644
> --- a/lisp/emacs-lisp/debug.el
> +++ b/lisp/emacs-lisp/debug.el
> @@ -816,6 +816,60 @@ Redefining FUNCTION also cancels it."
>                '((depth . -100)))
>    function)
 
> +;;;###autoload
> +;; (defun debug-on-set (symbol)
> +;;   "Request FUNCTION to invoke debugger each time it is called.
> +
> +;; When called interactively, prompt for FUNCTION in the minibuffer.
> +
> +;; This works by modifying the definition of FUNCTION.  If you tell the
> +;; debugger to continue, FUNCTION's execution proceeds.  If FUNCTION is a
> +;; normal function or a macro written in Lisp, you can also step through
> +;; its execution.  FUNCTION can also be a primitive that is not a special
> +;; form, in which case stepping is not possible.  Break-on-entry for
> +;; primitive functions only works when that function is called from Lisp.
> +
> +;; Use \\[cancel-debug-on-entry] to cancel the effect of this command.
> +;; Redefining FUNCTION also cancels it."
> +;;   (interactive
> +;;    (let ((v (variable-at-point))
> +;;    (enable-recursive-minibuffers t)
> +;;          (orig-buffer (current-buffer))
> +;;    val)
> +;;      (setq val (completing-read
> +;;                 (if (symbolp v)
> +;;                     (format
> +;;                      "Debug on set to symbol (default %s): " v)
> +;;                   "Debug on set to symbol: ")
> +;;                 #'help--symbol-completion-table
> +;;                 (lambda (vv)
> +;;                   ;; In case the variable only exists in the buffer
> +;;                   ;; the command we switch back to that buffer before
> +;;                   ;; we examine the variable.
> +;;                   (with-current-buffer orig-buffer
> +;;                     (or (get vv 'variable-documentation)
> +;;                         (and (boundp vv) (not (keywordp vv))))))
> +;;                 t nil nil
> +;;                 (if (symbolp v) (symbol-name v))))
> +;;      (list (if (equal val "")
> +;;          v (intern val)))))
> +
> +
> +
> +;;   (interactive
> +;;    (let* ((var-default (variable-at-point))
> +;;           (var (completing-read
> +;;           (if var-default
> +;;               (format "Debug on set to symbol (default %s): " var-default)
> +;;             "Debug on set to symbol: ")
> +;;           nil
> +;;           #'boundp
> +;;           t nil nil (symbol-name var-default))))
> +;;      (list (if (equal var "") var-default (intern var)))))
> +;;   (advice-add function :before #'debug--implement-debug-on-entry
> +;;               '((depth . -100)))
> +;;   function)
> +
>  (defun debug--function-list ()
>    "List of functions currently set for debug on entry."
>    (let ((funs '()))
> diff --git a/lisp/shell.el b/lisp/shell.el
> index c8a8555..c7ba64e 100644
> --- a/lisp/shell.el
> +++ b/lisp/shell.el
> @@ -1000,6 +1000,8 @@ command again."
>        (let ((pt (point))
>           (regexp
>            (concat
> +              ;; comint-process-echoes is the thing that breaks the
> +              ;; throbber
>             (if comint-process-echoes
>                 ;; Skip command echo if the process echoes
>                 (concat "\\(" (regexp-quote shell-dirstack-query) "\n\\)")
> diff --git a/src/data.c b/src/data.c
> index 8e07bf0..26ff994 100644
> --- a/src/data.c
> +++ b/src/data.c
> @@ -1304,6 +1304,56 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, 
> Lisp_Object where,
>      default: emacs_abort ();
>      }
 
> +
> +  const char* symname = SDATA(sym->name);
> +
> +  if( EQ(Vwatch_object, symbol) )
> +  {
> +      static int nest_level = 0;
> +      if(nest_level++ == 0)
> +      {
> +          switch(sym->redirect)
> +          {
> +          case SYMBOL_PLAINVAL:
> +              {
> +                  AUTO_STRING (format, "Setting symbol '%s'; redirect: 
> SYMBOL_PLAINVAL");
> +                  CALLN (Fmessage, format, SYMBOL_NAME (symbol));
> +                  break;
> +              }
> +          case SYMBOL_VARALIAS:
> +              {
> +                  AUTO_STRING (format, "Setting symbol '%s'; redirect: 
> SYMBOL_VARALIAS");
> +                  CALLN (Fmessage, format, SYMBOL_NAME (symbol));
> +                  break;
> +              }
> +          case SYMBOL_LOCALIZED:
> +              {
> +                  AUTO_STRING (format, "Setting symbol '%s'; redirect: 
> SYMBOL_LOCALIZED");
> +                  CALLN (Fmessage, format, SYMBOL_NAME (symbol));
> +                  break;
> +              }
> +          case SYMBOL_FORWARDED:
> +              {
> +                  AUTO_STRING (format, "Setting symbol '%s'; redirect: 
> SYMBOL_FORWARDED");
> +                  CALLN (Fmessage, format, SYMBOL_NAME (symbol));
> +                  break;
> +              }
> +
> +          default:
> +              {
> +                  AUTO_STRING (format, "Setting symbol '%s'; redirect: 
> UNKNOWN");
> +                  CALLN (Fmessage, format, SYMBOL_NAME (symbol));
> +                  break;
> +              }
> +          }
> +      }
> +      nest_level--;
> +  }
> +
> +
> +
> +
> +
>   start:
>    switch (sym->redirect)
>      {
> diff --git a/src/fns.c b/src/fns.c
> index 136a219..9eabc14 100644
> --- a/src/fns.c
> +++ b/src/fns.c
> @@ -5120,6 +5120,10 @@ On some platforms, file selection dialogs are also 
> enabled if this is
>  non-nil.  */);
>    use_dialog_box = 1;
 
> +  DEFVAR_LISP("watch-object", Vwatch_object,
> +            doc: /* Symbol to watch.  */);
> +  Vwatch_object = Qnil;
> +
>    DEFVAR_BOOL ("use-file-dialog", use_file_dialog,
>      doc: /* Non-nil means mouse commands use a file dialog to ask for files.
>  This applies to commands from menus and tool bar buttons even when

> _______________________________________________
> Emacs-diffs mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/emacs-diffs



reply via email to

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