summaryrefslogtreecommitdiff
path: root/emacs/site-lisp/coding-config.el
diff options
context:
space:
mode:
authorTCCQ <thomasmulmer02@gmail.com>2025-02-14 15:40:29 -0800
committerTCCQ <thomasmulmer02@gmail.com>2025-02-14 15:40:29 -0800
commit2576f016153baa11c6e62deeb329dd72f0aa89c8 (patch)
treeafd9e5c4cd42a67a4cacd82fc4f63622c1a26990 /emacs/site-lisp/coding-config.el
parent5b23587f638dde8faf821edd50d72cb988af5387 (diff)
emacs full rework from laptop
Diffstat (limited to 'emacs/site-lisp/coding-config.el')
-rwxr-xr-xemacs/site-lisp/coding-config.el127
1 files changed, 127 insertions, 0 deletions
diff --git a/emacs/site-lisp/coding-config.el b/emacs/site-lisp/coding-config.el
new file mode 100755
index 0000000..9d228f0
--- /dev/null
+++ b/emacs/site-lisp/coding-config.el
@@ -0,0 +1,127 @@
+;;; The config specifically for editing code
+
+(provide 'coding-config)
+
+;; (add-hook 'xref-backend-functions 'gxref-xref-backend)
+
+;; better commenting binds
+(global-set-key (kbd "C-x C-;") 'comment-or-uncomment-region)
+(global-set-key (kbd "C-x ;") 'comment-line)
+(global-set-key (kbd "C-x :") 'comment-set-column) ;never gonna use but whatever
+
+(setq asm-comment-char ?#) ; prefer # over ; for asm comments
+
+;; generate tags for label names in asm files, based on asm files in the current directory
+(add-hook 'asm-mode-hook
+ (lambda ()
+ (add-hook 'after-save-hook
+ (lambda ()
+ (shell-command
+ "find . -iregex '.*\\.[sS]' -exec etags -l none -r '/\\([a-zA-Z0-9\\-_]+\\):/\1/' {} +"))
+ 0 t)))
+
+(use-package lsp-mode)
+
+(use-package lsp-haskell)
+
+(use-package sideline
+ :init
+ (setq sideline-backends-right '()))
+(use-package sideline-flycheck
+ :init
+ (push 'sideline-flycheck sideline-backends-right))
+(use-package sideline-flymake
+ :init
+ (push 'sideline-flymake sideline-backends-right))
+(use-package sideline-lsp
+ :init
+ (push 'sideline-lsp sideline-backends-right))
+
+(use-package flycheck
+ :config
+ ;; flymake stuff to be less annoying
+ ;; (face-spec-set 'flycheck-note '((t :underline nil)))
+ ;; (face-spec-set 'flycheck-info '((t :underline nil)))
+ ;; (face-spec-set 'flycheck-warning '((t :underline nil)))
+ ;; (face-spec-set 'flycheck-error '((t :underline nil)))
+ (add-hook 'prog-mode-hook (lambda () flycheck-mode 1)))
+
+;; Find defs in various ways
+(global-set-key (kbd "M-i") 'imenu)
+(global-set-key (kbd "M-I") 'xref-find-definitions)
+
+(setq imenu-auto-rescan t)
+
+;; make ibuffer play with projectile
+(use-package ibuffer
+ :bind
+ ("C-x C-b" . ibuffer)
+ :hook
+ (ibuffer . (lambda ()
+ (ibuffer-projectile-set-filter-groups)
+ (unless (eq ibuffer-sorting-mode 'alphabetic)
+ (ibuffer-do-sort-by-alphabetic)))))
+
+;; make shells and whatnot slightly better
+(require 'comint)
+(setq comint-scroll-to-bottom-on-input t)
+(setq comint-scroll-to-bottom-on-output t)
+
+;; ediff
+(setq ediff-window-setup-function 'ediff-setup-windows-plain)
+
+;; various folding types and binds
+;;(autoload 'hide-lines "hide-lines" "Hide lines based on a regexp" t)
+;;(global-set-key (kbd "C-c /") 'hide-lines)
+(use-package fold-this
+ :init
+ (define-prefix-command 'fold-map)
+ (global-set-key (kbd "M-F") 'fold-map)
+ (define-keymap :full nil
+ :parent nil
+ :suppress nil
+ :keymap nil
+ :name "fold-map"
+ :prefix 'fold-map
+ (kbd "c") 'fold-this
+ (kbd "e") 'fold-this-unfold-at-point
+ (kbd "t") 'hs-toggle-hiding
+ (kbd "f") 'fold-this-fold-forward
+ (kbd "b") 'fold-this-fold-backward
+ (kbd "l") 'hs-hide-level))
+
+;; global prog stuff that differs from global/text
+(require 'my-funcs)
+(add-hook 'prog-mode-hook (lambda ()
+ (hs-minor-mode 1)
+ (superword-mode 1)
+ (modify-syntax-entry ?_ "w") )
+ (display-fill-column-indicator-mode 1)
+ (add-hook 'before-save-hook
+ (lambda ()
+ (if (not (eq major-mode 'makefile-gmake-mode))
+ (clean-prog-file (current-buffer))))))
+
+;; haskell flavor and tags
+(use-package haskell-mode
+ :custom
+ (haskell-tags-on-save t)
+ (haskell-process-type 'cabal-repl)
+ :hook
+ (haskell-mode . (lambda ()
+ ;; (hindent-mode 1)
+ (interactive-haskell-mode 1))))
+
+(global-set-key (kbd "M-m") 'goto-next-locus)
+(global-set-key (kbd "M-M") 'recompile)
+(setq compilation-always-kill t
+ compilation-scroll-output t)
+;; Allow compilation buffer to be dedicated across frames
+(push '("\\*compilation\\*" . (nil (reusable-frames . t))) display-buffer-alist)
+
+;; better searching
+(require 'counsel)
+(setq counsel-grep-base-command
+ "rg -i -M 120 --no-heading --line-number --color never '%s' %s")
+(global-set-key (kbd "C-s") 'counsel-grep-or-swiper)
+(global-set-key (kbd "C-S-s") 'isearch-forward)