[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/tempel fbef94d77d 48/82: Minor cleanup
From: |
ELPA Syncer |
Subject: |
[elpa] externals/tempel fbef94d77d 48/82: Minor cleanup |
Date: |
Sun, 9 Jan 2022 20:58:44 -0500 (EST) |
branch: externals/tempel
commit fbef94d77df5ad3411d60ded57c998243904878c
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Minor cleanup
---
tempel.el | 76 ++++++++++++++++++++++++++++++---------------------------------
1 file changed, 36 insertions(+), 40 deletions(-)
diff --git a/tempel.el b/tempel.el
index 7733634297..86f063299e 100644
--- a/tempel.el
+++ b/tempel.el
@@ -109,32 +109,32 @@ may be named with `tempel--name' or carry an evaluatable
Lisp expression
(goto-char (point-min))
(read (current-buffer))))
+(defun tempel--print-element (elt)
+ "Return string representation of template ELT."
+ (pcase elt
+ ('nil nil)
+ (`(q . ,_) nil)
+ ((pred stringp) elt)
+ (`(s ,name) (symbol-name name))
+ (`(,(or 'p 'P) ,_ ,name . ,noinsert)
+ (and (not (car noinsert)) (symbol-name name)))
+ ((or 'n 'n>) " ")
+ (_ "_")))
+
(defun tempel--annotate (templates width ellipsis sep name)
"Annotate template NAME given the list of TEMPLATES.
WIDTH, SEP and ELLIPSIS configure the formatting."
(when-let* ((name (intern-soft name))
- (def (cdr (assoc name templates))))
- (concat
- sep
- (truncate-string-to-width
- (replace-regexp-in-string
- "_+" #("_" 0 1 (face shadow))
- (propertize
- (replace-regexp-in-string
- "\\s-+" " "
- (mapconcat (lambda (x)
- (pcase x
- ('nil nil)
- (`(q . ,_) nil)
- ((pred stringp) x)
- (`(s ,name) (symbol-name name))
- (`(,(or 'p 'P) ,_ ,name . ,noinsert)
- (and (not (car noinsert)) (symbol-name name)))
- ((or 'n 'n>) " ")
- (_ "_")))
- def ""))
- 'face 'completions-annotations))
- width 0 ?\s ellipsis))))
+ (elts (cdr (assoc name templates))))
+ (concat sep
+ (truncate-string-to-width
+ (replace-regexp-in-string
+ "_+" #("_" 0 1 (face shadow))
+ (propertize (replace-regexp-in-string
+ "\\s-+" " "
+ (mapconcat #'tempel--print-element elts ""))
+ 'face 'completions-annotations))
+ width 0 ?\s ellipsis))))
(defun tempel--field-modified (ov after beg end &optional _len)
"Update field overlay OV.
@@ -157,9 +157,9 @@ BEG and END are the boundaries of the modification."
(save-excursion
(goto-char (overlay-start ov))
(let (x)
- (when-let (str (or (and (setq x (overlay-get ov 'tempel--form))
(eval x (cdr st)))
- (and (setq x (overlay-get ov 'tempel--name))
(alist-get x (cdr st)))))
- (tempel--replace (overlay-start ov) (overlay-end ov) ov str)))))))
+ (setq x (or (and (setq x (overlay-get ov 'tempel--form)) (eval x
(cdr st)))
+ (and (setq x (overlay-get ov 'tempel--name)) (alist-get
x (cdr st)))))
+ (when x (tempel--replace (overlay-start ov) (overlay-end ov) ov
x)))))))
(defun tempel--replace (beg end ov str)
"Replace region beween BEG and END with STR.
@@ -235,10 +235,9 @@ INIT is the optional initial input."
(`(s ,name) (tempel--field st name))
;; LEGACY: (r ...) and (r> ...) is legacy syntax from Tempo, use r instead.
((or 'r `(r . ,_)) (if region (goto-char (cdr region)) (tempel--field st)))
- ((or 'r> `(r> . ,_))
- (if (not region) (tempel--field st)
- (goto-char (cdr region))
- (indent-region (car region) (cdr region) nil)))
+ ((or 'r> `(r> . ,_)) (if (not region) (tempel--field st)
+ (goto-char (cdr region))
+ (indent-region (car region) (cdr region) nil)))
;; LEGACY: (p ...) and (P ...) is legacy syntax from Tempo, use q, s, or p
instead.
;; TEMPEL EXTENSION: (p (FORM...) <NAME>)
(`(,(or 'p 'P) ,prompt . ,rest)
@@ -312,18 +311,15 @@ INIT is the optional initial input."
(defun tempel--find (dir)
"Find next overlay in DIR."
- (let ((pt (point))
- (next nil))
- (dolist (st tempel--active)
+ (let ((pt (point)) next)
+ (dolist (st tempel--active next)
(dolist (ov (car st))
- (if (> dir 0)
- (when (and (not (overlay-get ov 'tempel--form)) ;; Skip form
- (> (overlay-end ov) pt))
- (setq next (min (or next most-positive-fixnum) (overlay-end
ov))))
- (when (and (not (overlay-get ov 'tempel--form)) ;; Skip form
- (< (overlay-start ov) pt))
- (setq next (max (or next most-negative-fixnum) (overlay-start
ov)))))))
- next))
+ (unless (overlay-get ov 'tempel--form)
+ (cond
+ ((and (> dir 0) (> (overlay-end ov) pt))
+ (setq next (min (or next (point-max)) (overlay-end ov))))
+ ((and (< dir 0) (< (overlay-start ov) pt))
+ (setq next (max (or next -1) (overlay-start ov))))))))))
(defun tempel-next (arg)
"Move ARG fields forward and quit at the end."
- [elpa] externals/tempel bf95b3f1c2 31/82: Add support for (q (FORM ...) var), (continued)
- [elpa] externals/tempel bf95b3f1c2 31/82: Add support for (q (FORM ...) var), ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 64f896d782 44/82: Fix jump to first field, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 9948c6889d 43/82: Add tempel-form-prefix and tempel-field-prefix, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel ad71c25632 32/82: Add syntax extension (p (FORM...) <NAME>), ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 5dbdc76eb2 74/82: Specify the completion category tempel, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 65a3eb0458 76/82: Improve abbreviation expansion, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 57bbc5e681 78/82: README update, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel ac3df540a4 69/82: Remove underlines from faces, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 7cf25bd795 71/82: Simplify templates data structure at load time, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 69f7cb3212 06/82: Reimplement without Tempo for more flexibility, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel fbef94d77d 48/82: Minor cleanup,
ELPA Syncer <=
- [elpa] externals/tempel 01e7430343 27/82: Add docstrings, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel a03c36c8dd 02/82: Improve behavior when templates are nested, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel db6847a7f9 56/82: Make temple-key a macro, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 0e618cd169 23/82: Do not sort overlays, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 04d4f6c055 55/82: Use named key function, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 91f6978ddd 60/82: Use Tempo PROMPT as default value, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel e20f982dc5 25/82: Remove global variable tempel--state, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel fa99fb7f96 34/82: README: Update keybindings, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel c4cd6e0f69 73/82: Rename tempel-expand -> tempel-complete, add tempel-expand (Fix #13), ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 8f8588985a 04/82: Simplify template markers, ELPA Syncer, 2022/01/09