X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/1eb203130bcee485d5abaead5dc7ee723a49d864..7c558c9b5ee7aaf336f643cc6767ec875441a239:/init.el diff --git a/init.el b/init.el index d66ec10..bebc421 100644 --- a/init.el +++ b/init.el @@ -95,15 +95,6 @@ user-mail-address "bandali@gnu.org") -;;; comment macro - -;; useful for commenting out multiple sexps at a time -(defmacro comment (&rest _) - "Comment out one or more s-expressions." - (declare (indent defun)) - nil) - - ;;; Package management (progn ; `borg' @@ -181,99 +172,6 @@ (or (server-running-p) (server-mode))) -;;; Useful utilities - -(defmacro b/setq-every (value &rest vars) - "Set all the variables from VARS to value VALUE." - (declare (indent defun) (debug t)) - `(progn ,@(mapcar (lambda (x) (list 'setq x value)) vars))) - -(defun b/start-process (program &rest args) - "Same as `start-process', but doesn't bother about name and buffer." - (let ((process-name (concat program "_process")) - (buffer-name (generate-new-buffer-name - (concat program "_output")))) - (apply #'start-process - process-name buffer-name program args))) - -(defun b/dired-start-process (program &optional args) - "Open current file with a PROGRAM." - ;; Shell command looks like this: "program [ARGS]... FILE" (ARGS can - ;; be nil, so remove it). - (declare-function dired-get-file-for-visit "dired") - (apply #'b/start-process - program - (remove nil (list args (dired-get-file-for-visit))))) - -(defun b/add-elisp-section () - (interactive) - (insert "\n") - (forward-line -1) - (insert "\n \n;;; ")) - -;; (defvar b/fill-column 47 -;; "My custom `fill-column'.") - -(defconst b/asterism "* * *") - -(defun b/insert-asterism () - "Insert a centred asterism." - (interactive) - (insert - (concat - "\n\n" - (make-string (floor (/ (- fill-column (length b/asterism)) 2)) - ?\s) - b/asterism - "\n\n"))) - -(defun b/no-mouse-autoselect-window () - "Conveniently disable `focus-follows-mouse'. -For disabling the behaviour for certain buffers and/or modes." - (make-local-variable 'mouse-autoselect-window) - (setq mouse-autoselect-window nil)) - -(defun b/kill-current-buffer () - "Kill the current buffer." - ;; also see https://redd.it/64xb3q - (interactive) - (kill-buffer (current-buffer))) - -(defun b/move-indentation-or-beginning-of-line (arg) - "Move to the indentation or to the beginning of line." - (interactive "^p") - ;; (if (bolp) - ;; (back-to-indentation) - ;; (move-beginning-of-line arg)) - (if (= (point) - (progn (back-to-indentation) - (point))) - (move-beginning-of-line arg))) - -(defun b/join-line-top () - "Like `join-line', but join next line to the current line." - (interactive) - (join-line 1)) - -(defun b/duplicate-line-or-region (&optional n) - "Duplicate the current line, or region (if active). -Make N (default: 1) copies of the current line or region." - (interactive "*p") - (let ((u-r-p (use-region-p)) ; if region is active - (n1 (or n 1))) - (save-excursion - (let ((text - (if u-r-p - (buffer-substring (region-beginning) (region-end)) - (prog1 (thing-at-point 'line) - (end-of-line) - (if (eobp) - (newline) - (forward-line 1)))))) - (dotimes (_ (abs n1)) - (insert text)))))) - - ;;; Defaults ;;;; C-level customizations @@ -283,11 +181,11 @@ Make N (default: 1) copies of the current line or region." enable-recursive-minibuffers t resize-mini-windows t ;; more useful frame titles - frame-title-format '("" invocation-name " - " - (:eval - (if (buffer-file-name) - (abbreviate-file-name (buffer-file-name)) - "%b"))) + ;; frame-title-format '("" invocation-name " - " + ;; (:eval + ;; (if (buffer-file-name) + ;; (abbreviate-file-name (buffer-file-name)) + ;; "%b"))) ;; i don't feel like jumping out of my chair every now and again; so ;; don't BEEP! at me, emacs ring-bell-function 'ignore @@ -304,9 +202,13 @@ Make N (default: 1) copies of the current line or region." ;; always use space for indentation indent-tabs-mode nil tab-width 4 + ;; case-sensitive search (and `dabbrev-expand') + ;; case-fold-search nil ;; cursor shape cursor-type t) +(set-fontset-font t 'arabic "Vazir") + ;; unicode support (comment (dolist (ft (fontset-list)) @@ -577,11 +479,6 @@ Make N (default: 1) copies of the current line or region." ;;; Essential packages -(add-to-list - 'load-path - (expand-file-name - (convert-standard-filename "lisp") user-emacs-directory)) - (when b/exwm-p (require 'bandali-exwm)) @@ -618,11 +515,21 @@ Make N (default: 1) copies of the current line or region." ;; (magit-completing-read-function 'magit-ido-completing-read) :custom-face (magit-diff-file-heading ((t (:weight normal))))) +(use-package magit-extras + :after magit + :config + (setq magit-pop-revision-stack-format + (pcase-let ((`(,pt ,_eob ,index-regexp) + (default-value 'magit-pop-revision-stack-format))) + `(,pt "[%N: %h]: %ci\n %s + https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=%H" + ,index-regexp)))) + ;; recently opened files (use-package recentf :defer 0.2 - ;; :config - ;; (add-to-list 'recentf-exclude "^/\\(?:ssh\\|su\\|sudo\\)?:") + :config + (add-to-list 'recentf-keep 'file-remote-p) :config (recentf-mode) :custom @@ -665,12 +572,13 @@ Make N (default: 1) copies of the current line or region." "C-c @" "outline" "s-O" "outline"))) -(use-package ls-lisp - :custom (ls-lisp-dirs-first t)) - (require 'bandali-dired) (use-package help + :bind + (:map help-mode-map + ("p" . backward-button) + ("n" . forward-button)) :config (temp-buffer-resize-mode) (setq help-window-select t)) @@ -686,6 +594,10 @@ Make N (default: 1) copies of the current line or region." :bind (:map doc-view-mode-map ("M-RET" . image-previous-line))) +(use-package shr + :custom + (shr-max-width 80)) + ;; Email (with Gnus, message, and EBDB) (require 'bandali-gnus) (use-package sendmail @@ -710,6 +622,7 @@ Make N (default: 1) copies of the current line or region." ;; highlight uncommitted changes in the left fringe (use-package diff-hl + :disabled :defer 0.6 :config (setq diff-hl-draw-borders nil) @@ -729,6 +642,7 @@ Make N (default: 1) copies of the current line or region." :config (show-paren-mode)) (use-package elec-pair + :disabled :demand :config (electric-pair-mode)) @@ -888,15 +802,6 @@ Make N (default: 1) copies of the current line or region." :config (setq css-indent-offset 2)) -(use-package emmet-mode - :after (:any mhtml-mode css-mode sgml-mode) - :bind* (("C-)" . emmet-next-edit-point) - ("C-(" . emmet-prev-edit-point)) - :config - (unbind-key "C-j" emmet-mode-keymap) - (setq emmet-move-cursor-between-quotes t) - :hook (css-mode html-mode sgml-mode)) - (use-package geiser :disabled) @@ -972,8 +877,6 @@ Make N (default: 1) copies of the current line or region." "C-c t" "themes") ;; prefixes for major modes - (which-key-add-major-mode-key-based-replacements 'message-mode - "C-c f n" "footnote") (which-key-add-major-mode-key-based-replacements 'org-mode "C-c C-v" "org-babel") @@ -1052,8 +955,6 @@ Make N (default: 1) copies of the current line or region." (require 'bandali-yasnippet) -(comment - (use-package debbugs :bind (("C-c D d" . debbugs-gnu) @@ -1079,6 +980,8 @@ Make N (default: 1) copies of the current line or region." (setq debbugs-gnu-current-suppress t) (debbugs-gnu debbugs-gnu-default-severities '("guix-patches")))))) +(comment + (use-package org-ref :init (b/setq-every '("~/usr/org/references.bib")