--- a/elisp/haskell-init.el Wed Nov 11 10:13:23 2015 -0600
+++ b/elisp/haskell-init.el Tue Dec 29 17:55: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 Wed Nov 11 10:13:23 2015 -0600
+++ b/init.el Tue Dec 29 17:55:49 2015 -0600
@@ -103,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
@@ -190,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