enhancement: minor cleanup to the loading mechanism

This commit is contained in:
Joao Tavora 2012-05-22 17:49:57 +01:00
parent c38c3aaab8
commit 922304ffdf

View File

@ -1604,13 +1604,13 @@ TEMPLATES is a list of `yas/template'."
(defun yas/load-yas-setup-file (file) (defun yas/load-yas-setup-file (file)
(load file 'noerror)) (load file 'noerror))
(defun yas/load-directory (top-level-dir &optional nojit) (defun yas/load-directory (top-level-dir &optional use-jit)
"Load snippet definition from directory hierarchy under TOP-LEVEL-DIR. "Load snippets in directory hierarchy TOP-LEVEL-DIR.
Below TOP-LEVEL-DIR each directory is a mode name." Below TOP-LEVEL-DIR each directory should be a mode name.
Optional USE-JIT use jit-loading of snippets."
(interactive "DSelect the root directory: ") (interactive "DSelect the root directory: ")
(unless (file-directory-p top-level-dir)
(error "%s is not a directory" top-level-dir))
(unless yas/snippet-dirs (unless yas/snippet-dirs
(setq yas/snippet-dirs top-level-dir)) (setq yas/snippet-dirs top-level-dir))
(dolist (dir (yas/subdirs top-level-dir)) (dolist (dir (yas/subdirs top-level-dir))
@ -1622,10 +1622,9 @@ Below TOP-LEVEL-DIR each directory is a mode name."
(let ((form `(yas/load-directory-1 ,dir (let ((form `(yas/load-directory-1 ,dir
',mode-sym ',mode-sym
',parents))) ',parents)))
(if (or (called-interactively-p) (if use-jit
nojit) (yas/schedule-jit mode-sym form)
(eval form) (eval form)))))
(yas/schedule-jit mode-sym form)))))
(when (interactive-p) (when (interactive-p)
(yas/message 3 "Loaded snippets from %s." top-level-dir))) (yas/message 3 "Loaded snippets from %s." top-level-dir)))
@ -1635,9 +1634,9 @@ Below TOP-LEVEL-DIR each directory is a mode name."
(if (and (not no-compiled-snippets) (if (and (not no-compiled-snippets)
(load (expand-file-name ".yas-compiled-snippets" directory) 'noerror (<= yas/verbosity 2))) (load (expand-file-name ".yas-compiled-snippets" directory) 'noerror (<= yas/verbosity 2)))
(yas/message 2 "Loading much faster .yas-compiled-snippets from %s" directory) (yas/message 2 "Loading much faster .yas-compiled-snippets from %s" directory)
(yas/load-directory-2 directory mode-sym parents)))) (yas/load-directory-2 directory mode-sym))))
(defun yas/load-directory-2 (directory mode-sym parents) (defun yas/load-directory-2 (directory mode-sym)
;; Load .yas-setup.el files wherever we find them ;; Load .yas-setup.el files wherever we find them
;; ;;
(yas/load-yas-setup-file (expand-file-name ".yas-setup" directory)) (yas/load-yas-setup-file (expand-file-name ".yas-setup" directory))
@ -1658,8 +1657,7 @@ Below TOP-LEVEL-DIR each directory is a mode name."
;; ;;
(dolist (subdir (yas/subdirs directory)) (dolist (subdir (yas/subdirs directory))
(yas/load-directory-2 subdir (yas/load-directory-2 subdir
mode-sym mode-sym))))
nil))))
(defun yas/load-snippet-dirs (&optional nojit) (defun yas/load-snippet-dirs (&optional nojit)
"Reload the directories listed in `yas/snippet-dirs' or "Reload the directories listed in `yas/snippet-dirs' or
@ -1667,12 +1665,11 @@ Below TOP-LEVEL-DIR each directory is a mode name."
(let (errors) (let (errors)
(if yas/snippet-dirs (if yas/snippet-dirs
(dolist (directory (reverse (yas/snippet-dirs))) (dolist (directory (reverse (yas/snippet-dirs)))
(condition-case oops (cond ((file-directory-p directory)
(progn (yas/load-directory directory (not nojit))
(yas/load-directory directory nojit) (yas/message 3 "Loaded %s" directory))
(yas/message 3 "Loaded %s" directory)) (t
(error (push oops errors) (push (yas/message 0 "Check your `yas/snippet-dirs': %s is not a directory" directory) errors))))
(yas/message 3 "Check your `yas/snippet-dirs': %s" (second oops)))))
(call-interactively 'yas/load-directory)) (call-interactively 'yas/load-directory))
errors)) errors))
@ -1799,9 +1796,9 @@ This works by stubbing a few functions, then calling
(let ((output-file (concat (file-name-as-directory dir) ".yas-compiled-snippets.el"))) (let ((output-file (concat (file-name-as-directory dir) ".yas-compiled-snippets.el")))
(with-temp-file output-file (with-temp-file output-file
(insert (format ";;; Compiled snippets and support files for `%s'\n" mode)) (insert (format ";;; Compiled snippets and support files for `%s'\n" mode))
(yas/load-directory-2 dir mode parents) (yas/load-directory-2 dir mode)
(insert (format ";;; Do not edit! File generated at %s\n" (current-time-string))))))) (insert (format ";;; Do not edit! File generated at %s\n" (current-time-string)))))))
(yas/load-directory top-level-dir 'im-compiling-so-no-jit-ok?))) (yas/load-directory top-level-dir nil)))
(defun yas/recompile-all () (defun yas/recompile-all ()
"Compile every dir in `yas/snippet-dirs'." "Compile every dir in `yas/snippet-dirs'."