;;; -*- lexical-binding: t; -*- ;;; Commentary: ;;; Code: (setopt display-line-numbers-type 'relative) (defvar bd/enable-line-numbers-in-hooks '(prog-mode-hook) "List of hook symbols to add `display-line-numbers-mode' to.") (mapc (lambda (hook) (add-hook hook #'display-line-numbers-mode)) bd/enable-line-numbers-in-hooks) ;; skr (skribe) is a scheme extension (add-to-list 'auto-mode-alist '("\\.skr\\'" . scheme-mode)) (use-package prog-mode :hook ((js-mode . (lambda () (add-to-list 'prettify-symbols-alist '("function" . ?ƒ)))) (prog-mode . (lambda () (font-lock-add-keywords nil '(("\\<\\(FIX\\(ME\\)?\\|TODO\\)" 1 font-lock-warning-face t)))))) :config (global-prettify-symbols-mode 1)) (use-package tramp :config (defun request-sudo () "Uses TRAMP to edit current opened file as root." (interactive) (when buffer-file-name (find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))) (use-package autoformat :custom (autoformat-mode 1)) (use-package hl-line :hook ((prog-mode . hl-line-mode) (text-mode . hl-line-mode)) :config (defun bd/face-ignore-hl (f &rest args) "Wrapper around face-at-point, returning the face under the hl-line-mode." (if hl-line-mode (progn (hl-line-mode -1) (prog1 (apply f args) (hl-line-mode 1))) (apply f args))) (advice-add #'face-at-point :around #'bd/face-ignore-hl)) (use-package compile :demand t :hook ((compilation-filter . ansi-color-compilation-filter)) :custom (compilation-always-kill t) (compilation-scroll-output 'first-error) (compilation-ask-about-save nil) :config (defun bd/compile-dwim (f) (let ((default-directory (bd/get-directory-dwim))) (call-interactively f))) (keymap-set prog-mode-map "C-," #'(lambda () (interactive) (bd/compile-dwim #'recompile))) (keymap-set prog-mode-map "C-<" #'(lambda () (interactive) (bd/compile-dwim #'compile)))) (use-package man :custom (Man-notify-method 'pushy)) (use-package eglot :hook ((c-mode . eglot-ensure)) :config (add-to-list 'eglot-server-programs '(c-mode . ("ccls" "--init={\"clang\": {\"extraArgs\": [\"-std=c++20\"]}}")))) (use-package yasnippet :hook ((text-mode prog-mode) . yas-minor-mode-on) :bind (("H-s" . yas-insert-snippet))) (use-package rainbow-mode :hook css-mode) ;; fix to force-load newest transient (use-package transient :load-path (lambda () (car (directory-files "/home/bdunahu/.guix-home/profile/share/emacs/site-lisp/" t "transient-")))) (use-package magit :commands magit-status :custom (magit-define-global-key-bindings 'recommended)) (use-package paren :custom (show-paren-delay 0) (show-paren-highlight-openparen t) (show-paren-context-when-offscreen t) (show-paren-when-point-in-periphery t) (show-paren-when-point-inside-paren t)) (use-package rainbow-delimiters :hook prog-mode) (use-package paredit :hook (emacs-lisp-mode lisp-mode scheme-mode lisp-interaction-mode)) (provide 'bd--devel) ;;; bd--devel ends here