summaryrefslogtreecommitdiff
path: root/lisp/resize-frame.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/resize-frame.el')
-rw-r--r--lisp/resize-frame.el51
1 files changed, 51 insertions, 0 deletions
diff --git a/lisp/resize-frame.el b/lisp/resize-frame.el
new file mode 100644
index 0000000..3afeef4
--- /dev/null
+++ b/lisp/resize-frame.el
@@ -0,0 +1,51 @@
+;;; resize-frame.el --- A minor mode to resize frames easily. -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2014 kuanyui
+
+;; Author: kuanyui <azazabc123@gmail.com>
+;; Keywords: frames, tools, convenience
+;; License: WTFPL 1.0
+
+;;; Commentary:
+
+;; Press "ESC `" and use arrow-keys to adjust frames. press any key to done.
+
+;;; Code:
+
+(defvar resize-frame-map
+ (let ((map (make-keymap)))
+ (define-key map (kbd "<up>") 'enlarge-window)
+ (define-key map (kbd "<down>") 'shrink-window)
+ (define-key map (kbd "<right>") 'enlarge-window-horizontally)
+ (define-key map (kbd "<left>") 'shrink-window-horizontally)
+ (set-char-table-range (nth 1 map) t 'resize-frame-done)
+ (define-key map (kbd "C-p") 'enlarge-window)
+ (define-key map (kbd "C-n") 'shrink-window)
+ (define-key map (kbd "C-f") 'enlarge-window-horizontally)
+ (define-key map (kbd "C-b") 'shrink-window-horizontally)
+ map))
+
+(define-minor-mode resize-frame
+ "A simple minor mode to resize-frame.
+C-c C-c to apply."
+ ;; The initial value.
+ :init-value nil
+ ;; The indicator for the mode line.
+ :lighter " ResizeFrame"
+ ;; The minor mode bindings.
+ :keymap resize-frame-map
+ :global t
+ (if (<= (length (window-list)) 1)
+ (progn (setq resize-frame nil)
+ (message "Only root frame exists, abort."))
+ (message "Use arrow-keys to adjust frames.")))
+
+(defun resize-frame-done ()
+ (interactive)
+ (setq resize-frame nil)
+ (message "Done."))
+
+(global-set-key (kbd "ESC `") 'resize-frame)
+
+(provide 'resize-frame)
+;;; resize-frame.el ends here