hackweek-emacs/cnf/additionals.el

136 lines
4.4 KiB
EmacsLisp

(push (concat user-emacs-directory "cnf/app") load-path)
;; DIRED: file browser
(require 'a-dired)
;; ORD-MODE: Basically jupiter notebooks/markdown on steroids
(with-eval-after-load 'org (require 'a-orgmode))
;; MAGIT: A nice git frontend
(straight-use-package 'magit)
(setq magit-bury-buffer-function #'quit-window
magit-display-buffer-function #'display-buffer)
(with-eval-after-load 'magit
(transient-append-suffix 'magit-push "-u"
'(1 "=s" "Skip gitlab pipeline" "--push-option=ci.skip"))
(transient-append-suffix 'magit-push "=s"
'(1 "=D" "DEBUG" "--push-option=ci.variable=DEBUG=1")) ;; no special meaning for gitlab
(transient-append-suffix 'magit-push "=D"
'(1 "=V" "Set CI variable" "--push-option=ci.variable=")) ;; Will prompt, can only set one extra variable
(transient-append-suffix 'magit-push "=V"
'(1 "=O" "Set push option" "--push-option="))
)
;; DICTCC: query dict.cc without leaving emacs
(straight-use-package 'dictcc)
;; GIT-GUTTER: Indicators for git status inside the fringe
(straight-use-package 'git-gutter)
(straight-use-package 'git-gutter-fringe)
(require 'git-gutter-fringe)
;; 0 means only update on save, otherwise set to 0.02
;; otherwise cursor stutters (e.g. at 2 or 8)
(setq git-gutter:update-interval 0
git-gutter:handled-backends '(git hg))
;; Indicator style (It's ASCII art - yaayyy)
(fringe-helper-define 'git-gutter-fr:added 'center
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX..")
(fringe-helper-define 'git-gutter-fr:modified 'center
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX..")
(fringe-helper-define 'git-gutter-fr:deleted 'center
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX.."
"..XXX..")
(add-hook 'prog-mode-hook #'git-gutter-mode)
;; More sane defaults
(defvar emacs-autosave-directory
(concat user-emacs-directory "autosaves/"))
(unless (file-exists-p emacs-autosave-directory)
(mkdir emacs-autosave-directory t))
(setq backup-directory-alist
`((".*" . ,emacs-autosave-directory))
auto-save-file-name-transforms
`((".*" ,emacs-autosave-directory t)))
(setq make-backup-files nil
create-lockfiles nil)
;; There is also require-final-newline which is a per mode setting
;; This seems to override this global value -> See mode specific configs (e.g. yaml)
(setq-default require-final-newline t)
(setq mode-require-final-newline t)
(setq warning-minimum-level :emergency)
(defalias 'yes-or-no-p 'y-or-n-p)
(setq read-answer-short t)
;; Advice around the new kill-buffer--possibly-save function
;; This never calls the original function which basically replaces it
;; defalias is not possible here since this takes different arguments
(defun phga/kill-buffer-y-or-n--advice (orig-fun buffer &rest args)
"Replace the default behavior of the new `kill-buffer--possibly-save' function.
`ORIG-FUN' is the original function that was called and
`BUFFER'is the buffer that should be killed whilst beeing
modified and not saved. `ARGS' is the rest of the arguments."
(y-or-n-p (concat "Kill buffer " (buffer-name buffer) " without saving?")))
(advice-add 'kill-buffer--possibly-save :around #'phga/kill-buffer-y-or-n--advice)
(setq auto-revert-interval 1 ; Refresh buffers fast
echo-keystrokes 0.1 ; Show keystrokes asap
inhibit-startup-message t ; No splash screen please
initial-scratch-message nil ; Clean scratch buffer
initial-major-mode 'org-mode
recentf-max-saved-items 100 ; Show more recent files
ring-bell-function 'ignore) ; Quiet
(setq mouse-yank-at-point t)
;; Should help with reeeeally long lines e.g. json
;; there is also (setq-default bidi-display-reordering nil)
;; which is apparently not recommended by dev Eli because
;; it was never intended to be nil (could still improve things tho)
(setq-default bidi-paragraph-direction 'left-to-right)
;; gnupg
(require 'epa-file)
(setq epg-pinentry-mode 'ask)
(push '("\\.gpg\\'" . epa-file-enable) auto-mode-alist)
;; only use the encrypted version of .authinfo
(setq auth-sources '("~/.authinfo.gpg"))
;; save unsaved buffers before killing frame
(add-hook 'delete-frame-functions 'save-some-buffers)
(add-hook 'kill-emacs-hook 'save-some-buffers)
;; Width used to draw the column indicator + used in fill-paragraph
(setq-default fill-column 90)
(provide 'additionals)