Emacs - bindings of evil with org mode and lispy mode
[dotfiles.git] / emacs.d / elisp / shell-command-output-mode.el
1 ;; ;;; shell-command-output-mode.el --- A major mode for shell command output buffer  -*- lexical-binding: t; -*-
2
3 ;; Copyright (C) 2017  Peng Li
4
5 ;; Author: Peng Li <seudut@gmail.com>
6 ;; Keywords: 
7
8 ;; This program is free software; you can redistribute it and/or modify
9 ;; it under the terms of the GNU General Public License as published by
10 ;; the Free Software Foundation, either version 3 of the License, or
11 ;; (at your option) any later version.
12
13 ;; This program is distributed in the hope that it will be useful,
14 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
15 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 ;; GNU General Public License for more details.
17
18 ;; You should have received a copy of the GNU General Public License
19 ;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
21 ;;; Commentary:
22
23 ;; Nothing
24
25 ;;; Code:
26
27 (defvar shell-command-output-mode-map
28   (let ((map (make-sparse-keymap)))
29     (define-key map (kbd "q") (lambda () (interactive) (quit-window t)))
30     map)
31   "Keymap used in shell-command-output-mode mode")
32
33 (defcustom shell-command-output-mode-hook nil
34   "Hook run when shell command output mode is enabled"
35   :type 'hook
36   :group 'shell-command-outut)
37
38 ;;;###autoload
39 (define-derived-mode shell-command-output-mode fundamental-mode "shell-command-output" ""
40   (use-local-map shell-command-output-mode-map)
41   (setq buffer-read-only t)
42   ;; enable evil motion state for this mode
43   (if (and (boundp evil-mode) (fboundp 'evil-motion-state))
44       (progn (add-to-list 'evil-motion-state-modes 'shell-command-output-mode)
45              (evil-motion-state))))
46
47 (provide 'shell-command-output-mode)
48 ;;; shell-command-output-mode.el ends here