Lotsa changes
authorJoerg Jaspert <joerg@debian.org>
Sun, 1 Jun 2014 21:17:19 +0000 (23:17 +0200)
committerJoerg Jaspert <joerg@debian.org>
Sun, 1 Jun 2014 21:17:19 +0000 (23:17 +0200)
.emacs.d/config/emacs.org

index e031081..9b2736c 100644 (file)
@@ -79,44 +79,32 @@ https://github.com/jwiegley/use-package
 *** elpa
 The Emacs Lisp Package Archive contains things I want.
 #+BEGIN_SRC emacs-lisp :tangle yes
 *** elpa
 The Emacs Lisp Package Archive contains things I want.
 #+BEGIN_SRC emacs-lisp :tangle yes
-  (when (> emacs-major-version 23)
-    (require 'package)
-    (setq package-user-dir (expand-file-name "elpa" jj-elisp-dir))
-    (package-initialize)
-    (add-to-list 'package-archives '("marmalade"    . "http://marmalade-repo.org/packages/"))
-    (add-to-list 'package-archives '("melpa-stable" . "http://melpa-stable.milkbox.net/packages/"))
-    (add-to-list 'package-archives '("melpa"        . "http://melpa.milkbox.net/packages/"))
-    (add-to-list 'package-archives '("elpy"         . "http://jorgenschaefer.github.io/packages/"))
-    (add-to-list 'package-archives '("gnu"          . "http://elpa.gnu.org/packages/"))
-    )
+(when (> emacs-major-version 23)
+  (require 'package)
+  (setq package-user-dir (expand-file-name "elpa" jj-elisp-dir))
+  (dolist (source '(("melpa" . "http://melpa.milkbox.net/packages/")
+                    ("melpa-stable" . "http://melpa-stable.milkbox.net/packages/")
+                    ("marmalade" . "http://marmalade-repo.org/packages/")
+                    ("elpy"         . "http://jorgenschaefer.github.io/packages/")
+                    ("elpa" . "http://tromey.com/elpa/")))
+    (add-to-list 'package-archives source t))
+  (package-initialize))
 #+END_SRC
 
 ** Path settings
 *** Load path
 We need to define the load-path. As I have lots of things I add
 #+END_SRC
 
 ** Path settings
 *** Load path
 We need to define the load-path. As I have lots of things I add
-locally, its getting a few entries. I only leave out org-mode here, as
-that is already done in =init.el=.
-
-I also disliked the repeated /add-to-list/ lines, so I now just have
-one variable and go over that in a loop.
+locally, its getting a few entries. I disliked the repeated
+/add-to-list/ lines, so I now just take all subdirectories of
+jj-elisp-dir and add them.
 #+BEGIN_SRC emacs-lisp :tangle yes
 #+BEGIN_SRC emacs-lisp :tangle yes
-(defvar jj-elisp-subdirs '(local gnus icicle org/contrib tiny mo-git-blame cedet
-                           cedet/eieio ecb jdee/lisp sunrise multiple-cursors
-                           auto-complete yasnippet magit mmm emms/lisp
-                           elpy find-file-in-project fuzzy idomenu
-                           popup git-rebase-mode git-commit-mode)
-  "List of subdirectories in jj-elisp-dir to add to load-path")
-
-(let (dirval)
-  (dolist (dirval jj-elisp-subdirs)
-    (let ((name (expand-file-name (symbol-name dirval) jj-elisp-dir)))
-      (when (file-exists-p name)
-          (add-to-list 'load-path name)))))
-;; For older emacsen we need an extra directory, which should be at
-;; THE END of the load path
-(when (version< emacs-version "24")
-  (add-to-list 'load-path (expand-file-name "emacs23" jj-elisp-dir) t))
-
+(dolist
+    (project (directory-files jj-elisp-dir t "\\w+"))
+  (when (file-directory-p project)
+    (if (string= project "emacs23")
+        (when (version< emacs-version "24")
+          (add-to-list 'load-path project))
+      (add-to-list 'load-path project))))
 #+END_SRC
 
 *** Info path
 #+END_SRC
 
 *** Info path
@@ -155,8 +143,10 @@ Usually I want the lines to break at 72 characters.
 #+END_SRC
 
 And it is nice to have a final newline in files.
 #+END_SRC
 
 And it is nice to have a final newline in files.
+(Now off, ethan-wspace is doing it better).
 #+BEGIN_SRC emacs-lisp :tangle yes
 #+BEGIN_SRC emacs-lisp :tangle yes
-(setq require-final-newline t)
+(setq require-final-newline nil)
+(setq mode-require-final-newline nil)
 #+END_SRC
 
 After I typed 300 characters or took a break for more than a minute it
 #+END_SRC
 
 After I typed 300 characters or took a break for more than a minute it
@@ -271,9 +261,8 @@ I do not want my cursor to blink.
 I don't want to see the menu-bar, tool-bar or scrollbar.
 #+BEGIN_SRC emacs-lisp :tangle yes
 (when window-system
 I don't want to see the menu-bar, tool-bar or scrollbar.
 #+BEGIN_SRC emacs-lisp :tangle yes
 (when window-system
-  (menu-bar-mode -1)
-  (tool-bar-mode -1)
-  (set-scroll-bar-mode nil))
+  (dolist (mode '(menu-bar-mode tool-bar-mode scroll-bar-mode))
+  (when (fboundp mode) (funcall mode -1))))
 #+END_SRC
 **** When using emacs in daemon mode
 Emacs has a very nice mode where it detaches itself and runs as daemon -
 #+END_SRC
 **** When using emacs in daemon mode
 Emacs has a very nice mode where it detaches itself and runs as daemon -
@@ -424,29 +413,30 @@ Basic settings for emacs integrated shell
             (delete-region (match-beginning 0) (match-end 0))
             (goto-char beg)
             (insert "spawn "))))
             (delete-region (match-beginning 0) (match-end 0))
             (goto-char beg)
             (insert "spawn "))))
-
       (add-hook 'eshell-expand-input-functions 'eshell-spawn-external-command)
       (add-hook 'eshell-expand-input-functions 'eshell-spawn-external-command)
-
       (eval-after-load "em-unix"
         '(progn
            (unintern 'eshell/su)
            (unintern 'eshell/sudo))))
       (eval-after-load "em-unix"
         '(progn
            (unintern 'eshell/su)
            (unintern 'eshell/sudo))))
-
     (add-hook 'eshell-first-time-mode-hook 'eshell-initialize)
 
     (add-hook 'eshell-first-time-mode-hook 'eshell-initialize)
 
-    (setq eshell-cmpl-cycle-completions nil
-          eshell-save-history-on-exit t
-          eshell-cmpl-dir-ignore "\\`\\(\\.\\.?\\|CVS\\|\\.svn\\|\\.git\\)/\\'")
     )
   :config
   (progn
     (require 'em-cmpl)
     (require 'em-prompt)
     (require 'em-term)
     )
   :config
   (progn
     (require 'em-cmpl)
     (require 'em-prompt)
     (require 'em-term)
-
+    (use-package f
+      :ensure f)
+    (setq eshell-cmpl-cycle-completions nil
+          eshell-save-history-on-exit t
+          eshell-cmpl-dir-ignore "\\`\\(\\.\\.?\\|CVS\\|\\.svn\\|\\.git\\)/\\'")
     (setenv "PAGER" "cat")
     (setenv "PAGER" "cat")
-    (add-to-list 'eshell-visual-commands "ssh")
-    (add-to-list 'eshell-visual-commands "tail")
+    (setq eshell-visual-commands
+          '("less" "tmux" "htop" "top" "bash" "zsh" "tail"))
+    (setq eshell-visual-subcommands
+          '(("git" "log" "l" "diff" "show")))
+
     (add-to-list 'eshell-command-completions-alist
                  '("gunzip" "gz\\'"))
     (add-to-list 'eshell-command-completions-alist
     (add-to-list 'eshell-command-completions-alist
                  '("gunzip" "gz\\'"))
     (add-to-list 'eshell-command-completions-alist
@@ -457,7 +447,34 @@ Basic settings for emacs integrated shell
               '(lambda () (define-key eshell-mode-map "\C-a" 'eshell-bol)))
     (add-hook 'eshell-preoutput-filter-functions
               'ansi-color-filter-apply)
               '(lambda () (define-key eshell-mode-map "\C-a" 'eshell-bol)))
     (add-hook 'eshell-preoutput-filter-functions
               'ansi-color-filter-apply)
-    ))
+    ;; Prompt with a bit of help from http://www.emacswiki.org/emacs/EshellPrompt
+
+    (defmacro with-face (str &rest properties)
+      `(propertize ,str 'face (list ,@properties)))
+
+    (defun eshell/abbr-pwd ()
+      (let ((home (getenv "HOME"))
+            (path (eshell/pwd)))
+        (cond
+         ((string-equal home path) "~")
+         ((f-ancestor-of? home path) (concat "~/" (f-relative path home)))
+         (path))))
+
+    (defun eshell/my-prompt ()
+      (let ((header-bg "#161616"))
+        (concat
+         (with-face user-login-name :foreground "cyan")
+         (with-face (concat "@" hostname) :foreground "white")
+         " "
+         (with-face (eshell/abbr-pwd) :foreground "#009900")
+         (if (= (user-uid) 0)
+             (with-face "#" :foreground "red")
+           (with-face "$" :foreground "#69b7f0"))
+         " ")))
+
+    (setq eshell-prompt-function 'eshell/my-prompt)
+    (setq eshell-highlight-prompt nil)
+    (setq eshell-prompt-regexp "^[^#$\n]+[#$] ")))
 #+END_SRC
 
 *** Isearch related
 #+END_SRC
 
 *** Isearch related
@@ -535,7 +552,8 @@ hilighting them makes it obvious where they are.
 *** Kill other buffers
 While many editors allow you to close "all the other files, not the one
 you are in", emacs doesn't have this... Except, now it will.
 *** Kill other buffers
 While many editors allow you to close "all the other files, not the one
 you are in", emacs doesn't have this... Except, now it will.
-#+BEGIN_SRC emacs-lisp :tangle yes
+(Update 30.05.2014: Not used ever, deactivated)
+#+BEGIN_SRC emacs-lisp :tangle no
 (bind-key "C-c k" 'prelude-kill-other-buffers)
 #+END_SRC
 *** Scrolling
 (bind-key "C-c k" 'prelude-kill-other-buffers)
 #+END_SRC
 *** Scrolling
@@ -648,10 +666,18 @@ AKA transpose lines.
 
 "Pull" lines up, join them
 #+BEGIN_SRC emacs-lisp :tangle yes
 
 "Pull" lines up, join them
 #+BEGIN_SRC emacs-lisp :tangle yes
-(bind-key "M-j"
-          (lambda ()
-            (interactive)
-            (join-line -1)))
+(defun join-line-or-lines-in-region ()
+  "Join this line or the lines in the selected region.
+Joins single lines in reverse order to the default, ie. pulls the next one up."
+  (interactive)
+  (cond ((region-active-p)
+         (let ((min (line-number-at-pos (region-beginning))))
+           (goto-char (region-end))
+           (while (> (line-number-at-pos) min)
+             (join-line ))))
+        (t (let ((current-prefix-arg '(4)))
+             (call-interactively 'join-line)))))
+(bind-key "M-j" 'join-line-or-lines-in-region)
 #+END_SRC
 
 When I press Enter I almost always want to go to the right indentation on the next line.
 #+END_SRC
 
 When I press Enter I almost always want to go to the right indentation on the next line.
@@ -764,6 +790,11 @@ Align code
 #+BEGIN_SRC emacs-lisp :tangle yes
 (bind-key "H-a" 'align-code)
 #+END_SRC
 #+BEGIN_SRC emacs-lisp :tangle yes
 (bind-key "H-a" 'align-code)
 #+END_SRC
+
+Insert date
+#+BEGIN_SRC emacs-lisp :tangle yes
+(bind-key "C-c d" 'insert-date)
+#+END_SRC
 **** Overwrite mode
 Usually you can press the *Ins*ert key, to get into overwrite mode. I
 don't like that, have broken much with it and so just forbid it by
 **** Overwrite mode
 Usually you can press the *Ins*ert key, to get into overwrite mode. I
 don't like that, have broken much with it and so just forbid it by
@@ -831,6 +862,7 @@ From https://raw.github.com/qdot/conf_emacs/master/emacs_conf.org
 
 #+BEGIN_SRC emacs-lisp :tangle yes
 (setq-default indicate-empty-lines t)
 
 #+BEGIN_SRC emacs-lisp :tangle yes
 (setq-default indicate-empty-lines t)
+(setq sentence-end-double-space nil)
 #+END_SRC
 
 Hilight annotations in comments, like FIXME/TODO/...
 #+END_SRC
 
 Hilight annotations in comments, like FIXME/TODO/...
@@ -957,6 +989,18 @@ Use H-w to switch windows
   :commands ace-window
   :bind ("H-w" . ace-window))
 #+END_SRC
   :commands ace-window
   :bind ("H-w" . ace-window))
 #+END_SRC
+** anzu
+[2014-06-01 Sun 23:02]
+#+BEGIN_SRC emacs-lisp :tangle yes
+(use-package anzu
+  :ensure anzu
+  :diminish anzu-mode
+  :init
+  (progn
+    (global-anzu-mode 1)
+    (setq anzu-search-threshold 1000)
+    (set-face-attribute 'anzu-mode-line nil :foreground "yellow" :weight 'bold)))
+#+END_SRC
 ** ascii
 [2014-05-21 Wed 00:33]
 #+BEGIN_SRC emacs-lisp :tangle yes
 ** ascii
 [2014-05-21 Wed 00:33]
 #+BEGIN_SRC emacs-lisp :tangle yes
@@ -1069,6 +1113,7 @@ with it. Not to have to revert buffers myself
   :init
   (progn
     (setq global-auto-revert-mode t)
   :init
   (progn
     (setq global-auto-revert-mode t)
+    (setq global-auto-revert-non-file-buffers t)
     (global-auto-revert-mode)))
 #+END_SRC
 
     (global-auto-revert-mode)))
 #+END_SRC
 
@@ -1246,6 +1291,9 @@ dired-single to the rescue.
         (use-package runner
           :ensure runner)
 
         (use-package runner
           :ensure runner)
 
+        (use-package dired+
+          :ensure dired+)
+
         (use-package dired-single
           :ensure dired-single
           :init
         (use-package dired-single
           :ensure dired-single
           :init
@@ -1538,6 +1586,26 @@ EMMS is the Emacs Multimedia System.
                    "m3u" "ogg" "flac" "mp3" "wav" "mod" "au" "aiff"))))
 (emms-player-set emms-player-mpd 'regex emms-player-mpd-supported-regexp)
 
                    "m3u" "ogg" "flac" "mp3" "wav" "mod" "au" "aiff"))))
 (emms-player-set emms-player-mpd 'regex emms-player-mpd-supported-regexp)
 
+#+END_SRC
+** ethan-wspace
+[2014-06-01 Sun 15:00]
+Proper whitespace handling
+#+BEGIN_SRC emacs-lisp :tangle yes
+(use-package ethan-wspace
+  :ensure ethan-wspace
+  :diminish (ethan-wspace-mode . "ew")
+  :init
+  (global-ethan-wspace-mode 1))
+
+
+
+#+END_SRC
+** expand-region
+[2014-06-01 Sun 15:16]
+#+BEGIN_SRC emacs-lisp :tangle yes
+(use-package expand-region
+  :ensure expand-region
+  :bind ("C-M-+" . er/expand-region))
 #+END_SRC
 ** filladapt
 [2013-05-02 Thu 00:04]
 #+END_SRC
 ** filladapt
 [2013-05-02 Thu 00:04]
@@ -1555,8 +1623,21 @@ understand for me.
 #+BEGIN_SRC emacs-lisp :tangle yes
 (use-package flycheck
   :ensure flycheck
 #+BEGIN_SRC emacs-lisp :tangle yes
 (use-package flycheck
   :ensure flycheck
+  :bind (("M-n" . next-error)
+         ("M-p" . previous-error))
   :init
   :init
-  (add-hook 'after-init-hook #'global-flycheck-mode))
+  (progn
+    (add-hook 'find-file-hook
+          (lambda ()
+            (when (not (equal 'emacs-lisp-mode major-mode))
+              (flycheck-mode)))))
+  :config
+  (progn
+    (use-package flycheck-color-mode-line
+      :ensure flycheck-color-mode-line)
+    (setq flycheck-highlighting-mode nil)
+    (add-hook 'flycheck-mode-hook 'flycheck-color-mode-line-mode)
+    ))
 #+END_SRC
 ** font-lock
 Obviously emacs can do syntax hilighting. For more things than you ever
 #+END_SRC
 ** font-lock
 Obviously emacs can do syntax hilighting. For more things than you ever
@@ -1616,7 +1697,7 @@ And I want to have it everywhere.
 Most of my gnus config is in an own file, [[file:gnus.org][gnus.org]], here I only have
 what I want every emacs to know.
 #+BEGIN_SRC emacs-lisp :tangle yes
 Most of my gnus config is in an own file, [[file:gnus.org][gnus.org]], here I only have
 what I want every emacs to know.
 #+BEGIN_SRC emacs-lisp :tangle yes
-(bind-key* "\M-n" 'gnus) ; Start gnus with M-n
+(bind-key "C-c g" 'gnus) ; Start gnus with M-n
 (after 'gnus
   (jj-init-theme)
 )
 (after 'gnus
   (jj-init-theme)
 )
@@ -2040,6 +2121,17 @@ then I like it nice too...
 #+BEGIN_SRC emacs-lisp :tangle yes
 (bind-key "TAB" 'lisp-complete-symbol read-expression-map)
 
 #+BEGIN_SRC emacs-lisp :tangle yes
 (bind-key "TAB" 'lisp-complete-symbol read-expression-map)
 
+(defun remove-elc-on-save ()
+  "If you're saving an elisp file, likely the .elc is no longer valid."
+  (make-local-variable 'after-save-hook)
+  (add-hook 'after-save-hook
+            (lambda ()
+              (if (file-exists-p (concat buffer-file-name "c"))
+                  (delete-file (concat buffer-file-name "c"))))))
+
+(add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode)
+(add-hook 'emacs-lisp-mode-hook 'remove-elc-on-save)
+
 (use-package paredit
   :ensure paredit
   :diminish paredit-mode " π")
 (use-package paredit
   :ensure paredit
   :diminish paredit-mode " π")
@@ -2084,14 +2176,6 @@ magit is a mode for interacting with git.
     (use-package magit-blame
       :commands magit-blame-mode)
 
     (use-package magit-blame
       :commands magit-blame-mode)
 
-    (use-package magit-filenotify
-      :ensure magit-filenotify)
-
-    (use-package magit-svn
-      :ensure magit-svn
-      :commands (magit-svn-mode
-                 turn-on-magit-svn))
-
     (add-hook 'magit-mode-hook 'hl-line-mode)
     (defun magit-status-with-prefix ()
       (interactive)
     (add-hook 'magit-mode-hook 'hl-line-mode)
     (defun magit-status-with-prefix ()
       (interactive)
@@ -2109,7 +2193,27 @@ magit is a mode for interacting with git.
               #'(lambda ()
                   (set-fill-column 72)
                   (flyspell-mode)))
               #'(lambda ()
                   (set-fill-column 72)
                   (flyspell-mode)))
-    ))
+
+    (use-package magit-filenotify
+      :ensure magit-filenotify
+      :diminish (magit-filenotify-mode "MF")
+      :commands (magit-filenotify-mode)
+      :init
+      (progn
+        (add-hook 'magit-mode-hook 'magit-filenotify-mode))
+      )
+
+    (use-package magit-svn
+      :ensure magit-svn
+      :commands (magit-svn-mode
+                 turn-on-magit-svn))
+
+    (use-package magit-find-file
+      :ensure magit-find-file
+      :defer t
+      :init
+      (progn
+        (bind-key "C-x C-f" 'magit-find-file-completing-read magit-mode-map)))))
 #+END_SRC
 ** markdown-mode
 [2014-05-20 Tue 23:04]
 #+END_SRC
 ** markdown-mode
 [2014-05-20 Tue 23:04]
@@ -2219,6 +2323,10 @@ Use multiple cursors mode. See [[http://emacsrocks.com/e13.html][Emacs Rocks! mu
 (use-package multiple-cursors
   :ensure multiple-cursors
   :defer t
 (use-package multiple-cursors
   :ensure multiple-cursors
   :defer t
+  :commands (mc/remove-fake-cursors
+             mc/create-fake-cursor-at-point
+             mc/pop-state-from-overlay
+             mc/maybe-multiple-cursors-mode)
   :bind (("C-S-c C-S-c" . mc/edit-lines)
          ("C->"     . mc/mark-next-like-this)
          ("C-<"     . mc/mark-previous-like-this)
   :bind (("C-S-c C-S-c" . mc/edit-lines)
          ("C->"     . mc/mark-next-like-this)
          ("C-<"     . mc/mark-previous-like-this)
@@ -2443,7 +2551,7 @@ And now a largish set of keybindings...
 #+BEGIN_SRC emacs-lisp :tangle yes :tangle yes
 (bind-key "C-c l" 'org-store-link)
 (bind-key "C-c a" 'org-agenda)
 #+BEGIN_SRC emacs-lisp :tangle yes :tangle yes
 (bind-key "C-c l" 'org-store-link)
 (bind-key "C-c a" 'org-agenda)
-(bind-key "C-c b" 'org-iswitchb)
+;(bind-key "C-c b" 'org-iswitchb)
 (define-key mode-specific-map [?a] 'org-agenda)
 
 (bind-key "<f12>"     'org-agenda)
 (define-key mode-specific-map [?a] 'org-agenda)
 
 (bind-key "<f12>"     'org-agenda)
@@ -3815,12 +3923,7 @@ them. I don't need much actually, but these things are nice to have.
 (autoload 'tinycomment-indent-for-comment      "tinycomment" "" t)
 (autoload 'tinyeat-forward-preserve            "tinyeat" "" t)
 (autoload 'tinyeat-backward-preserve           "tinyeat" "" t)
 (autoload 'tinycomment-indent-for-comment      "tinycomment" "" t)
 (autoload 'tinyeat-forward-preserve            "tinyeat" "" t)
 (autoload 'tinyeat-backward-preserve           "tinyeat" "" t)
-(autoload 'tinyeat-delete-paragraph            "tinyeat" "" t)
-(autoload 'tinyeat-kill-line                   "tinyeat" "" t)
-(autoload 'tinyeat-zap-line                    "tinyeat" "" t)
 (autoload 'tinyeat-kill-line-backward          "tinyeat" "" t)
 (autoload 'tinyeat-kill-line-backward          "tinyeat" "" t)
-(autoload 'tinyeat-kill-buffer-lines-point-max "tinyeat" "" t)
-(autoload 'tinyeat-kill-buffer-lines-point-min "tinyeat" "" t)
 #+END_SRC
 *** Keyboard changes for tiny-tools
 #+BEGIN_SRC emacs-lisp :tangle yes
 #+END_SRC
 *** Keyboard changes for tiny-tools
 #+BEGIN_SRC emacs-lisp :tangle yes
@@ -3906,6 +4009,18 @@ operating system or location info.
 (setq url-mime-language-string "de,en")
 (setq url-privacy-level (quote (email os lastloc)))
 #+END_SRC
 (setq url-mime-language-string "de,en")
 (setq url-privacy-level (quote (email os lastloc)))
 #+END_SRC
+** visual-regexp
+[2014-06-01 Sun 21:38]
+visual-regexp for Emacs is like replace-regexp, but with live visual
+feedback directly in the buffer
+#+BEGIN_SRC emacs-lisp :tangle yes
+(use-package visual-regexp
+  :ensure visual-regexp
+  :bind (("C-M-%" . vr/replace)
+         ("M-%" . vr/query-replace)
+         ("C-c m" . vr/mc-mark))
+  :defer t)
+#+END_SRC
 ** volatile highlights
 [2013-04-21 So 20:31]
 VolatileHighlights highlights changes to the buffer caused by commands
 ** volatile highlights
 [2013-04-21 So 20:31]
 VolatileHighlights highlights changes to the buffer caused by commands
@@ -3923,21 +4038,48 @@ your operation actually changed in the buffer.
 This highlights some /weaselwords/, a mode to /aid in finding common
 writing problems/...
 [2013-04-27 Sa 23:29]
 This highlights some /weaselwords/, a mode to /aid in finding common
 writing problems/...
 [2013-04-27 Sa 23:29]
-#+BEGIN_SRC emacs-lisp :tangle yes
+#+BEGIN_SRC emacs-lisp :tangle no
 (use-package writegood-mode
   :ensure writegood-mode
   :defer t
   :init
   (bind-key "C-c g" 'writegood-mode))
 #+END_SRC
 (use-package writegood-mode
   :ensure writegood-mode
   :defer t
   :init
   (bind-key "C-c g" 'writegood-mode))
 #+END_SRC
+** web-mode
+[2014-06-01 Sun 22:48]
+#+BEGIN_SRC emacs-lisp :tangle yes
+(use-package web-mode
+  :ensure web-mode
+  :mode (("\\.phtml\\'" . web-mode)
+         ("\\.tpl\\.php\\'" . web-mode)
+         ("\\.jsp\\'" . web-mode)
+         ("\\.as[cp]x\\'" . web-mode)
+         ("\\.erb\\'" . web-mode)
+         ("\\.mustache\\'" . web-mode)
+         ("\\.html\\'" . web-mode)
+         ("\\.djhtml\\'" . web-mode))
+  :init
+  (progn
+    (add-hook 'web-mode-hook
+              (lambda ()
+                (setq web-mode-markup-indent-offset 2)
+                (setq web-mode-css-indent-offset 2)
+                (setq web-mode-code-indent-offset 2)
+                (setq web-mode-enable-css-colorization t)
+                (setq web-mode-enable-comment-keywords t)
+                (setq web-mode-enable-current-element-highlight t)))))
+
+#+END_SRC
 ** yafolding
 Yet another folding extension for the Emacs editor. Unlike many
 others, this one works by just using the existing indentation of the
 file, so basically works in every halfway structured file.
 #+BEGIN_SRC emacs-lisp :tangle yes
 ** yafolding
 Yet another folding extension for the Emacs editor. Unlike many
 others, this one works by just using the existing indentation of the
 file, so basically works in every halfway structured file.
 #+BEGIN_SRC emacs-lisp :tangle yes
-(bind-key "C-#" 'yafolding)
-;;(define-key global-map (kbd "C-c C-f") 'yafolding-toggle-all)
-(bind-key "C-c C-f" 'yafolding-toggle-all-by-current-level)
+(use-package yafolding
+  :bind (("C-#" . yafolding)
+         ("C-c C-f" . yafolding-toggle-all-by-current-level))
+  :commands (yafolding yafolding-toggle-all-by-current-level)
+  )
 #+END_SRC
 ** yaml-mode
 [2013-04-28 So 01:13]
 #+END_SRC
 ** yaml-mode
 [2013-04-28 So 01:13]