- (yas/compile-bundle \"yasnippet.el\"
- \"yasnippet-bundle.el\"
- \"snippets\")
- \"(yas/initialize-bundle)
- ### autoload
- (require 'yasnippet-bundle)`\"
- \"dropdown-list.el\")
-"
- (interactive (concat "ffind the yasnippet.el file: \nFTarget bundle file: "
- "\nDSnippet directory to bundle: \nMExtra code? \nfdropdown-library: "))
-
- (let* ((yasnippet (or yasnippet
- "yasnippet.el"))
- (yasnippet-bundle (or yasnippet-bundle
- "./yasnippet-bundle.el"))
- (snippet-roots (or snippet-roots
- "snippets"))
- (dropdown (or dropdown
- "dropdown-list.el"))
- (code (or (and code
- (condition-case err (read code) (error nil))
- code)
- (concat "(yas/initialize-bundle)"
- "\n;;;###autoload" ; break through so that won't
- "(require 'yasnippet-bundle)")))
- (dirs (or (and (listp snippet-roots) snippet-roots)
- (list snippet-roots)))
- (bundle-buffer nil))
- (with-temp-file yasnippet-bundle
- (insert ";;; yasnippet-bundle.el --- "
- "Yet another snippet extension (Auto compiled bundle)\n")
- (insert-file-contents yasnippet)
- (goto-char (point-max))
- (insert "\n")
- (when dropdown
- (insert-file-contents dropdown))
- (goto-char (point-max))
- (insert ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n")
- (insert ";;;; Auto-generated code ;;;;\n")
- (insert ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n")
- (insert "(defun yas/initialize-bundle ()\n"
- " \"Initialize YASnippet and load snippets in the bundle.\"")
- (flet ((yas/define-snippets
- (mode snippets &optional parent-or-parents)
- (insert ";;; snippets for " (symbol-name mode) "\n")
- (let ((literal-snippets (list)))
- (dolist (snippet snippets)
- (let ((key (first snippet))
- (template-content (second snippet))
- (name (third snippet))
- (condition (fourth snippet))
- (group (fifth snippet))
- (expand-env (sixth snippet))
- (file nil) ;; (seventh snippet)) ;; omit on purpose
- (binding (eighth snippet))
- (uid (ninth snippet)))
- (push `(,key
- ,template-content
- ,name
- ,condition
- ,group
- ,expand-env
- ,file
- ,binding
- ,uid)
- literal-snippets)))
- (insert (pp-to-string `(yas/define-snippets ',mode ',literal-snippets ',parent-or-parents)))
- (insert "\n\n"))))
- (dolist (dir dirs)
- (dolist (subdir (yas/subdirs dir))
- (let ((file (concat subdir "/.yas-setup.el")))
- (when (file-readable-p file)
- (insert ";; Supporting elisp for subdir " (file-name-nondirectory subdir) "\n\n")
- (goto-char (+ (point)
- (second (insert-file-contents file))))))
- (yas/load-directory-1 subdir nil))))
-
- (insert (pp-to-string `(yas/global-mode 1)))
- (insert ")\n\n" code "\n")
-
- ;; bundle-specific provide and value for yas/dont-activate
- (let ((bundle-feature-name (file-name-nondirectory
- (file-name-sans-extension
- yasnippet-bundle))))
- (insert (pp-to-string `(set-default 'yas/dont-activate
- #'(lambda ()
- (and (or yas/snippet-dirs
- (featurep ',(make-symbol bundle-feature-name)))
- (null (yas/get-snippet-tables)))))))
- (insert (pp-to-string `(provide ',(make-symbol bundle-feature-name)))))
-
- (insert ";;; "
- (file-name-nondirectory yasnippet-bundle)
- " ends here\n"))))
-
-(defun yas/compile-textmate-bundle ()
- (interactive)
- (yas/compile-bundle "yasnippet.el"
- "./yasnippet-textmate-bundle.el"
- "extras/imported/"
- (concat "(yas/initialize-bundle)"
- "\n;;;###autoload" ; break through so that won't
- "(require 'yasnippet-textmate-bundle)")
- "dropdown-list.el"))