Created dynamic major mode grouping for ibuffer.
--- a/elisp/haskell-init.el Thu Oct 01 12:08:34 2015 -0500
+++ b/elisp/haskell-init.el Tue Dec 29 17:54:49 2015 -0600
@@ -50,7 +50,6 @@
(flycheck-clear t)
(imenu-add-menubar-index)
(haskell-indentation-mode t)
- (haskell-indentation-enable-show-indentations)
(projectile-mode t)
(stack-mode t)
(subword-mode t)
--- 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