7304762f9926d7adae5c0aba2315240a94a3b0ab
[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 ;; https://www.emacswiki.org/emacs/TransparentEmacs
60 (defun sd/transparency (value)
61   "Sets the transparency of the frame window with a value from 0 to 100."
62   (interactive "nTransparency Value 0 - 100 opague:(default 80) ")
63   (set-frame-parameter (select-frame) 'alpha value))
64
65 (defun sd/toggle-transparency ()
66   "Enable or disable transparency"
67   (interactive)
68   (let ((alpha (frame-parameter nil 'alpha)))
69     (set-frame-parameter nil 'alpha
70                          (if (eql alpha 80)
71                              100
72                            80))))
73
74
75
76 (provide 'utilities)
77 ;;; utilities.el ends here