+ enable lexical-scope everywhere (lexical-binding = t): ~5-10% faster startup; ~5-20% general boost + reduce consing, function calls & garbage collection by preferring cl-loop & dolist over lambda closures (for mapc[ar], add-hook, and various cl-lib filter/map/reduce functions) -- where possible + prefer functions with dedicated opcodes, like assq (see byte-defop's in bytecomp.el for more) + prefer pcase & cond (faster) over cl-case + general refactor for code readability + ensure naming & style conventions are adhered to + appease byte-compiler by marking unused variables with underscore + defer minor mode activation to after-init, emacs-startup or window-setup hooks; a customization opportunity for users + ensures custom functionality won't interfere with startup.
23 lines
908 B
EmacsLisp
23 lines
908 B
EmacsLisp
;;; lang/markdown/autoload.el -*- lexical-binding: t; -*-
|
|
|
|
;; Implement strike-through formatting
|
|
(defvar +markdown--regex-del
|
|
"\\(^\\|[^\\]\\)\\(\\(~\\{2\\}\\)\\([^ \n \\]\\|[^ \n ]\\(?:.\\|\n[^\n]\\)*?[^\\ ]\\)\\(\\3\\)\\)")
|
|
|
|
;;;###autoload
|
|
(defun +markdown/insert-del ()
|
|
"Surround region in github strike-through delimiters."
|
|
(interactive)
|
|
(let ((delim "~~"))
|
|
(if (markdown-use-region-p)
|
|
;; Active region
|
|
(destructuring-bind (beg end)
|
|
(markdown-unwrap-things-in-region
|
|
(region-beginning) (region-end)
|
|
+markdown--regex-del 2 4)
|
|
(markdown-wrap-or-insert delim delim nil beg end))
|
|
;; Bold markup removal, bold word at point, or empty markup insertion
|
|
(if (thing-at-point-looking-at +markdown--regex-del)
|
|
(markdown-unwrap-thing-at-point nil 2 4)
|
|
(markdown-wrap-or-insert delim delim 'word nil nil)))))
|
|
|