diff --git a/README.md b/README.md index ea693eb..806e572 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,11 @@ ``` - _____ ____ _ _ -| ____|_ __ ___ __ _ ___ ___ | _ \ _ __ ___| |_ _ __| | ___ -| _| | '_ ` _ \ / _` |/ __/ __| | |_) | '__/ _ \ | | | |/ _` |/ _ \ -| |___| | | | | | (_| | (__\__ \ | __/| | | __/ | |_| | (_| | __/ -|_____|_| |_| |_|\__,_|\___|___/ |_| |_| \___|_|\__,_|\__,_|\___| + ____ _ _ +| _ \ _ __ ___| |_ _ __| | ___ +| |_) | '__/ _ \ | | | |/ _` |/ _ \ +| __/| | | __/ | |_| | (_| | __/ +|_| |_| \___|_|\__,_|\__,_|\___| ``` -## Prelude - Emacs is probably the best text editor in the world. However, the process of coming up with a useful Emacs configuration is long and difficult. It's this process that separates you from truly taking @@ -38,7 +36,18 @@ You can now power up your Emacs, sit back and enjoy Prelude. ## Would you like to know more? -Check out the [Prelude's project page](http://batsov.com/prelude). +Check out the [Prelude's project page](http://batsov.com/prelude) for +all the gory details. + +If you're looking for more info on Emacs in general - consult +[WikEmacs](http://wikemacs.org). + +## More goodies + +The [Prelude Modules](https://github.com/bbatsov/prelude-modules) +project contains a lot of additional packages for Prelude +(install-able via the `package-list-packages` command) - enhanced programming +mode configs, latex config, erc config, etc. ## Known issues @@ -55,11 +64,7 @@ development of Emacs Prelude. ## Bugs & Improvements Bug reports and suggestions for improvements are always -welcome. github pull requests are even better! :-) - -I'd like to include a nice variety of Emacs 24 themes into Prelude - -so if you've developed (or simply found) one - give me a shout and -I'll take a look at it. +welcome. GitHub pull requests are even better! :-) Cheers,
Bozhidar diff --git a/init.el b/init.el index f275cab..453624f 100644 --- a/init.el +++ b/init.el @@ -1,9 +1,9 @@ -;;; init.el --- Emacs Prelude: configuration entry point. +;;; init.el --- Prelude's configuration entry point. ;; ;; Copyright (c) 2011 Bozhidar Batsov ;; -;; Author: Bozhidar Batsov -;; URL: http://batsov.com/emacs-prelude +;; Author: Bozhidar Batsov +;; URL: http://batsov.com/prelude ;; Version: 1.0.0 ;; Keywords: convenience @@ -32,8 +32,8 @@ ;; Boston, MA 02110-1301, USA. ;;; Code: -(message "Emacs Prelude is powering up... Be patient, Master %s!" - (getenv "USER")) + +(message "Prelude is powering up... Be patient, Master %s!" (getenv "USER")) (defvar prelude-dir (file-name-directory load-file-name) "The root dir of the Emacs Prelude distribution.") @@ -44,9 +44,15 @@ avoid modifying the configuration there.") "Users of Emacs Prelude are encouraged to keep their personal configuration changes in this directory. All Emacs Lisp files there are loaded automatically by Prelude.") +(defvar prelude-vendor-dir (concat prelude-dir "vendor/") + "This directory house Emacs Lisp packages that are not yet available in +ELPA (or MELPA).") +(defvar prelude-snippets-dir (concat prelude-dir "snippets/") + "This folder houses addition yasnippet bundles distributed with Prelude.") ;; add Prelude's directories to Emacs's `load-path' (add-to-list 'load-path prelude-modules-dir) +(add-to-list 'load-path prelude-vendor-dir) ;; the core stuff (require 'prelude-packages) @@ -56,6 +62,7 @@ by Prelude.") (require 'prelude-editor) (require 'prelude-global-keybindings) +;; OSX specific settings (when (eq system-type 'darwin) (require 'prelude-osx)) @@ -66,7 +73,6 @@ by Prelude.") (when (file-exists-p prelude-personal-dir) (mapc 'load (directory-files prelude-personal-dir 't "^[^#].*el$"))) -(message "Emacs Prelude is ready to do thy bidding, Master %s!" - (getenv "USER")) +(message "Prelude is ready to do thy bidding, Master %s!" (getenv "USER")) ;;; init.el ends here diff --git a/prelude/prelude-editor.el b/prelude/prelude-editor.el index 57b4208..9441cb9 100644 --- a/prelude/prelude-editor.el +++ b/prelude/prelude-editor.el @@ -74,10 +74,8 @@ try-complete-lisp-symbol-partially try-complete-lisp-symbol)) -;; smart indenting and pairing for all +;; smart pairing for all (electric-pair-mode t) -(electric-indent-mode t) -(electric-layout-mode t) ;; meaningful names for buffers with the same name (require 'uniquify) @@ -118,7 +116,7 @@ ;; use shift + arrow keys to switch between visible buffers (require 'windmove) -(windmove-default-keybindings 'super) +(windmove-default-keybindings) ;; automatically save buffers associated with files on buffer switch ;; and on windows switch @@ -135,8 +133,8 @@ (defadvice windmove-right (before other-window-now activate) (when buffer-file-name (save-buffer))) -;; show-paren-mode: subtle highlighting of matching parens -(show-paren-mode t) +;; show-paren-mode: subtle highlighting of matching parens (global-mode) +(show-paren-mode +1) (setq show-paren-style 'parenthesis) ;; highlight the current line @@ -197,6 +195,7 @@ ;; load yasnippet (require 'yasnippet) +(add-to-list 'yas/snippet-dirs prelude-snippets-dir) (yas/global-mode 1) ;; projectile is a project management mode @@ -220,6 +219,11 @@ ;; otherwise fallback to helm-mini (helm-mini))) +;; shorter aliases for ack-and-a-half commands +(defalias 'ack 'ack-and-a-half) +(defalias 'ack-same 'ack-and-a-half-same) +(defalias 'ack-find-file 'ack-and-a-half-find-file) +(defalias 'ack-find-file-same 'ack-and-a-half-find-file-same) ;; dired - reuse current buffer by pressing 'a' (put 'dired-find-alternate-file 'disabled nil) diff --git a/prelude/prelude-mode.el b/prelude/prelude-mode.el index e583bb8..a8d113f 100644 --- a/prelude/prelude-mode.el +++ b/prelude/prelude-mode.el @@ -42,7 +42,6 @@ (define-key map [(control shift down)] 'prelude-move-line-down) (define-key map (kbd "C-c n") 'prelude-cleanup-buffer) (define-key map (kbd "C-c f") 'prelude-recentf-ido-find-file) - (define-key map (kbd "C-c i") 'prelude-ido-goto-symbol) (define-key map (kbd "C-M-\\") 'prelude-indent-region-or-buffer) (define-key map (kbd "C-c u") 'prelude-view-url) (define-key map (kbd "C-c e") 'prelude-eval-and-replace) @@ -82,7 +81,6 @@ ("Navigation" ["Enable arrow keys" prelude-restore-arrow-keys] - ["Go to symbol" prelude-ido-goto-symbol] ["Helm" helm-prelude]) ("Windows" @@ -104,7 +102,7 @@ (define-minor-mode prelude-mode "Minor mode to consolidate Emacs Prelude extensions." - :lighter "Prelude" + :lighter " Prelude" :keymap prelude-mode-map (if prelude-mode ;; on start diff --git a/prelude/prelude-osx.el b/prelude/prelude-osx.el index 99b6c0b..4074ae2 100644 --- a/prelude/prelude-osx.el +++ b/prelude/prelude-osx.el @@ -1,6 +1,7 @@ ;; On OS X Emacs doesn't use the shell PATH if it's not started from ;; the shell. If you're using homebrew modifying the PATH is essential. (push "/usr/local/bin" exec-path) +(setenv "PATH" (concat "/usr/local/bin:" (getenv "PATH"))) ;; Emacs users obviously have little need for Command and Option keys, ;; but they do need Meta and Super diff --git a/prelude/prelude-packages.el b/prelude/prelude-packages.el index 54656de..0e18730 100644 --- a/prelude/prelude-packages.el +++ b/prelude/prelude-packages.el @@ -41,8 +41,8 @@ (setq url-http-attempt-keepalives nil) (defvar prelude-packages - '(melpa expand-region gist helm helm-projectile magit magithub - rainbow-mode volatile-highlights yasnippet zenburn-theme) + '(ack-and-a-half expand-region gist helm helm-projectile magit magithub melpa + rainbow-mode volatile-highlights yasnippet zenburn-theme) "A list of packages to ensure are installed at launch.") (defun prelude-packages-installed-p () @@ -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