diff options
author | Vincent Ambo <tazjin@google.com> | 2019-12-17T17·30+0000 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2019-12-17T17·48+0000 |
commit | be28071e56fb3aab5336eccb71e4627a9005bfce (patch) | |
tree | 55e004ce13cb63f7a002e4c83d05a7c3e9ee8788 /tools/emacs | |
parent | caf23a9e2a6c0ad67058f469ec7cd4e5be0694a6 (diff) |
feat(emacs.d): Add functions & bindings to manage global font size r/178
This makes it possible to quickly adjust the size of text in all frames using one keyboard shortcut. Each of these functions understands a prefix argument to mean "please only operate on the current buffer", hence the following bindings and effects: Global: * `C-=`: Increase the global font size (chosen because `+` lies on the `=` key) * `C--`: Decrease the global font size * `C-x C-0`: Restore the global default font size Local: * `C-u C-=`: Increase the local font size * `C-u C--`: Decrease the local font size * `C-u C-x C-0`: Restore the local default font size
Diffstat (limited to 'tools/emacs')
-rw-r--r-- | tools/emacs/config/bindings.el | 5 | ||||
-rw-r--r-- | tools/emacs/config/functions.el | 32 |
2 files changed, 33 insertions, 4 deletions
diff --git a/tools/emacs/config/bindings.el b/tools/emacs/config/bindings.el index a45c8d4707ab..e77af338951f 100644 --- a/tools/emacs/config/bindings.el +++ b/tools/emacs/config/bindings.el @@ -1,6 +1,7 @@ ;; Font size -(define-key global-map (kbd "C-+") 'text-scale-increase) -(define-key global-map (kbd "C--") 'text-scale-decrease) +(define-key global-map (kbd "C-=") 'increase-default-text-scale) ;; '=' because there lies '+' +(define-key global-map (kbd "C--") 'decrease-default-text-scale) +(define-key global-map (kbd "C-x C-0") 'set-default-text-scale) ;; What does <tab> do? Well, it depends ... (define-key prog-mode-map (kbd "<tab>") #'company-indent-or-complete-common) diff --git a/tools/emacs/config/functions.el b/tools/emacs/config/functions.el index 4c8aa162cf0b..193e1a7412d1 100644 --- a/tools/emacs/config/functions.el +++ b/tools/emacs/config/functions.el @@ -1,5 +1,3 @@ -(require 's) - (defun load-file-if-exists (filename) (if (file-exists-p filename) (load filename))) @@ -219,4 +217,34 @@ (getenv "USER")) todo)))) +;; Custom text scale adjustment functions that operate on the entire instance +(defun modify-text-scale (factor) + (set-face-attribute 'default nil + :height (+ (* factor 5) (face-attribute 'default :height)))) + +(defun increase-default-text-scale (prefix) + "Increase default text scale in all Emacs frames, or just the + current frame if PREFIX is set." + + (interactive "P") + (if prefix (text-scale-increase 1) + (modify-text-scale 1))) + +(defun decrease-default-text-scale (prefix) + "Increase default text scale in all Emacs frames, or just the + current frame if PREFIX is set." + + (interactive "P") + (if prefix (text-scale-decrease 1) + (modify-text-scale -1))) + +(defun set-default-text-scale (prefix &optional to) + "Set the default text scale to the specified value, or the + default. Restores current frame's text scale only, if PREFIX is + set." + + (interactive "P") + (if prefix (text-scale-adjust 0) + (set-face-attribute 'default nil :height (or to 120)))) + (provide 'functions) |