[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Getting rid of low-level assumptions in yasnippet
From: |
Stefan Monnier |
Subject: |
Getting rid of low-level assumptions in yasnippet |
Date: |
Thu, 19 Mar 2015 15:49:59 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) |
Hi João,
Could you double check the patch below, to make sure it does the right thing?
The main thrust is to get rid of the use of the `cl-struct-slots'
property which doesn't exist in Emacs-25 any more.
This is against the elpa.git version of the code, which IIUC is still
not up-to-date, right?
Stefan
diff --git a/packages/yasnippet/yasnippet.el b/packages/yasnippet/yasnippet.el
index aa3e312..7b4c429 100644
--- a/packages/yasnippet/yasnippet.el
+++ b/packages/yasnippet/yasnippet.el
@@ -1,6 +1,6 @@
;;; yasnippet.el --- Yet another snippet extension for Emacs.
-;; Copyright (C) 2008-2013 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2013, 2015 Free Software Foundation, Inc.
;; Authors: pluskid <address@hidden>, João Távora <address@hidden>
;; Maintainer: João Távora <address@hidden>
;; Version: 0.8.0
@@ -856,7 +856,7 @@ Honour `yas-dont-activate', which see."
;;; Internal structs for template management
-(defstruct (yas--template (:constructor yas--make-blank-template))
+(defstruct (yas--template (:constructor yas--make-template))
"A template for a snippet."
key
content
@@ -872,16 +872,6 @@ Honour `yas-dont-activate', which see."
table
)
-(defun yas--populate-template (template &rest args)
- "Helper function to populate TEMPLATE with properties."
- (while args
- (aset template
- (position (intern (substring (symbol-name (car args)) 1))
- (mapcar #'car (get 'yas--template 'cl-struct-slots)))
- (second args))
- (setq args (cddr args)))
- template)
-
(defstruct (yas--table (:constructor yas--make-snippet-table (name)))
"A table to store snippets for a particular mode.
@@ -1668,20 +1658,19 @@ Optional PROMPT sets the prompt to use."
(uuid (or (ninth snippet)
name))
(template (or (gethash uuid (yas--table-uuidhash snippet-table))
- (yas--make-blank-template))))
+ (yas--make-template :uuid uuid
+ :table snippet-table))))
;; X) populate the template object
;;
- (yas--populate-template template
- :table snippet-table
- :key key
- :content (second snippet)
- :name (or name key)
- :group group
- :condition condition
- :expand-env (sixth snippet)
- :file (seventh snippet)
- :keybinding keybinding
- :uuid uuid)
+ (setf (yas--template-key template) key)
+ (setf (yas--template-content template) (second snippet))
+ (setf (yas--template-name template) (or name key))
+ (setf (yas--template-group template) group)
+ (setf (yas--template-condition template) condition)
+ (setf (yas--template-expand-env template) (sixth snippet))
+ (setf (yas--template-file template) (seventh snippet))
+ (setf (yas--template-keybinding template) keybinding)
+
;; X) Update this template in the appropriate table. This step
;; also will take care of adding the key indicators in the
;; templates menu entry, if any
@@ -2113,11 +2102,10 @@ This function does nothing if `yas-use-menu' is nil."
hash)
(dolist (uuid omit-items)
(let ((template (or (gethash uuid hash)
- (yas--populate-template (puthash uuid
-
(yas--make-blank-template)
- hash)
- :table table
- :uuid uuid))))
+ (puthash uuid
+ (yas--make-template :table table
+ :uuid uuid)
+ hash))))
(setf (yas--template-menu-binding-pair template) (cons nil
:none)))))))
(defun yas--define-menu-1 (table menu-keymap menu uuidhash &optional
group-list)
@@ -2125,12 +2113,12 @@ This function does nothing if `yas-use-menu' is nil."
(dolist (e (reverse menu))
(cond ((eq (first e) 'yas-item)
(let ((template (or (gethash (second e) uuidhash)
- (yas--populate-template (puthash (second e)
-
(yas--make-blank-template)
- uuidhash)
- :table table
- :perm-group group-list
- :uuid (second e)))))
+ (puthash (second e)
+ (yas--make-template
+ :table table
+ :perm-group group-list
+ :uuid (second e))
+ uuidhash))))
(define-key menu-keymap (vector (gensym))
(car (yas--template-menu-binding-pair-get-create template
:stay)))))
((eq (first e) 'yas-submenu)
@@ -2622,12 +2610,11 @@ whether (and where) to save the snippet, then quit the
window."
(yas--current-template
(and parsed
(fboundp test-mode)
- (yas--populate-template (yas--make-blank-template)
- :table nil ;; no tables for
ephemeral snippets
- :key (first parsed)
- :content (second parsed)
- :name (third parsed)
- :expand-env (sixth parsed)))))
+ (yas--make-template :table nil ;; no tables for ephemeral
snippets
+ :key (first parsed)
+ :content (second parsed)
+ :name (third parsed)
+ :expand-env (sixth parsed)))))
(cond (yas--current-template
(let ((buffer-name (format "*testing snippet: %s*"
(yas--template-name yas--current-template))))
(kill-buffer (get-buffer-create buffer-name))
- Getting rid of low-level assumptions in yasnippet,
Stefan Monnier <=
- Re: Getting rid of low-level assumptions in yasnippet, João Távora, 2015/03/20
- Re: Getting rid of low-level assumptions in yasnippet, Stefan Monnier, 2015/03/20
- Re: Getting rid of low-level assumptions in yasnippet, João Távora, 2015/03/28
- Re: Getting rid of low-level assumptions in yasnippet, Stefan Monnier, 2015/03/28
- Re: Getting rid of low-level assumptions in yasnippet, João Távora, 2015/03/28
- Re: Getting rid of low-level assumptions in yasnippet, Matthew Fidler, 2015/03/29
- Re: Getting rid of low-level assumptions in yasnippet, Stefan Monnier, 2015/03/29
- Re: Getting rid of low-level assumptions in yasnippet, Matthew Fidler, 2015/03/30
- Re: Getting rid of low-level assumptions in yasnippet, Stefan Monnier, 2015/03/30