Reinstate the old debug behaviour for yas-tryout-snippet

During a redesign of the debug facilities, the old shortcut C-u C-t
available and useful in snippet-mode, was lost.

* yasnippet-debug.el (yas-debug-snippets): Add docstring.
Add post-command-hook locally if HOOK is snippet-navigation.
Concisely describe parent field (not just mention it).

* yasnippet.el (yas-tryout-snippet): Call yas-debug-snippets and display
buffer.  Tweak docstring.
(yas-debug-snippets): Forward declare function defined in
yasnippet-debug.el
This commit is contained in:
João Távora 2018-01-23 16:42:13 +00:00
parent ff26e3ba7f
commit 8b421bc78d
2 changed files with 23 additions and 7 deletions

View File

@ -193,7 +193,11 @@
(yas-debug-live-range field) (yas-debug-live-range field)
(buffer-substring-no-properties (yas--field-start field) (yas--field-end field)) (buffer-substring-no-properties (yas--field-start field) (yas--field-end field))
(yas--debug-format-fom-concise (yas--field-next field)) (yas--debug-format-fom-concise (yas--field-next field))
(if (yas--field-parent-field field) "(has a parent)" ""))) (if (yas--field-parent-field field)
(format " parent: %s"
(yas--debug-format-fom-concise
(yas--field-parent-field field)))
"")))
(dolist (mirror (yas--field-mirrors field)) (dolist (mirror (yas--field-mirrors field))
(unless (consp (yas--mirror-start mirror)) (unless (consp (yas--mirror-start mirror))
(printf "\t\tmirror: %s covering \"%s\" next: %s\n" (printf "\t\tmirror: %s covering \"%s\" next: %s\n"
@ -224,6 +228,14 @@
(clrhash yas-debug-live-indicators)) (clrhash yas-debug-live-indicators))
(defun yas-debug-snippets (&optional outbuf hook) (defun yas-debug-snippets (&optional outbuf hook)
"Print debug information on active snippets to buffer OUTBUF.
If OUTBUF is nil, use a buffer named \"*YASsnippet trace*\".
If HOOK is non-nil, install `yas-debug-snippets' in
`post-command-hook' to update the information on every command
after this one. If it is `snippet-navigation' then install hook
buffer-locally, otherwise install it globally. If HOOK is
`edebug-create', also instrument the function
`yas--snippet-parse-create' with `edebug' and show its source."
(interactive (list nil t)) (interactive (list nil t))
(condition-case err (condition-case err
(yas-debug-with-tracebuf outbuf (yas-debug-with-tracebuf outbuf
@ -253,11 +265,12 @@
(ad-activate 'yas--snippet-parse-create) (ad-activate 'yas--snippet-parse-create)
(ad-enable-advice 'yas--commit-snippet 'after 'yas-debug-untarget-snippet) (ad-enable-advice 'yas--commit-snippet 'after 'yas-debug-untarget-snippet)
(ad-activate 'yas--commit-snippet) (ad-activate 'yas--commit-snippet)
(add-hook 'post-command-hook #'yas-debug-snippets) (add-hook 'post-command-hook #'yas-debug-snippets
nil (eq hook 'snippet-navigation))
;; Window management is slapped together, it does what I ;; Window management is slapped together, it does what I
;; want when the caller has a single window open. Good ;; want when the caller has a single window open. Good
;; enough for now. ;; enough for now.
(when (eq hook 'create) (when (eq hook 'edebug-create)
(edebug-instrument-function 'yas--snippet-parse-create) (edebug-instrument-function 'yas--snippet-parse-create)
(let ((buf-point (find-function-noselect 'yas--snippet-parse-create))) (let ((buf-point (find-function-noselect 'yas--snippet-parse-create)))
(with-current-buffer (car buf-point) (with-current-buffer (car buf-point)

View File

@ -2705,8 +2705,11 @@ and `kill-buffer' instead."
(save-buffer))) (save-buffer)))
(quit-window kill))) (quit-window kill)))
(declare-function yas-debug-snippets "yasnippet-debug")
(defun yas-tryout-snippet (&optional debug) (defun yas-tryout-snippet (&optional debug)
"Test current buffer's snippet template in other buffer." "Test current buffer's snippet template in other buffer.
DEBUG is for debugging the YASnippet engine itself."
(interactive "P") (interactive "P")
(let* ((major-mode-and-parent (yas--compute-major-mode-and-parents buffer-file-name)) (let* ((major-mode-and-parent (yas--compute-major-mode-and-parents buffer-file-name))
(parsed (yas--parse-template)) (parsed (yas--parse-template))
@ -2736,9 +2739,9 @@ and `kill-buffer' instead."
(point-max) (point-max)
(yas--template-expand-env yas--current-template)) (yas--template-expand-env yas--current-template))
(when (and debug (when (and debug
(require 'yasnippet-debug nil t) (require 'yasnippet-debug nil t))
(fboundp 'yas-debug-snippet-vars)) (yas-debug-snippets "*YASnippet trace*" 'snippet-navigation)
(add-hook 'post-command-hook #'yas-debug-snippet-vars nil t)))) (display-buffer "*YASnippet trace*"))))
(t (t
(yas--message 1 "Cannot test snippet for unknown major mode"))))) (yas--message 1 "Cannot test snippet for unknown major mode")))))