emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 5b59b80 139/177: Closes #495: Allow symbols as aliases in


From: João Távora
Subject: [elpa] master 5b59b80 139/177: Closes #495: Allow symbols as aliases in `yas-snippet-dirs'
Date: Sat, 28 Mar 2015 15:41:28 +0000

branch: master
commit 5b59b802ac4550394a810637de3af42f4d673abb
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>

    Closes #495: Allow symbols as aliases in `yas-snippet-dirs'
    
    * yasnippet.el (yas-installed-snippets-dir): New parameter. Set at
    load time from `load-file-name'.
    (yas--load-file-name): Removed.
    (yas-snippet-dirs): Update docstring. Default value has symbol
    `yas-installed-snippets-dir' as an alias to any bundled snippets.
    (yas-snippet-dirs): Redesign for new `yas-snippet-dirs' semantics.
---
 yasnippet.el |   42 ++++++++++++++++++++++++++++--------------
 1 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/yasnippet.el b/yasnippet.el
index adcd44d..c25d78d 100644
--- a/yasnippet.el
+++ b/yasnippet.el
@@ -150,21 +150,25 @@
   "Yet Another Snippet extension"
   :group 'editing)
 
-(defvar yas--load-file-name load-file-name
-  "Store the filename that yasnippet.el was originally loaded from.")
+(defvar yas-installed-snippets-dir nil)
+(setq yas-installed-snippets-dir
+      (when load-file-name
+        (concat (file-name-directory load-file-name) "snippets")))
 
 (defcustom yas-snippet-dirs (remove nil
                                     (list "~/.emacs.d/snippets"
-                                          (when yas--load-file-name
-                                            (concat (file-name-directory 
yas--load-file-name) "snippets"))))
-  "Directory or list of snippet dirs for each major mode.
-
-The directory where user-created snippets are to be stored.  Can
-also be a list of directories.  In that case, when used for
-bulk (re)loading of snippets (at startup or via
-`yas-reload-all'), directories appearing earlier in the list
-shadow other dir's snippets.  Also, the first directory is taken
-as the default for storing the user's new snippets."
+                                          'yas-installed-snippets-dir))
+  "List of top-level snippet directories.
+
+Each element, a string or a symbol whose value is a string,
+designates a top-level directory where per-mode snippet
+directories can be found.
+
+Elements appearing earlier in the list shadow later elements'
+snippets.
+
+The first directory is taken as the default for storing snippet's
+created with `yas-new-snippet'. "
   :type '(choice (string :tag "Single directory (string)")
                  (repeat :args (string) :tag "List of directories (strings)"))
   :group 'yasnippet
@@ -178,8 +182,18 @@ as the default for storing the user's new snippets."
                (yas-reload-all)))))
 
 (defun yas-snippet-dirs ()
-  "Return `yas-snippet-dirs' (which see) as a list."
-  (if (listp yas-snippet-dirs) yas-snippet-dirs (list yas-snippet-dirs)))
+  "Return variable `yas-snippet-dirs' as list of strings."
+  (cl-loop for e in (if (listp yas-snippet-dirs)
+                        yas-snippet-dirs
+                      (list yas-snippet-dirs))
+           collect
+           (cond ((stringp e) e)
+                 ((and (symbolp e)
+                       (boundp e)
+                       (stringp (symbol-value e)))
+                  (symbol-value e))
+                 (t
+                  (error "[yas] invalid element %s in `yas-snippet-dirs'" 
e)))))
 
 (defvaralias 'yas/root-directory 'yas-snippet-dirs)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]