30845199b5
* mod-ac: fuzzy and unintrusive auto-complete * mod-fly: on-the-fly syntax and spell checking * mod-git: git-gutter and git-related modes
60 lines
2.3 KiB
EmacsLisp
60 lines
2.3 KiB
EmacsLisp
;; Package management bootstrap
|
|
(setq package-user-dir "~/.emacs.d/vendor/")
|
|
(setq package-enable-at-startup nil)
|
|
(setq package-archives '(("melpa" . "http://melpa.milkbox.net/packages/")
|
|
("org" . "http://orgmode.org/elpa/")
|
|
("marmalade" . "http://marmalade-repo.org/packages/")
|
|
("gnu" . "http://elpa.gnu.org/packages/")))
|
|
|
|
(let ((default-directory my-elisp-dir))
|
|
(normal-top-level-add-to-load-path '("."))
|
|
(normal-top-level-add-subdirs-to-load-path))
|
|
|
|
(package-initialize)
|
|
|
|
;; Run a body of code *after* a package is ready
|
|
(defmacro after (feature &rest body)
|
|
"After FEATURE is loaded, evaluate BODY."
|
|
(declare (indent defun))
|
|
(if (fboundp 'with-eval-after-load)
|
|
`(with-eval-after-load ,feature ,@body)
|
|
`(eval-after-load ,feature '(progn ,@body))))
|
|
|
|
;; Check if a package is installed; if load is t, load it too.
|
|
;; Works for packages bundled with emacs too!
|
|
(defun require-package (package &optional dont_load)
|
|
(unless (require package nil 'noerror)
|
|
(init-package package dont_load)))
|
|
|
|
;; List version of require-package
|
|
(defun require-packages (packages &optional dont_load)
|
|
(dolist (pkg packages) (require-package pkg dont_load)))
|
|
|
|
;; Install the package if it isn't already, and require it, unless
|
|
;; told others.
|
|
(defun init-package (package &optional dont_load)
|
|
(unless (package-installed-p package)
|
|
(unless (assoc package package-archive-contents)
|
|
(package-refresh-contents))
|
|
(package-install package))
|
|
(if (not dont_load) (require package)))
|
|
|
|
;; Associate an extension with a mode, and install the necessary
|
|
;; package(s) for it. Also look for a modules/env-*.el modefile for
|
|
;; extra configuration.
|
|
(defun associate-mode (mode ext &optional only-load-env)
|
|
(let* ((mode_name (symbol-name mode))
|
|
(env_mode_name (concat "env-" mode_name))
|
|
(mode_path (expand-file-name (concat env_mode_name ".el") my-modules-dir)))
|
|
|
|
(unless only-load-env (require-package mode))
|
|
(if (file-exists-p mode_path)
|
|
(require-package (intern env_mode_name))))
|
|
|
|
(if (typep ext 'list)
|
|
(dolist (e ext)
|
|
(add-to-list 'auto-mode-alist `(,(format "\\%s\\'" e) . ,mode)))
|
|
(add-to-list 'auto-mode-alist `(,(format "\\%s\\'" ext) . ,mode))))
|
|
|
|
;;
|
|
(provide 'core-packages)
|