aeb5a5d6192b086bde01ec002fe29e8ffd08c386
[dotfiles.git] / emacs.d / elisp / utilities.el
1 ;;; utilities.el --- Some utility functions          -*- lexical-binding: t; -*-
2
3 ;; Copyright (C) 2017  Peng Li
4
5 ;; Author: Peng Li <seudut@gmail.com>
6 ;; Keywords: lisp
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 ;; These are some utility functions 
24
25 ;;; Code:
26
27 (defun sd/eshell-clear-buffer ()
28   "Clear eshell buffer"
29   (interactive)
30   (let ((inhibit-read-only t)
31         (current-point (- (point-max) (point))))
32     (beginning-of-line)
33     (delete-region (point-min) (point))
34     (goto-char (- (point-max) current-point))))
35
36 (defun sd/delete-current-window ()
37   (interactive)
38   (if (> (length (window-list)) 1)
39       (delete-window)
40     (message "Only one Windows now!")))
41
42
43 (defun sd/toggle-max-windows ()
44   "Set maximize current if there are multiple windows, if only
45 one window, window undo"
46   (interactive)
47   (if (equal  (length (window-list)) 1)
48       (winner-undo)
49     (delete-other-windows)))
50
51
52 (defun sd/kill-region-or-backward-kill-word ()
53   "Delete the region if it exists, otherwise kill a word backward."
54   (interactive)
55   (if (region-active-p)
56       (kill-region (point) (mark))
57     (backward-kill-word 1)))
58
59
60
61 (provide 'utilities)
62 ;;; utilities.el ends here