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)))