From a6dc9ebc4a3304553de269fc57ba7ff51f0a83b3 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 28 Mar 2016 21:41:43 -0400 Subject: [PATCH] c/c++: add narf/append-semicolon --- modules/defuns/defuns-cc.el | 17 +++++++++++++++++ modules/module-cc.el | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/modules/defuns/defuns-cc.el b/modules/defuns/defuns-cc.el index b3ceb1b6d..eb305f64f 100644 --- a/modules/defuns/defuns-cc.el +++ b/modules/defuns/defuns-cc.el @@ -92,6 +92,23 @@ ("\\<\\(xstring\\|xchar\\)\\>" . font-lock-type-face) ) t)) +;;;###autoload +(defun narf/append-semicolon () + "Append a semicolon to the end of this (or each selected) non-empty line." + (interactive) + (let ((beg (if (evil-visual-state-p) evil-visual-beginning (line-beginning-position))) + (end (if (evil-visual-state-p) evil-visual-end (line-end-position)))) + (save-excursion + (goto-char beg) + (while (< (point) end) + (let ((lend (save-excursion (evil-last-non-blank) (point)))) + (goto-char (1+ lend)) + (unless (or (eq (char-before) ?\;) + (= lend (line-beginning-position))) + (insert ";"))) + (forward-line))) + (when (evil-visual-state-p) + (evil-normal-state)))) (provide 'defuns-cc) ;;; defuns-cc.el ends here diff --git a/modules/module-cc.el b/modules/module-cc.el index 885ab788b..170e899e0 100644 --- a/modules/module-cc.el +++ b/modules/module-cc.el @@ -27,6 +27,10 @@ c-tab-always-indent nil c-electric-flag nil) + (map! (:map c-mode-base-map + (:localleader + :nv ";" 'narf/append-semicolon))) + (defun narf/sp-point-is-template-p (id action context) (and (sp-in-code-p id action context) (sp-point-after-word-p id action context)))