summaryrefslogtreecommitdiff
path: root/lisp/skeleton.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2013-06-05 15:57:10 -0400
committerStefan Monnier <monnier@iro.umontreal.ca>2013-06-05 15:57:10 -0400
commitfccdc796cfccb428a3535943faa08f4323cacc4b (patch)
treef381e2a3171c37aa78aec63a39b29b6df82f339c /lisp/skeleton.el
parent398b4366647e54babb1c743728fddbc909678904 (diff)
downloademacs-fccdc796cfccb428a3535943faa08f4323cacc4b.tar.gz
* lisp/autorevert.el (auto-revert-notify-handler): Use memq.
Hide assertion failure. * lisp/skeleton.el: Use cl-lib. (skeleton-further-elements): Use defvar-local. (skeleton-insert): Use cl-progv.
Diffstat (limited to 'lisp/skeleton.el')
-rw-r--r--lisp/skeleton.el12
1 files changed, 7 insertions, 5 deletions
diff --git a/lisp/skeleton.el b/lisp/skeleton.el
index 01288b89132..a7eae7464e2 100644
--- a/lisp/skeleton.el
+++ b/lisp/skeleton.el
@@ -31,6 +31,8 @@
;;; Code:
+(eval-when-compile (require 'cl-lib))
+
;; page 1: statement skeleton language definition & interpreter
;; page 2: paired insertion
;; page 3: mirror-mode, an example for setting up paired insertion
@@ -84,13 +86,11 @@ The variables `v1' and `v2' are still set when calling this.")
"When non-nil, indent rigidly under current line for element `\\n'.
Else use mode's `indent-line-function'.")
-(defvar skeleton-further-elements ()
+(defvar-local skeleton-further-elements ()
"A buffer-local varlist (see `let') of mode specific skeleton elements.
These variables are bound while interpreting a skeleton. Their value may
in turn be any valid skeleton element if they are themselves to be used as
skeleton elements.")
-(make-variable-buffer-local 'skeleton-further-elements)
-
(defvar skeleton-subprompt
(substitute-command-keys
@@ -260,8 +260,10 @@ When done with skeleton, but before going back to `_'-point call
skeleton-modified skeleton-point resume: help input v1 v2)
(setq skeleton-positions nil)
(unwind-protect
- (eval `(let ,skeleton-further-elements
- (skeleton-internal-list skeleton str)))
+ (cl-progv
+ (mapcar #'car skeleton-further-elements)
+ (mapcar (lambda (x) (eval (cadr x))) skeleton-further-elements)
+ (skeleton-internal-list skeleton str))
(run-hooks 'skeleton-end-hook)
(sit-for 0)
(or (pos-visible-in-window-p beg)