From 405a2beebbb2695efb2de6462242b1b46fb98fc6 Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Sat, 21 Feb 2015 22:06:07 -0500 Subject: Move abbrev customization to separate file --- lisp/init-abbrev.el | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 lisp/init-abbrev.el (limited to 'lisp/init-abbrev.el') diff --git a/lisp/init-abbrev.el b/lisp/init-abbrev.el new file mode 100644 index 0000000..22cfd0b --- /dev/null +++ b/lisp/init-abbrev.el @@ -0,0 +1,43 @@ + +(setq save-abbrevs 'silently) + +(defun km/abbrev-add-case-global () + "Define lower abbreviation for the word before point. +Like `add-global-abbrev', but always make the abbreviation the +lower case variant of the word before point." + (interactive) + ;; Modified from `add-abbrev'. + (let* ((table global-abbrev-table) + (exp (buffer-substring-no-properties + (point) + (save-excursion (forward-word -1) (point)))) + (name (downcase exp))) + (when (or (not (abbrev-expansion name table)) + (y-or-n-p (format "%s expands to \"%s\"; redefine? " + name (abbrev-expansion name table)))) + (define-abbrev table name exp)))) + +(defun km/abbrev-inverse-add-uppercase-global () + "Define uppercase expansion for the word before point. +Like `inverse-add-global-abbrev', but always use the lower case +version of the word before point as the abbreviation and the +upper case version as the expansion." + (interactive) + ;; Modified from `inverse-add-abbrev'. + (let* ((table global-abbrev-table) + (end (point)) + (start (save-excursion (forward-word -1) (point))) + (name (downcase (buffer-substring-no-properties start end))) + (exp (upcase name))) + (when (or (not (abbrev-expansion name table)) + (y-or-n-p (format "%s expands to \"%s\"; redefine? " + name (abbrev-expansion name table)))) + (define-abbrev table name exp) + (save-excursion + (goto-char end) + (expand-abbrev))))) + +(define-key abbrev-map "c" 'km/abbrev-add-case-global) +(define-key abbrev-map "iu" 'km/abbrev-inverse-add-uppercase-global) + +(provide 'init-abbrev) -- cgit v1.2.3