From 1eb203130bcee485d5abaead5dc7ee723a49d864 Mon Sep 17 00:00:00 2001 From: Amin Bandali Date: Sat, 25 Apr 2020 16:06:36 -0400 Subject: [PATCH] Assimilate 8 drones Assimilate boxquote v2.1-1-g7e47e0e Assimilate expand-region 0.11.0-36-gea6b4cb Assimilate hl-todo v3.1.1-2-g3bba459 Assimilate orgalist b436971 Assimilate page-break-lines 0.11-29-g314b397 Assimilate unkillable-scratch 1.0.0-5-gb24c2a7 Assimilate which-key v3.4.0-24-g8b49ae9 Assimilate yasnippet 0.14.0-6-g5b1217a Also, remove some unused (use-package ...) forms. --- .gitmodules | 24 +++++ init.el | 207 ++++++++----------------------------- lib/boxquote | 1 + lib/expand-region | 1 + lib/hl-todo | 1 + lib/orgalist | 1 + lib/page-break-lines | 1 + lib/unkillable-scratch | 1 + lib/which-key | 1 + lib/yasnippet | 1 + lisp/bandali-message.el | 4 + lisp/bandali-multi-term.el | 81 +++++++++++++++ lisp/bandali-projectile.el | 67 ++++++++++++ lisp/bandali-theme.el | 3 +- lisp/bandali-yasnippet.el | 26 +++++ 15 files changed, 254 insertions(+), 166 deletions(-) create mode 160000 lib/boxquote create mode 160000 lib/expand-region create mode 160000 lib/hl-todo create mode 160000 lib/orgalist create mode 160000 lib/page-break-lines create mode 160000 lib/unkillable-scratch create mode 160000 lib/which-key create mode 160000 lib/yasnippet create mode 100644 lisp/bandali-multi-term.el create mode 100644 lisp/bandali-projectile.el create mode 100644 lisp/bandali-yasnippet.el diff --git a/.gitmodules b/.gitmodules index 8793078..2b61df8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,6 +13,9 @@ [submodule "borg"] path = lib/borg url = https://github.com/emacscollective/borg.git +[submodule "boxquote"] + path = lib/boxquote + url = https://github.com/davep/boxquote.el.git [submodule "dash"] path = lib/dash url = https://github.com/magnars/dash.el.git @@ -36,6 +39,12 @@ [submodule "erc-scrolltoplace"] path = lib/erc-scrolltoplace url = https://gitlab.com/jgkamat/erc-scrolltoplace.git +[submodule "expand-region"] + path = lib/expand-region + url = https://github.com/magnars/expand-region.el.git +[submodule "hl-todo"] + path = lib/hl-todo + url = https://github.com/tarsius/hl-todo.git [submodule "ivy"] path = lib/ivy url = https://github.com/abo-abo/swiper.git @@ -65,9 +74,15 @@ [submodule "org-tanglesync"] path = lib/org-tanglesync url = https://github.com/mtekman/org-tanglesync.el.git +[submodule "orgalist"] + path = lib/orgalist + url = https://github.com/emacsmirror/orgalist.git [submodule "packed"] path = lib/packed url = https://github.com/emacscollective/packed.git +[submodule "page-break-lines"] + path = lib/page-break-lines + url = https://github.com/purcell/page-break-lines.git [submodule "refinery-theme"] path = lib/refinery-theme url = https://git.bndl.org/refinery-theme @@ -89,12 +104,21 @@ [submodule "transient"] path = lib/transient url = https://github.com/magit/transient.git +[submodule "unkillable-scratch"] + path = lib/unkillable-scratch + url = https://github.com/EricCrosson/unkillable-scratch.git [submodule "use-package"] path = lib/use-package url = https://github.com/jwiegley/use-package.git +[submodule "which-key"] + path = lib/which-key + url = https://github.com/justbur/emacs-which-key.git [submodule "with-editor"] path = lib/with-editor url = https://github.com/magit/with-editor.git +[submodule "yasnippet"] + path = lib/yasnippet + url = https://github.com/joaotavora/yasnippet.git [submodule "znc"] path = lib/znc url = https://git.bandali.eu.org/znc.el.git diff --git a/init.el b/init.el index 4dff474..d66ec10 100644 --- a/init.el +++ b/init.el @@ -638,6 +638,7 @@ Make N (default: 1) copies of the current line or region." (require 'bandali-ivy) (require 'bandali-eshell) +;; (require 'bandali-multi-term) (require 'bandali-ibuffer) @@ -657,7 +658,12 @@ Make N (default: 1) copies of the current line or region." ("H" . outline-hide-body) ("S" . outline-show-all) ("h" . outline-hide-subtree) - ("s" . outline-show-subtree))) + ("s" . outline-show-subtree)) + :config + (when (featurep 'which-key) + (which-key-add-key-based-replacements + "C-c @" "outline" + "s-O" "outline"))) (use-package ls-lisp :custom (ls-lisp-dirs-first t)) @@ -929,7 +935,7 @@ Make N (default: 1) copies of the current line or region." ;;; Emacs enhancements & auxiliary packages -(comment + (use-package man :config (setq Man-width 80)) @@ -938,7 +944,6 @@ Make N (default: 1) copies of the current line or region." :config (which-key-add-key-based-replacements ;; prefixes for global prefixes and minor modes - "C-c @" "outline" "C-c !" "flycheck" "C-x RET" "coding system" "C-x 8" "unicode" @@ -963,15 +968,8 @@ Make N (default: 1) copies of the current line or region." "C-c F" "frames" "C-c g" "magit" "C-S-h" "help(ful)" - "C-c m" "multiple-cursors" - "C-c p" "projectile" - "C-c p s" "projectile/search" - "C-c p x" "projectile/execute" - "C-c p 4" "projectile/other-window" "C-c q" "boxquote" - "C-c t" "themes" - ;; "s-O" "outline" - ) + "C-c t" "themes") ;; prefixes for major modes (which-key-add-major-mode-key-based-replacements 'message-mode @@ -982,51 +980,15 @@ Make N (default: 1) copies of the current line or region." (which-key-mode) :custom (which-key-add-column-padding 5) - (which-key-max-description-length 32)) + (which-key-idle-delay 10000) + (which-key-idle-secondary-delay 0.05) + (which-key-max-description-length 32) + (which-key-show-early-on-C-h t)) -(use-package crux ; results in Waiting for git... [2 times] - :defer 0.4 - :bind (("C-c d" . crux-duplicate-current-line-or-region) - ("C-c M-d" . crux-duplicate-and-comment-current-line-or-region) - ("C-c f C" . crux-copy-file-preserve-attributes) - ("C-c f D" . crux-delete-file-and-buffer) - ("C-c f R" . crux-rename-file-and-buffer) - ("C-c j" . crux-top-join-line) - ("C-S-j" . crux-top-join-line))) - -(use-package projectile - :disabled - :defer 0.5 - :bind-keymap ("C-c p" . projectile-command-map) - :config - (projectile-mode) - - (defun b/projectile-mode-line-fun () - "Report project name and type in the modeline." - (let ((project-name (projectile-project-name)) - (project-type (projectile-project-type))) - (format "%s%s" - projectile-mode-line-prefix - (if project-type - (format ":%s" project-type) - "")))) - (setq projectile-mode-line-function 'b/projectile-mode-line-fun) - - (defun my-projectile-invalidate-cache (&rest _args) - ;; ignore the args to `magit-checkout' - (projectile-invalidate-cache nil)) - - (eval-after-load 'magit-branch - '(progn - (advice-add 'magit-checkout - :after #'my-projectile-invalidate-cache) - (advice-add 'magit-branch-and-checkout - :after #'my-projectile-invalidate-cache))) - :custom - (projectile-completion-system 'ivy) - (projectile-mode-line-prefix " proj")) +;; (require 'bandali-projectile) (use-package helpful + :disabled :defer 0.6 :bind (("C-S-h c" . helpful-command) @@ -1048,95 +1010,36 @@ Make N (default: 1) copies of the current line or region." (use-package boxquote :defer 0.6 :bind - (:prefix-map b/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))) - -(use-package orgalist - ;; breaks auto-fill-mode, showing this error: - ;; orgalist--boundaries: Lisp nesting exceeds ‘max-lisp-eval-depth’ - :disabled - :after message - :hook (message-mode . orgalist-mode)) + (:prefix-map + b/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))) -;; highlight TODOs in buffers (use-package hl-todo + ;; highlight TODOs in buffers :defer 0.5 :config (global-hl-todo-mode)) -(use-package multi-term - :disabled - :defer 0.6 - :bind (("C-c a s m m" . multi-term) - ("C-c a s m d" . multi-term-dedicated-toggle) - ("C-c a s m p" . multi-term-prev) - ("C-c a s m n" . multi-term-next) - :map term-mode-map - ("C-c C-j" . term-char-mode)) - :config - (setq multi-term-program "screen" - multi-term-program-switches (concat "-c" - (getenv "XDG_CONFIG_HOME") - "/screen/screenrc") - ;; TODO: add separate bindings for connecting to existing - ;; session vs. always creating a new one - multi-term-dedicated-select-after-open-p t - multi-term-dedicated-window-height 20 - multi-term-dedicated-max-window-height 30 - term-bind-key-alist - '(("C-c C-c" . term-interrupt-subjob) - ("C-c C-e" . term-send-esc) - ("C-c C-j" . term-line-mode) - ("C-k" . kill-line) - ;; ("C-y" . term-paste) - ("C-y" . term-send-raw) - ("M-f" . term-send-forward-word) - ("M-b" . term-send-backward-word) - ("M-p" . term-send-up) - ("M-n" . term-send-down) - ("M-j" . term-send-raw-meta) - ("M-y" . term-send-raw-meta) - ("M-/" . term-send-raw-meta) - ("M-0" . term-send-raw-meta) - ("M-1" . term-send-raw-meta) - ("M-2" . term-send-raw-meta) - ("M-3" . term-send-raw-meta) - ("M-4" . term-send-raw-meta) - ("M-5" . term-send-raw-meta) - ("M-6" . term-send-raw-meta) - ("M-7" . term-send-raw-meta) - ("M-8" . term-send-raw-meta) - ("M-9" . term-send-raw-meta) - ("" . term-send-backward-kill-word) - ("" . term-send-backward-kill-word) - ("M-d" . term-send-delete-word) - ("M-," . term-send-raw) - ("M-." . comint-dynamic-complete)) - term-unbind-key-alist - '("C-z" "C-x" "C-c" "C-h" - ;; "C-y" - ""))) - (use-package page-break-lines :defer 0.5 :custom @@ -1147,35 +1050,9 @@ Make N (default: 1) copies of the current line or region." (use-package expand-region :bind ("C-=" . er/expand-region)) -(use-package multiple-cursors - :bind - (("C-S-" . mc/add-cursor-on-click) - (:prefix-map b/mc-prefix-map - :prefix "C-c m" - ("c" . mc/edit-lines) - ("n" . mc/mark-next-like-this) - ("p" . mc/mark-previous-like-this) - ("a" . mc/mark-all-like-this)))) - -(use-package yasnippet - :defer 0.6 - :config - (defconst yas-verbosity-cur yas-verbosity) - (setq yas-verbosity 2) - (add-to-list 'yas-snippet-dirs "~/src/git/guix/etc/snippets" t) - (yas-reload-all) - (setq yas-verbosity yas-verbosity-cur) - - (defun b/yas--maybe-expand-key-filter (cmd) - (when (and (yas--maybe-expand-key-filter cmd) - (not (bound-and-true-p git-commit-mode))) - cmd)) - (defconst b/yas-maybe-expand - '(menu-item "" yas-expand :filter b/yas--maybe-expand-key-filter)) - (define-key yas-minor-mode-map - (kbd "SPC") b/yas-maybe-expand) - - (yas-global-mode)) +(require 'bandali-yasnippet) + +(comment (use-package debbugs :bind diff --git a/lib/boxquote b/lib/boxquote new file mode 160000 index 0000000..7e47e0e --- /dev/null +++ b/lib/boxquote @@ -0,0 +1 @@ +Subproject commit 7e47e0e2853bc1215739b2e28f260e9eed93b2c5 diff --git a/lib/expand-region b/lib/expand-region new file mode 160000 index 0000000..ea6b4cb --- /dev/null +++ b/lib/expand-region @@ -0,0 +1 @@ +Subproject commit ea6b4cbb9985ddae532bd2faf9bb00570c9f2781 diff --git a/lib/hl-todo b/lib/hl-todo new file mode 160000 index 0000000..3bba459 --- /dev/null +++ b/lib/hl-todo @@ -0,0 +1 @@ +Subproject commit 3bba4591c54951d2abab113ec5e58a6319808ca9 diff --git a/lib/orgalist b/lib/orgalist new file mode 160000 index 0000000..b436971 --- /dev/null +++ b/lib/orgalist @@ -0,0 +1 @@ +Subproject commit b436971c7d35af5ab48d91248dc3028fb733cab6 diff --git a/lib/page-break-lines b/lib/page-break-lines new file mode 160000 index 0000000..314b397 --- /dev/null +++ b/lib/page-break-lines @@ -0,0 +1 @@ +Subproject commit 314b397910b3d16bb7cbcc25098696348e678080 diff --git a/lib/unkillable-scratch b/lib/unkillable-scratch new file mode 160000 index 0000000..b24c2a7 --- /dev/null +++ b/lib/unkillable-scratch @@ -0,0 +1 @@ +Subproject commit b24c2a760529833f230c14cb02ff6e7ec92288ab diff --git a/lib/which-key b/lib/which-key new file mode 160000 index 0000000..8b49ae9 --- /dev/null +++ b/lib/which-key @@ -0,0 +1 @@ +Subproject commit 8b49ae978cceca65967f3544c236f32964ddbed0 diff --git a/lib/yasnippet b/lib/yasnippet new file mode 160000 index 0000000..5b1217a --- /dev/null +++ b/lib/yasnippet @@ -0,0 +1 @@ +Subproject commit 5b1217ab085fab4abeb1118dccb260691b446703 diff --git a/lisp/bandali-message.el b/lisp/bandali-message.el index be88049..ca30dc4 100644 --- a/lisp/bandali-message.el +++ b/lisp/bandali-message.el @@ -115,5 +115,9 @@ (gnus-harvest-install 'message-x) (gnus-harvest-install)))) +(use-package orgalist + :after message + :hook (message-mode . orgalist-mode)) + (provide 'bandali-message) ;;; bandali-message.el ends here diff --git a/lisp/bandali-multi-term.el b/lisp/bandali-multi-term.el new file mode 100644 index 0000000..1e02e36 --- /dev/null +++ b/lisp/bandali-multi-term.el @@ -0,0 +1,81 @@ +;;; bandali-multi-term.el --- bandali's multi-term setup -*- lexical-binding: t; -*- + +;; Copyright (C) 2020 Amin Bandali + +;; Author: Amin Bandali +;; Keywords: terminals + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; My multi-term configuration. + +;;; Code: + +(use-package multi-term + :disabled + :defer 0.6 + :bind (("C-c a s m m" . multi-term) + ("C-c a s m d" . multi-term-dedicated-toggle) + ("C-c a s m p" . multi-term-prev) + ("C-c a s m n" . multi-term-next) + :map term-mode-map + ("C-c C-j" . term-char-mode)) + :config + (setq multi-term-program "screen" + multi-term-program-switches (concat "-c" + (getenv "XDG_CONFIG_HOME") + "/screen/screenrc") + ;; TODO: add separate bindings for connecting to existing + ;; session vs. always creating a new one + multi-term-dedicated-select-after-open-p t + multi-term-dedicated-window-height 20 + multi-term-dedicated-max-window-height 30 + term-bind-key-alist + '(("C-c C-c" . term-interrupt-subjob) + ("C-c C-e" . term-send-esc) + ("C-c C-j" . term-line-mode) + ("C-k" . kill-line) + ;; ("C-y" . term-paste) + ("C-y" . term-send-raw) + ("M-f" . term-send-forward-word) + ("M-b" . term-send-backward-word) + ("M-p" . term-send-up) + ("M-n" . term-send-down) + ("M-j" . term-send-raw-meta) + ("M-y" . term-send-raw-meta) + ("M-/" . term-send-raw-meta) + ("M-0" . term-send-raw-meta) + ("M-1" . term-send-raw-meta) + ("M-2" . term-send-raw-meta) + ("M-3" . term-send-raw-meta) + ("M-4" . term-send-raw-meta) + ("M-5" . term-send-raw-meta) + ("M-6" . term-send-raw-meta) + ("M-7" . term-send-raw-meta) + ("M-8" . term-send-raw-meta) + ("M-9" . term-send-raw-meta) + ("" . term-send-backward-kill-word) + ("" . term-send-backward-kill-word) + ("M-d" . term-send-delete-word) + ("M-," . term-send-raw) + ("M-." . comint-dynamic-complete)) + term-unbind-key-alist + '("C-z" "C-x" "C-c" "C-h" + ;; "C-y" + ""))) + +(provide 'bandali-multi-term) +;;; bandali-multi-term.el ends here diff --git a/lisp/bandali-projectile.el b/lisp/bandali-projectile.el new file mode 100644 index 0000000..41504e6 --- /dev/null +++ b/lisp/bandali-projectile.el @@ -0,0 +1,67 @@ +;;; bandali-projectile.el --- bandali's Projectile setup -*- lexical-binding: t; -*- + +;; Copyright (C) 2020 Amin Bandali + +;; Author: Amin Bandali +;; Keywords: convenience + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; My Projectile setup. + +;;; Code: + +(use-package projectile + :disabled + :defer 0.5 + :bind-keymap ("C-c p" . projectile-command-map) + :config + (projectile-mode) + + (defun b/projectile-mode-line-fun () + "Report project name and type in the modeline." + (let ((project-name (projectile-project-name)) + (project-type (projectile-project-type))) + (format "%s%s" + projectile-mode-line-prefix + (if project-type + (format ":%s" project-type) + "")))) + (setq projectile-mode-line-function 'b/projectile-mode-line-fun) + + (defun my-projectile-invalidate-cache (&rest _args) + ;; ignore the args to `magit-checkout' + (projectile-invalidate-cache nil)) + + (eval-after-load 'magit-branch + '(progn + (advice-add 'magit-checkout + :after #'my-projectile-invalidate-cache) + (advice-add 'magit-branch-and-checkout + :after #'my-projectile-invalidate-cache))) + + (when (featurep 'which-key) + (which-key-add-key-based-replacements + "C-c p" "projectile" + "C-c p s" "projectile/search" + "C-c p x" "projectile/execute" + "C-c p 4" "projectile/other-window")) + :custom + (projectile-completion-system 'ivy) + (projectile-mode-line-prefix " proj")) + +(provide 'bandali-projectile) +;;; bandali-projectile.el ends here diff --git a/lisp/bandali-theme.el b/lisp/bandali-theme.el index 87fc231..13be391 100644 --- a/lisp/bandali-theme.el +++ b/lisp/bandali-theme.el @@ -51,7 +51,8 @@ "For use with the `doom-tomorrow-night' theme.") (eval-when-compile - (declare-function exwm-systemtray--refresh "exwm-systemtray")) + (declare-function exwm-systemtray--refresh "exwm-systemtray") + (declare-function erc-hl-nicks-reset-face-table "erc-hl-nicks")) (defun b/lights-on () "Enable my favourite light theme." diff --git a/lisp/bandali-yasnippet.el b/lisp/bandali-yasnippet.el new file mode 100644 index 0000000..6cdbc7a --- /dev/null +++ b/lisp/bandali-yasnippet.el @@ -0,0 +1,26 @@ +(use-package yasnippet + :defer 0.6 + :config + (declare-function yas-reload-all + "yasnippet" (&optional no-jit interactive)) + (declare-function yas-maybe-expand-abbrev-key-filter + "yasnippet" (cmd)) + + (defconst yas-verbosity-cur yas-verbosity) + (setq yas-verbosity 2) + (add-to-list 'yas-snippet-dirs "~/src/git/guix/etc/snippets" t) + (yas-reload-all) + (setq yas-verbosity yas-verbosity-cur) + + (defun b/yas-maybe-expand-abbrev-key-filter (cmd) + (when (and (yas-maybe-expand-abbrev-key-filter cmd) + (not (bound-and-true-p git-commit-mode))) + cmd)) + (defconst b/yas-maybe-expand + '(menu-item "" yas-expand :filter b/yas-maybe-expand-abbrev-key-filter)) + (define-key yas-minor-mode-map + (kbd "SPC") b/yas-maybe-expand) + + (yas-global-mode)) + +(provide 'bandali-yasnippet) -- 2.20.1