summaryrefslogtreecommitdiff
path: root/config/emacs/init.el
diff options
context:
space:
mode:
authorThomas Ulmer <thomas.ulmer@redflagai.co>2026-02-26 14:15:34 -0800
committerThomas Ulmer <thomas.ulmer@redflagai.co>2026-02-27 10:21:24 -0800
commite2b4d7e087986b20c96bedb0008750ac56e98db5 (patch)
treec56af105a4542eaf450383c5c05c8a703c639aa5 /config/emacs/init.el
parent4ea2c70501fdb680f34733a68fe03de82453225a (diff)
emacs diablable prog formatting
Diffstat (limited to 'config/emacs/init.el')
-rw-r--r--config/emacs/init.el62
1 files changed, 41 insertions, 21 deletions
diff --git a/config/emacs/init.el b/config/emacs/init.el
index 20970b0..19f640f 100644
--- a/config/emacs/init.el
+++ b/config/emacs/init.el
@@ -77,6 +77,16 @@
"Skip reindenting the buffer if it is longer than this many lines.
Nil for no limit.")
+(define-minor-mode my/global-prog-clean-mode
+ "Do auto formating on save in prog mode buffers."
+ :global t
+ (if my/global-prog-clean-mode
+ (progn ;enable
+ (add-hook 'before-save-hook 'my/clean-prog-file))
+ (progn ;disable
+ (remove-hook 'before-save-hook 'my/clean-prog-file))))
+(my/global-prog-clean-mode 1)
+
(defun my/clean-prog-file (&optional buffer)
"Perform whitespace cleanup and some normalization on `buffer'.
Defaults to the current BUFFER. Converts tabs to spaces unless the
@@ -84,20 +94,23 @@ major mode is in `my/prog-cleanup-want-tabs-modes', otherwise do the
reverse. Delete trailing whitespace."
(unless buffer (setq buffer (current-buffer)))
(with-current-buffer buffer
- (cond
- ((and (functionp 'clang-format-buffer)
- ; safety valve for undef'd
- (derived-mode-p '(c-mode c++-mode)))
- (clang-format-buffer))
- (t
- (when (and my/prog-cleanup-indent-max-lines
- (< (car (buffer-line-statistics buffer))
- my/prog-cleanup-indent-max-lines))
- (indent-region (point-min) (point-max)))))
- (if (member major-mode my/prog-cleanup-want-tabs-modes)
- (tabify (point-min) (point-max))
- (untabify (point-min) (point-max)))
- (delete-trailing-whitespace)))
+ (when (and my/global-prog-clean-mode
+ (not (member major-mode my/prog-cleanup-excluded-modes))
+ (derived-mode-p '(prog-mode))
+ (cond
+ ((and (functionp 'clang-format-buffer)
+ ; safety valve for undef'd
+ (derived-mode-p '(c-mode c++-mode)))
+ (clang-format-buffer))
+ (t
+ (when (and my/prog-cleanup-indent-max-lines
+ (< (car (buffer-line-statistics buffer))
+ my/prog-cleanup-indent-max-lines))
+ (indent-region (point-min) (point-max)))))
+ (if (member major-mode my/prog-cleanup-want-tabs-modes)
+ (tabify (point-min) (point-max))
+ (untabify (point-min) (point-max)))
+ (delete-trailing-whitespace)))))
(defun my/prog-buffer-setup ()
"Do setup in for code buffers."
@@ -106,13 +119,10 @@ reverse. Delete trailing whitespace."
(hs-minor-mode 1)
(display-fill-column-indicator-mode 1)
(smerge-mode 1)
- (when (and (derived-mode-p '(c-mode c++-mode))
- (> (car (buffer-line-statistics)) 0))
- (c-guess))
- (add-hook 'before-save-hook
- (lambda ()
- (unless (member major-mode my/prog-cleanup-excluded-modes)
- (my/clean-prog-file)))))
+ (ignore-errors
+ (when (and (derived-mode-p '(c-mode c++-mode))
+ (> (car (buffer-line-statistics)) 0))
+ (c-guess))))
(add-hook 'prog-mode-hook 'my/prog-buffer-setup)
(defun my/wrap-region-paren ()
@@ -328,6 +338,8 @@ With ARG, don't save the current layout."
(if my/keys-mode
(repeat-mode 1)
(repeat-mode -1)))
+ (require 'eshell)
+ (require 'em-prompt)
(put 'other-window 'repeat-map nil)
(put 'eshell-previous-prompt 'repeat-map nil)
(put 'eshell-next-prompt 'repeat-map nil)
@@ -556,6 +568,14 @@ With ARG, don't save the current layout."
(emacs-lock-mode 'kill)
(iimage-mode 1)))))
+(use-package which-func ; headline
+ :custom
+ (which-func-display 'header)
+ (which-func-modes '(c-mode c++-mode))
+ :config
+ (set-face-foreground 'which-func "sky-blue")
+ (which-function-mode))
+
(progn ; vc and related binds
(setq vc-follow-symlinks t)
(vc-auto-revert-mode 1)