[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/tempel 76a5ab120b 15/82: Add customization variables
From: |
ELPA Syncer |
Subject: |
[elpa] externals/tempel 76a5ab120b 15/82: Add customization variables |
Date: |
Sun, 9 Jan 2022 20:58:42 -0500 (EST) |
branch: externals/tempel
commit 76a5ab120b49adc8aa43aba06cefc2a9d76b531e
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Add customization variables
---
README.org | 46 +++++++++++++++++++++++++---------------------
tempel.el | 42 +++++++++++++++++++++++++++++++-----------
2 files changed, 56 insertions(+), 32 deletions(-)
diff --git a/README.org b/README.org
index fef7f9642b..da2de94c5c 100644
--- a/README.org
+++ b/README.org
@@ -54,32 +54,36 @@ element of the list is the name of the template. After the
name the Tempo
elements follow.
#+begin_src emacs-lisp
-;; -*- mode: lisp -*-
+ ;; -*- mode: lisp -*-
-latex-mode
+ latex-mode
-(begin "\\begin{" (s env) "}" > n> r> "\\end{" (s env) "}" > n)
-(enumerate "\\begin{enumerate}\n\\item " r> n> "\\end{enumerate}" > n)
-(itemize "\\begin{itemize}\n\\item " r> n> "\\end{itemize}" > n)
+ (begin "\\begin{" (s env) "}" > n> r> "\\end{" (s env) "}" > n)
+ (enumerate "\\begin{enumerate}\n\\item " r> n> "\\end{enumerate}" > n)
+ (itemize "\\begin{itemize}\n\\item " r> n> "\\end{itemize}" > n)
-emacs-lisp-mode
+ emacs-lisp-mode
-(lambda "(lambda (" p ")" n> r> ")")
-(var "(defvar " p "\n \"" p "\")" n n)
-(const "(defconst " p "\n \"" p "\")" n n)
-(custom "(defcustom " p "\n \"" p "\"" n> ":type '" p ")" n n)
-(face "(defface " p " '((t :inherit font-lock-" p "-face))\n \"" p "\")" n n)
-(group "(defgroup " p " nil\n \"" p "\"" n> ":group '" p n> ":prefix \"" p
"-\")" n n)
-(macro "(defmacro " p " (" p ")\n \"" p "\"" n> r> ")" n n)
-(fun "(defun " p " (" p ")\n \"" p "\"" n> r> ")" n n)
-(let "(let (" p ")" n> r> ")")
-(star "(let* (" p ")" n> r> ")")
-(rec "(letrec (" p ")" n> r> ")")
-(command "(defun " p " (" p ")\n \"" p "\"" n> "(interactive)" n> r> ")" n n)
+ (lambda "(lambda (" p ")" n> r> ")")
+ (var "(defvar " p "\n \"" p "\")" n n)
+ (const "(defconst " p "\n \"" p "\")" n n)
+ (custom "(defcustom " p "\n \"" p "\"" n> ":type '" p ")" n n)
+ (face "(defface " p " '((t :inherit font-lock-" p "-face))\n \"" p "\")" n
n)
+ (group "(defgroup " p " nil\n \"" p "\"" n> ":group '" p n> ":prefix \"" p
"-\")" n n)
+ (macro "(defmacro " p " (" p ")\n \"" p "\"" n> r> ")" n n)
+ (fun "(defun " p " (" p ")\n \"" p "\"" n> r> ")" n n)
+ (let "(let (" p ")" n> r> ")")
+ (star "(let* (" p ")" n> r> ")")
+ (rec "(letrec (" p ")" n> r> ")")
+ (command "(defun " p " (" p ")\n \"" p "\"" n> "(interactive)" n> r> ")" n
n)
-org-mode
+ rst-mode
-(title "#+title: " p n "#+author: Daniel Mendler" n "#+language: en" n n)
+ (title (make-string (length title) ?=) n (s title) n (make-string (length
title) ?=) n)
+
+ org-mode
+
+ (title "#+title: " p n "#+author: Daniel Mendler" n "#+language: en" n n)
#+end_src
* Template syntax
@@ -89,7 +93,7 @@ described in detail in ~tempo-define-template~ are supported.
We document the
important ones here:
- ~"string"~ Inserts a string literal.
- - ~p~ Inserts an unnamed prompt field.
+ - ~p~ Inserts an unnamed placeholder field.
- ~r~ Inserts the current region.
- ~(s NAME)~ Inserts a named field.
- ~n~ Inserts a newline.
diff --git a/tempel.el b/tempel.el
index 6613de41bf..002d779e06 100644
--- a/tempel.el
+++ b/tempel.el
@@ -38,7 +38,21 @@
(require 'seq)
(eval-when-compile (require 'subr-x))
-(defvar tempel-file (expand-file-name "templates" user-emacs-directory))
+(defgroup tempel nil
+ "Simple templates"
+ :group 'editing
+ :prefix "tempel-")
+
+(defcustom tempel-file (expand-file-name "templates" user-emacs-directory)
+ "Path to the template file"
+ :type 'string)
+
+(defface tempel-field '((t :inherit highlight))
+ "Face used for fields.")
+
+(defface tempel-form '((t :inherit region))
+ "Face used for evaluated forms.")
+
(defvar tempel--templates nil)
(defvar tempel--modified nil)
(defvar tempel--history nil)
@@ -114,11 +128,12 @@ BEG and END are the boundaries of the modification."
(dolist (other (cadr state))
(tempel--replace-field other (eval (overlay-get other
'tempel--form) (cddr state)))))))))
-(defun tempel--field ()
- "Create template field."
+(defun tempel--field (&optional face)
+ "Create template field with FACE."
(let ((ov (make-overlay (point) (point))))
- (overlay-put ov 'face 'highlight)
- (overlay-put ov 'before-string #(" " 0 1 (face highlight display (space
:width (1)))))
+ (setq face (or face 'tempel-field))
+ (overlay-put ov 'face face)
+ (overlay-put ov 'before-string (propertize " " 'face face 'display '(space
:width (1))))
(overlay-put ov 'modification-hooks (list #'tempel--update-field))
(overlay-put ov 'insert-behind-hooks (list #'tempel--update-field))
(push ov tempel--overlays)
@@ -127,19 +142,22 @@ BEG and END are the boundaries of the modification."
(defun tempel--named (name)
"Create template field named NAME."
(let ((ov (tempel--field)))
- (push ov (alist-get name (car tempel--state)))
(overlay-put ov 'tempel--name name)
(overlay-put ov 'tempel--state tempel--state)
+ (push ov (alist-get name (car tempel--state)))
(when-let (str (alist-get name (cddr tempel--state)))
(insert str)
(move-overlay ov (overlay-start ov) (point)))))
(defun tempel--form (form)
"Create template field evaluating FORM."
- (let ((ov (tempel--field)))
- (push ov (cadr tempel--state))
+ (let ((ov (tempel--field 'tempel-form)))
(overlay-put ov 'tempel--form form)
- (insert (eval form (cddr tempel--state)))
+ (push ov (cadr tempel--state))
+ ;; Ignore variable errors, since some variables may not be defined yet.
+ (condition-case nil
+ (insert (eval form (cddr tempel--state)))
+ (void-variable nil))
(move-overlay ov (overlay-start ov) (point))))
(defun tempel--query (prompt name)
@@ -230,13 +248,15 @@ BEG and END are the boundaries of the modification."
(cond
((> arg 0)
(dolist (ov tempel--overlays)
- (when (> (overlay-start ov) (point))
+ (when (and (not (overlay-get ov 'tempel--form)) ;; Skip form
+ (> (overlay-start ov) (point)))
(if (> arg 1) (setq arg (1- arg))
(goto-char (overlay-end ov))
(throw 'tempel--break nil)))))
((< arg 0)
(dolist (ov (reverse tempel--overlays))
- (when (< (overlay-end ov) (point))
+ (when (and (not (overlay-get ov 'tempel--form)) ;; Skip form
+ (< (overlay-end ov) (point)))
(if (< arg -1) (setq arg (1+ arg))
(goto-char (overlay-end ov))
(throw 'tempel--break nil))))))
- [elpa] externals/tempel 4bc75c1aba 52/82: Use the more subtle face colors from Modus, (continued)
- [elpa] externals/tempel 4bc75c1aba 52/82: Use the more subtle face colors from Modus, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 52d8556c05 57/82: Improve annotation function, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 675e759bde 64/82: Add special prompt treatment, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel e6aa1892af 14/82: README: Simplify template, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 2ba940809a 42/82: Add temple-abort (Fix #2), ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 5521546f48 10/82: README: Add header, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel d2d5566282 65/82: Improve description of PROMPT/DEFAULT value, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel e529887d5d 70/82: tempel-expand: Fix exit function, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 349e9735ac 08/82: Remove global temple-region variable, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel bdf04d8c48 05/82: Improved field movement, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 76a5ab120b 15/82: Add customization variables,
ELPA Syncer <=
- [elpa] externals/tempel f7990f528b 11/82: README update, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 5807ca4d28 33/82: Use remappings, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 9291904a84 24/82: Simplify overlay updates, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 5e1a864123 68/82: Add tempel-abbrev to define an abbrev, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 6c288c32a2 80/82: README: Document Capf setup (Fix #14), ELPA Syncer, 2022/01/09
- [elpa] externals/tempel b5cea7ac67 03/82: Add template markers, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 545b929a28 45/82: README: Fix formatting, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 1ef2d76dd1 35/82: Add screenshots, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel fcfb19e134 47/82: Improve undo, ELPA Syncer, 2022/01/09
- [elpa] externals/tempel 36a7977702 62/82: Use cyan color for default values, ELPA Syncer, 2022/01/09