From 5b38ad5d8c5947d551b49bf7b1c90c5c011000b7 Mon Sep 17 00:00:00 2001 From: Bozhidar Batsov Date: Mon, 23 Apr 2012 13:10:19 +0300 Subject: [PATCH] fixed #138 - fixed auto-install's behaviour --- init.el | 1 - prelude/prelude-auto-install.el | 71 --------------------------------- prelude/prelude-packages.el | 55 ++++++++++++++++++++----- 3 files changed, 46 insertions(+), 81 deletions(-) delete mode 100644 prelude/prelude-auto-install.el diff --git a/init.el b/init.el index d4cd88b..453624f 100644 --- a/init.el +++ b/init.el @@ -61,7 +61,6 @@ ELPA (or MELPA).") (require 'prelude-mode) (require 'prelude-editor) (require 'prelude-global-keybindings) -(require 'prelude-auto-install) ;; OSX specific settings (when (eq system-type 'darwin) diff --git a/prelude/prelude-auto-install.el b/prelude/prelude-auto-install.el deleted file mode 100644 index 6386e33..0000000 --- a/prelude/prelude-auto-install.el +++ /dev/null @@ -1,71 +0,0 @@ -;;; prelude-auto-install.el --- Emacs Prelude: auto-install required packages -;; -;; Copyright (c) 2011-2012 Bozhidar Batsov -;; -;; Author: Bozhidar Batsov -;; URL: http://batsov.com/emacs-prelude -;; Version: 1.0.0 -;; Keywords: convenience - -;; This file is not part of GNU Emacs. - -;;; Commentary: - -;; A simple mechanism to automatically install missing packages. - -;;; License: - -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License -;; as published by the Free Software Foundation; either version 3 -;; of the License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. - -;;; Code: - - -(defmacro prelude-auto-install (ext mode) - `(unless (fboundp ',mode) - (add-to-list 'auto-mode-alist - `(,ext . (lambda () - (package-install ',mode) - (,mode)))))) - -(defvar prelude-auto-install-alist - '(("\\.markdown\\'" . markdown-mode) - ("\\.md\\'" . markdown-mode) - ("\\.haml\\'" . haml-mode) - ("\\.scss\\'" . scss-mode) - ("\\.sass\\'" . sass-mode) - ("\\.groovy\\'" . groovy-mode) - ("\\.yml\\'" . yaml-mode) - ("\\.php\\'" . php-mode) - ("\\.hs\\'" . haskell-mode) - ("\\.less\\'" . less-css-mode) - ("\\.lua\\'" . lua-mode) - ("\\.coffee\\'" . coffee-mode) - ("\\.erl\\'" . erlang-mode) - ("\\.feature\\'" . feature-mode))) - -;; markdown-mode doesn't have autoloads for the auto-mode-alist -;; so we add them manually if it's already installed -(when (package-installed-p 'markdown-mode) - (add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode)) - (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))) - -(dolist (entry prelude-auto-install-alist) - (let ((ext (car entry)) - (mode (cdr entry))) - (prelude-auto-install ext mode))) - -(provide 'prelude-auto-install) -;;; prelude-auto-install.el ends here diff --git a/prelude/prelude-packages.el b/prelude/prelude-packages.el index 9ae6dc1..0e18730 100644 --- a/prelude/prelude-packages.el +++ b/prelude/prelude-packages.el @@ -50,15 +50,52 @@ when (not (package-installed-p p)) do (return nil) finally (return t))) -(unless (prelude-packages-installed-p) - ;; check for new packages (package versions) - (message "%s" "Emacs Prelude is now refreshing its package database...") - (package-refresh-contents) - (message "%s" " done.") - ;; install the missing packages - (dolist (p prelude-packages) - (when (not (package-installed-p p)) - (package-install p)))) +(defun prelude-install-packages () + (unless (prelude-packages-installed-p) + ;; check for new packages (package versions) + (message "%s" "Emacs Prelude is now refreshing its package database...") + (package-refresh-contents) + (message "%s" " done.") + ;; install the missing packages + (dolist (p prelude-packages) + (unless (package-installed-p p) + (package-install p))))) + +(prelude-install-packages) + +(defmacro prelude-auto-install (ext mode) + `(add-to-list 'auto-mode-alist + `(,ext . (lambda () + (package-install ',mode) + (,mode))))) + +(defvar prelude-auto-install-alist + '(("\\.markdown\\'" . markdown-mode) + ("\\.md\\'" . markdown-mode) + ("\\.haml\\'" . haml-mode) + ("\\.scss\\'" . scss-mode) + ("\\.sass\\'" . sass-mode) + ("\\.groovy\\'" . groovy-mode) + ("\\.yml\\'" . yaml-mode) + ("\\.php\\'" . php-mode) + ("\\.hs\\'" . haskell-mode) + ("\\.less\\'" . less-css-mode) + ("\\.lua\\'" . lua-mode) + ("\\.coffee\\'" . coffee-mode) + ("\\.erl\\'" . erlang-mode) + ("\\.feature\\'" . feature-mode))) + +;; markdown-mode doesn't have autoloads for the auto-mode-alist +;; so we add them manually if it's already installed +(when (package-installed-p 'markdown-mode) + (add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode)) + (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))) + +(dolist (entry prelude-auto-install-alist) + (let ((ext (car entry)) + (mode (cdr entry))) + (unless (package-installed-p mode) + (prelude-auto-install ext mode)))) (provide 'prelude-packages) ;;; prelude-packages.el ends here