unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] (CEDET development) Improve the bovinate output buffer
@ 2021-04-01 19:58 Fermin
  2021-04-01 22:02 ` Stefan Monnier
  0 siblings, 1 reply; 3+ messages in thread
From: Fermin @ 2021-04-01 19:58 UTC (permalink / raw)
  To: emacs-devel


[-- Attachment #1.1: Type: text/plain, Size: 830 bytes --]

There is an essential command when developing a new parser with bovine 
that is *bovinate*, this gives all the
buffer information about the tags and helps the developer understand 
what information is been change.

The idea of this patch is simple, provide a major mode for the bovinate 
buffer base on the emacs-lisp mode,
giving that there are a few similarities in the output, it also add more 
information in the buffer name, so
you can have different output buffers at the same time with different names.

The idea  in the future is to add more information in the bovinate 
buffer, so it can truly serve as a debugger
information buffer.

There is 2 patch attached, one of them is the change of the function and 
adding of the major mode, the other one
adds the display behavior, so it can also be automatically displayed.


[-- Attachment #1.2: Type: text/html, Size: 1134 bytes --]

[-- Attachment #2: 0001-Add-bovinate-mode-as-a-major-mode-and-improve-the-bo.patch --]
[-- Type: text/x-patch, Size: 2274 bytes --]

From f8c7ee1791ec6eee1993a9e5449112579e193415 Mon Sep 17 00:00:00 2001
From: Fermin <fmfs@posteo.net>
Date: Thu, 1 Apr 2021 21:31:56 +0200
Subject: [PATCH] Add bovinate-mode as a major mode and improve the bovinate
 command

---
 lisp/cedet/semantic.el | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index fb443fa4a3..421597fceb 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -335,25 +335,32 @@ Do not set this yourself.  Call `semantic-debug'.")
 Arguments START and END bound the time being calculated."
   (float-time (time-subtract end start)))
 
+(define-derived-mode bovinate-mode emacs-lisp-mode "Bovinate"
+  "Bovinate buffer major-mode, giving that the list is generated with
+`pp-to-string', the syntax is very similar to a list of Emacs Lisp.
+This major mode helps with the syntax highlight of some of the symbols.")
+
 (defun bovinate (&optional clear)
   "Parse the current buffer.  Show output in a temp buffer.
 Optional argument CLEAR will clear the cache before parsing.
 If CLEAR is negative, it will do a full reparse, and also display
 the output buffer."
   (interactive "P")
-  (if clear (semantic-clear-toplevel-cache))
-  (if (eq clear '-) (setq clear -1))
+  (when clear (semantic-clear-toplevel-cache))
   (let* ((start (current-time))
-	 (out (semantic-fetch-tags)))
-    (message "Retrieving tags took %.2f seconds."
-	     (semantic-elapsed-time start nil))
-    (when (or (null clear) (not (listp clear))
-	      (and (numberp clear) (< 0 clear)))
-      (pop-to-buffer "*Parser Output*")
-      (require 'pp)
+	 (tags (semantic-fetch-tags))
+         (time-elapse (semantic-elapsed-time start nil))
+         (bovinate-buffer
+          (format "*Parser Output from %s buffer*" (buffer-name))))
+    (message "Retrieving tags took %.2f seconds." time-elapse)
+    (unless (get-buffer bovinate-buffer)
+      (setq bovinate-buffer (get-buffer-create bovinate-buffer)))
+    (with-current-buffer bovinate-buffer
       (erase-buffer)
-      (insert (pp-to-string out))
+      (insert (pp-to-string tags))
+      (bovinate-mode)
       (goto-char (point-min)))))
+
 \f
 ;;; Functions of the parser plug-in API
 ;;
-- 
2.30.2


[-- Attachment #3: 0001-Add-display-as-a-optional-parameter-for-displaying-t.patch --]
[-- Type: text/x-patch, Size: 2148 bytes --]

From 1c1673283186780e6db007f79d4f8aa864660f79 Mon Sep 17 00:00:00 2001
From: Fermin <fmfs@posteo.net>
Date: Thu, 1 Apr 2021 21:53:16 +0200
Subject: [PATCH] Add display as a optional parameter for displaying the buffer

---
 lisp/cedet/semantic.el | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index 421597fceb..256b420688 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -337,21 +337,20 @@ Arguments START and END bound the time being calculated."
 
 (define-derived-mode bovinate-mode emacs-lisp-mode "Bovinate"
   "Bovinate buffer major-mode, giving that the list is generated with
-`pp-to-string', the syntax is very similar to a list of Emacs Lisp.
+`pp-to-string', the syntax is very similar to a list in Emacs Lisp.
 This major mode helps with the syntax highlight of some of the symbols.")
 
-(defun bovinate (&optional clear)
-  "Parse the current buffer.  Show output in a temp buffer.
+(defun bovinate (&optional clear display)
+  "Parse the current buffer.  Show output in a `bovinate-mode' buffer.
 Optional argument CLEAR will clear the cache before parsing.
-If CLEAR is negative, it will do a full reparse, and also display
-the output buffer."
+If non-nil DISPLAY will display the buffer `pop-to-buffer'."
   (interactive "P")
   (when clear (semantic-clear-toplevel-cache))
   (let* ((start (current-time))
 	 (tags (semantic-fetch-tags))
          (time-elapse (semantic-elapsed-time start nil))
          (bovinate-buffer
-          (format "*Parser Output from %s buffer*" (buffer-name))))
+          (format "*Parser Output from %s*" (buffer-name))))
     (message "Retrieving tags took %.2f seconds." time-elapse)
     (unless (get-buffer bovinate-buffer)
       (setq bovinate-buffer (get-buffer-create bovinate-buffer)))
@@ -359,7 +358,8 @@ the output buffer."
       (erase-buffer)
       (insert (pp-to-string tags))
       (bovinate-mode)
-      (goto-char (point-min)))))
+      (goto-char (point-min)))
+    (when display (pop-to-buffer bovinate-buffer))))
 
 \f
 ;;; Functions of the parser plug-in API
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-04-02 17:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-01 19:58 [PATCH] (CEDET development) Improve the bovinate output buffer Fermin
2021-04-01 22:02 ` Stefan Monnier
2021-04-02 17:19   ` Fermin

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).