X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/b07c1cc4dfe36f215eac01e5c69e32cdc7607015..0fbb9f4e96583667f5905f4314a75ab99559fb80:/init.org diff --git a/init.org b/init.org index 8bce20c..206b6be 100644 --- a/init.org +++ b/init.org @@ -444,6 +444,15 @@ compilation." `(after! (:all ,@features) ,@body))))) #+end_src +Convenience macro for =setq='ing multiple variables to the same value: + +#+begin_src emacs-lisp +(defmacro 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))) +#+end_src + * Core :PROPERTIES: :CUSTOM_ID: core @@ -577,7 +586,8 @@ variable. #+begin_src emacs-lisp (setq backup-by-copying t - version-control t) + version-control t + delete-old-versions t) #+end_src *** Auto revert @@ -607,6 +617,20 @@ Enable =winner-mode=. (winner-mode 1) #+end_src +*** Close =*compilation*= on success + +#+begin_src emacs-lisp +(setq compilation-exit-message-function + (lambda (status code msg) + "Close the compilation window if successful." + ;; if M-x compile exits with 0 + (when (and (eq status 'exit) (zerop code)) + (bury-buffer) + (delete-window (get-buffer-window (get-buffer "*compilation*")))) + ;; return the result of compilation-exit-message-function + (cons msg code))) +#+end_src + ** Bindings #+begin_src emacs-lisp @@ -711,16 +735,6 @@ file. (add-to-list 'safe-local-variable-values '(eval add-hook 'after-save-hook #'amin/async-babel-tangle 'append 'local)) - -(setq compilation-exit-message-function - (lambda (status code msg) - "Close the compilation window if successful." - ;; if M-x compile exits with 0 - (when (and (eq status 'exit) (zerop code)) - (bury-buffer) - (delete-window (get-buffer-window (get-buffer "*compilation*")))) - ;; return the result of compilation-exit-message-function - (cons msg code))) #+end_src *** [[https://magit.vc/][Magit]] @@ -1162,6 +1176,48 @@ instead. :bind (:map haskell-mode-map ("C-c l l" . hs-lint))) #+end_src + +** Web dev + +*** SGML and HTML + +#+begin_src emacs-lisp +(use-package sgml-mode + :config + (setq sgml-basic-offset 2)) +#+end_src + +*** CSS and SCSS + +#+begin_src emacs-lisp +(use-package css-mode + :config + (setq css-indent-offset 2)) +#+end_src + +*** Web mode + +#+begin_src emacs-lisp +(use-package web-mode + :mode "\\.html\\'" + :config + (setq-every! 2 + web-mode-code-indent-offset + web-mode-css-indent-offset + web-mode-markup-indent-offset)) +#+end_src + +*** Emmet mode + +#+begin_src emacs-lisp +(use-package emmet-mode + :bind* (("C-)" . emmet-next-edit-point) + ("C-(" . emmet-prev-edit-point)) + :init + (setq emmet-move-cursor-between-quotes t) + :hook (web-mode css-mode html-mode sgml-mode)) +#+end_src + * Emacs Enhancements ** [[https://github.com/justbur/emacs-which-key][which-key]] @@ -1244,25 +1300,6 @@ Emacs package that displays available keybindings in popup :after #'my-projectile-invalidate-cache)))) #+end_src -** [[https://github.com/wasamasa/shackle][shackle]] - -#+begin_src emacs-lisp -(use-package shackle - :demand t - :commands shackle-mode - :config - (shackle-mode 1) - (setq shackle-rules - '(("*Help*" :align right :select t :size 0.5) - ("\\`\\*helm.*?\\*\\'" :regexp t :align t) - ((compilation-mode "\\`\\*magit-diff: .*?\\'") :regexp t :noselect t) - ("*magit-dispatch-popup*" :align bottom) - ((inferior-scheme-mode "*shell*" "*eshell*") :popup t)) - shackle-default-rule '(:select t) - shackle-default-size 0.4 - shackle-inhibit-window-quit-on-same-windows t)) -#+end_src - ** [[https://github.com/Wilfred/helpful][helpful]] #+begin_src emacs-lisp @@ -1280,13 +1317,76 @@ Emacs package that displays available keybindings in popup #+begin_src emacs-lisp (use-package shell-pop - :config - (add-to-list 'shackle-rules '("\\*eshell\\*" :regexp t :same t)) :custom (shell-pop-universal-key "C-c e") (shell-pop-shell-type '("eshell" "*eshell*" (lambda nil (eshell))))) #+end_src +** [[https://github.com/EricCrosson/unkillable-scratch][unkillable-scratch]] + +Make =*scratch*= and =*Messages*= unkillable. + +#+begin_src emacs-lisp +(use-package unkillable-scratch + :config + (unkillable-scratch 1) + :custom + (unkillable-buffers '("^\\*scratch\\*$" "^\\*Messages\\*$"))) +#+end_src + +** [[https://github.com/davep/boxquote.el][boxquote.el]] + +#+begin_example +,---- +| make pretty boxed quotes like this +`---- +#+end_example + +#+begin_src emacs-lisp +(use-package boxquote + :bind + (:prefix-map amin--boxquote-prefix-map + :prefix "C-c q" + ("b" . boxquote-buffer) + ("B" . boxquote-insert-buffer) + ("d" . boxquote-defun) + ("F" . boxquote-insert-file) + ("hf" . boxquote-describe-function) + ("hk" . boxquote-describe-key) + ("hv" . boxquote-describe-variable) + ("hw" . boxquote-where-is) + ("k" . boxquote-kill) + ("p" . boxquote-paragraph) + ("q" . boxquote-boxquote) + ("r" . boxquote-region) + ("s" . boxquote-shell-command) + ("t" . boxquote-text) + ("T" . boxquote-title) + ("u" . boxquote-unbox) + ("U" . boxquote-unbox-region) + ("y" . boxquote-yank) + ("M-q" . boxquote-fill-paragraph) + ("M-w" . boxquote-kill-ring-save))) +#+end_src + +Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. + +** [[https://github.com/DarthFennec/highlight-indent-guides][highlight-indent-guides]] + +#+begin_src emacs-lisp +(use-package highlight-indent-guides + :demand t + :hook ((prog-mode . highlight-indent-guides-mode) + (org-mode . highlight-indent-guides-mode)) + :config + (setq highlight-indent-guides-character ?\|) + (setq highlight-indent-guides-auto-enabled nil) + (setq highlight-indent-guides-method 'character) + (setq highlight-indent-guides-responsive 'top) + (set-face-foreground 'highlight-indent-guides-character-face "gainsboro") + (set-face-foreground 'highlight-indent-guides-top-character-face "grey40")) ; grey13 is nice too +#+end_src + * Email ** [[https://notmuchmail.org][notmuch]]