init.el
changeset 87 5e8b9d224e3e
parent 85 0b91f7fe5a89
child 88 0ed9a6acb330
--- a/init.el	Thu Oct 01 12:08:34 2015 -0500
+++ b/init.el	Tue Dec 29 17:54:49 2015 -0600
@@ -6,8 +6,6 @@
 
 (setq-default
  gc-cons-threshold 20000000                   ; gc every 20 MB allocated (form flx-ido docs)
- ediff-split-window-function
- 'split-window-horizontally                   ; diff horizontally
  inhibit-splash-screen t                      ; disable splash screen
  truncate-lines t                             ; truncate, not wrap, lines
  indent-tabs-mode nil                         ; only uses spaces for indentation
@@ -37,6 +35,12 @@
 (global-set-key (kbd "C-c g") 'rgrep)         ; grep
 
 
+;;; ediff
+(setq-default
+  ediff-split-window-function 'split-window-horizontally
+  ediff-window-setup-function 'ediff-setup-windows-plain)
+
+
 ;;; Darwin
 (setq is-mac (equal system-type 'darwin))
 (when is-mac
@@ -99,23 +103,29 @@
 
 ;;; ibuffer
 (global-set-key (kbd "C-x C-b") 'ibuffer)             ; better buffer browser
-(setq-default
- ibuffer-show-empty-filter-groups nil
- ibuffer-saved-filter-groups
- '(("default"
-    ("Emacs Lisp" (mode . emacs-lisp-mode))
-    ("Haskell" (mode . haskell-mode))
-    ("Cabal" (mode . haskell-cabal-mode))
-    ("Python" (mode . python-mode))
-    ("Jython" (mode . jython-mode))
-    ("Clojure" (mode . clojure-mode))
-    ("Markup" (mode . sgml-mode))
-    ("HTML" (mode . html-mode))
-    ("CSS" (mode . css-mode))
-    ("C++" (mode . c++-mode)))))
-(add-hook
- 'ibuffer-mode-hook
- (lambda () (ibuffer-switch-to-saved-filter-groups "default")))
+(require 'ibuffer)
+(require 'ibuf-ext)
+(defun ibuffer-generate-filter-groups-by-major-mode ()
+  (flet
+      ((mode-group
+        (mode)
+        (let ((mode-title
+               (capitalize (car (split-string (symbol-name mode) "-" t)))))
+          (cons mode-title `((mode . ,mode)))))
+       (buffer-modes
+        ()
+        (flet ((buffer-mode (buffer) (buffer-local-value 'major-mode buffer)))
+          (ibuffer-remove-duplicates (remq nil (mapcar 'buffer-mode (buffer-list)))))))
+    (mapcar 'mode-group (buffer-modes))))
+
+(defun ibuffer-major-mode-group-hook ()
+  (interactive)
+  (setq ibuffer-filter-groups (ibuffer-generate-filter-groups-by-major-mode))
+  (ibuffer-update nil t)
+  (message "ibuffer-major-mode: groups set"))
+
+(setq-default ibuffer-show-empty-filter-groups nil)
+(add-hook 'ibuffer-hook (lambda () (ibuffer-major-mode-group-hook)))
 
 
 ;;; shell
@@ -186,10 +196,10 @@
 
 
 ;;; yasnippets
-(with-eval-after-load 'yasnippet
-  (setq yas-snippet-dirs (remq 'yas-installed-snippets-dir yas-snippet-dirs)))
-(setq-default yas-prompt-functions '(yas-ido-prompt yas-dropdown-prompt)) ; use ido for multiple snippets
-(yas-global-mode t)
+;; (with-eval-after-load 'yasnippet
+;;   (setq yas-snippet-dirs (remq 'yas-installed-snippets-dir yas-snippet-dirs)))
+;; (setq-default yas-prompt-functions '(yas-ido-prompt yas-dropdown-prompt)) ; use ido for multiple snippets
+;; (yas-global-mode t)
 
 
 ;;; markdown-mode
@@ -217,6 +227,7 @@
    js2-mode-hook
    html-mode-hook
    css-mode-hook
+   sass-mode-hook
    clojure-mode-hook
    emacs-lisp-mode-hook
    conf-mode-hook