[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/taxy fb11a4f 19/42: WIP: (cl-defstruct deffy-def)
From: |
ELPA Syncer |
Subject: |
[elpa] externals/taxy fb11a4f 19/42: WIP: (cl-defstruct deffy-def) |
Date: |
Wed, 15 Sep 2021 12:57:29 -0400 (EDT) |
branch: externals/taxy
commit fb11a4f0704680a9bc6cb919f701bfb80bfb5297
Author: Adam Porter <adam@alphapapa.net>
Commit: Adam Porter <adam@alphapapa.net>
WIP: (cl-defstruct deffy-def)
---
examples/deffy.el | 67 +++++++++++++++++++++++++++++--------------------------
1 file changed, 35 insertions(+), 32 deletions(-)
diff --git a/examples/deffy.el b/examples/deffy.el
index a30ba0d..03fb40e 100644
--- a/examples/deffy.el
+++ b/examples/deffy.el
@@ -28,6 +28,10 @@
(require 'taxy-magit-section)
+(cl-defstruct deffy-def
+ ;; Okay, the name of this struct is silly, but at least it's concise.
+ file pos form)
+
(defgroup deffy nil
"Show an overview of definitions in an Emacs Lisp project or buffer."
:group 'emacs-lisp-mode)
@@ -38,21 +42,21 @@
"FIXME: Docstring.")
(deffy-define-key file ()
- (file-relative-name (plist-get item :file) deffy-directory))
+ (file-relative-name (deffy-def-file item) deffy-directory))
(deffy-define-key type ()
- (let* ((form (plist-get item :form))
- (type (pcase form
- (`(,(or 'defun 'cl-defun) . ,_)
- (if (cl-find-if (lambda (form)
- (pcase form
- (`(interactive . ,_) t)))
- form)
- 'command
- 'function))
- (`(,(or 'defmacro 'cl-defmacro) . ,_)
- 'macro)
- (`(,car . ,_) car))))
+ (pcase-let* (((cl-struct deffy-def form) item)
+ (type (pcase form
+ (`(,(or 'defun 'cl-defun) . ,_)
+ (if (cl-find-if (lambda (form)
+ (pcase form
+ (`(interactive . ,_) t)))
+ form)
+ 'command
+ 'function))
+ (`(,(or 'defmacro 'cl-defmacro) . ,_)
+ 'macro)
+ (`(,car . ,_) car))))
(when type
(format "%s" type))))
@@ -64,18 +68,18 @@
(taxy-magit-section-define-column-definer "deffy")
(deffy-define-column "Definition" (:max-width 45 :face
font-lock-function-name-face)
- (let ((form-defines (pcase-exhaustive (cadr (plist-get item :form))
+ (let ((form-defines (pcase-exhaustive (cadr (deffy-def-form item))
((and (pred atom) it) it)
(`(quote ,it) it)
(`(,it . ,_) it))))
(format "%s" form-defines)))
(deffy-define-column "Type" (:max-width 25 :face font-lock-type-face)
- (format "%s" (car (plist-get item :form))))
+ (format "%s" (car (deffy-def-form item))))
(deffy-define-column "Docstring" (:max-width nil :face font-lock-doc-face)
(when-let ((docstring
- (pcase (plist-get item :form)
+ (pcase (deffy-def-form item)
(`(,(or 'defun 'cl-defun 'defmacro 'cl-defmacro) ,_name ,_args
,(and (pred stringp) docstring) . ,_)
docstring)
@@ -83,7 +87,7 @@
,(and (pred stringp) docstring) . ,_)
docstring)
(_ ;; Use the first string found, if any.
- (cl-find-if #'stringp (plist-get item :form))))))
+ (cl-find-if #'stringp (deffy-def-form item))))))
(replace-regexp-in-string "\n" " " docstring)))
(unless deffy-columns
@@ -112,15 +116,15 @@
;;;###autoload
(cl-defun deffy (&key (project (or (project-current)
- (cons 'transient default-directory)))
- (keys deffy-taxy-default-keys)
- (files deffy-files)
- (buffer-name (format "*Deffy: %s*"
- (if files
- (string-join (mapcar
#'file-relative-name files) ", ")
- (file-name-nondirectory
- (directory-file-name
(project-root project))))))
- visibility-fn display-buffer-action)
+ (cons 'transient default-directory)))
+ (keys deffy-taxy-default-keys)
+ (files deffy-files)
+ (buffer-name (format "*Deffy: %s*"
+ (if files
+ (string-join (mapcar
#'file-relative-name files) ", ")
+ (file-name-nondirectory
+ (directory-file-name
(project-root project))))))
+ visibility-fn display-buffer-action)
"Show definitions defined in PROJECT or FILES.
Interactively, with PREFIX, show only definitions in current
buffer."
@@ -144,8 +148,7 @@ buffer."
:visibility-fn visibility-fn
;; :heading-face-fn #'heading-face
args))
- (form-name
- (form) (format "%s" (cl-second (plist-get form :form)))))
+ (def-name (def) (format "%s" (cl-second (deffy-def-form def)))))
(when (get-buffer buffer-name)
(kill-buffer buffer-name))
(with-current-buffer (get-buffer-create buffer-name)
@@ -171,7 +174,7 @@ buffer."
:take (taxy-make-take-function keys deffy-keys))
(taxy-fill forms)
(taxy-sort* #'string< #'taxy-name)
- (taxy-sort #'string< #'form-name)))
+ (taxy-sort #'string< #'def-name)))
(taxy-magit-section-insert-indent-items nil)
(inhibit-read-only t)
(format-cons (taxy-magit-section-format-items
@@ -183,7 +186,7 @@ buffer."
(save-excursion
(taxy-magit-section-insert taxy :items 'last
;; :blank-between-depth bufler-taxy-blank-between-depth
- :initial-depth bufler-taxy-initial-depth))))
+ :initial-depth 0))))
(pop-to-buffer buffer-name display-buffer-action))))
;;;###autoload
@@ -211,7 +214,7 @@ Interactively, with prefix, display in dedicated side
window."
(defun deffy-goto-form ()
"Go to form at point."
(interactive)
- (pcase-let* (((map :file :pos) (oref (magit-current-section) value)))
+ (pcase-let* (((cl-struct deffy-def file pos) (oref (magit-current-section)
value)))
(pop-to-buffer
(or (find-buffer-visiting file)
(find-file-noselect file))
@@ -250,7 +253,7 @@ Interactively, with prefix, display in dedicated side
window."
(read (current-buffer)))
while form
when (listp form)
- collect (list :file file :pos (point) :form form))))
+ collect (make-deffy-def :file file :pos (point) :form form))))
;;;;; Bookmark support
- [elpa] externals/taxy updated (233f94c -> ade9a02), ELPA Syncer, 2021/09/15
- [elpa] externals/taxy e5b6429 07/42: Change: (taxy-magit-section-insert) Use format-fn from taxy, ELPA Syncer, 2021/09/15
- [elpa] externals/taxy fe190c2 09/42: Add: (taxy-magit-section-define-column-definer), ELPA Syncer, 2021/09/15
- [elpa] externals/taxy fb11a4f 19/42: WIP: (cl-defstruct deffy-def),
ELPA Syncer <=
- [elpa] externals/taxy ad1cea3 14/42: Examples: Add elispy.el, ELPA Syncer, 2021/09/15
- [elpa] externals/taxy 6703d8b 21/42: WIP: Use deffy-def in -RET, ELPA Syncer, 2021/09/15
- [elpa] externals/taxy e92ef13 22/42: Comment: Add FIXME, ELPA Syncer, 2021/09/15
- [elpa] externals/taxy 0cda29a 38/42: Add: (taxy-magit-section-define-column-definer) Custom-type, ELPA Syncer, 2021/09/15
- [elpa] externals/taxy a7ff557 33/42: Docs: Document new things, ELPA Syncer, 2021/09/15
- [elpa] externals/taxy 5020b43 31/42: Change: (deffy-goto-form) Bug #50576 is fixed., ELPA Syncer, 2021/09/15
- [elpa] externals/taxy 0826a47 02/42: WIP: taxy-magit-section column/table formatting, ELPA Syncer, 2021/09/15
- [elpa] externals/taxy d456f88 24/42: Add: (deffy-side-window-action), ELPA Syncer, 2021/09/15
- [elpa] externals/taxy 3787f4f 25/42: Fix: (deffy-buffer) Ensure file name, ELPA Syncer, 2021/09/15
- [elpa] externals/taxy 7ecc461 15/42: Fix: (taxy-magit-section-define-column-definer) Use defcustoms, ELPA Syncer, 2021/09/15