- [[#header][Header]]
- [[#initial-setup][Initial setup]]
- [[#core][Core]]
+- [[#borg-essentials][Borg's =layer/essentials=]]
+- [[#editing][Editing]]
+- [[#syntax-spell-checking][Syntax and spell checking]]
+- [[#programming-modes][Programming modes]]
+- [[#emacs-enhancements][Emacs enhancements]]
+- [[#email][Email]]
+- [[#blogging][Blogging]]
- [[#post-initialization][Post initialization]]
- [[#footer][Footer]]
=cl-letf= instead of the now obsolete =flet=.
#+begin_src emacs-lisp
-(defun amin--compilation-finish-function (buffer outstr)
- (unless (string-match "finished" outstr)
- (switch-to-buffer-other-window buffer))
- t)
-
-(setq compilation-finish-functions #'amin--compilation-finish-function)
+(use-package compile
+ :config
+ (defun amin--compilation-finish-function (buffer outstr)
+ (unless (string-match "finished" outstr)
+ (switch-to-buffer-other-window buffer))
+ t)
-(require 'cl-macs)
+ (setq compilation-finish-functions #'amin--compilation-finish-function)
-(setq ad-redefinition-action 'accept)
-(defadvice compilation-start
- (around inhibit-display
- (command &optional mode name-function highlight-regexp))
- (if (not (string-match "^\\(find\\|grep\\)" command))
- (cl-letf (((symbol-function 'display-buffer) #'ignore)
- ((symbol-function 'set-window-point) #'ignore)
- ((symbol-function 'goto-char) #'ignore))
- (save-window-excursion ad-do-it))
- ad-do-it))
+ (require 'cl-macs)
-(ad-activate 'compilation-start)
+ (defadvice compilation-start
+ (around inhibit-display
+ (command &optional mode name-function highlight-regexp))
+ (if (not (string-match "^\\(find\\|grep\\)" command))
+ (cl-letf (((symbol-function 'display-buffer) #'ignore))
+ (save-window-excursion ad-do-it))
+ ad-do-it))
+ (ad-activate 'compilation-start))
#+end_src
*** Search for non-ASCII characters
(let* ((file-tangle-start-time (current-time))
(file (buffer-file-name))
(file-nodir (file-name-nondirectory file))
- (async-quiet-switch "-q"))
+ ;; (async-quiet-switch "-q")
+ )
(async-start
`(lambda ()
(require 'org)
#+begin_src emacs-lisp
(use-package swiper
- :bind (("C-s" . swiper)
- ("C-r" . swiper)))
+ :bind (("C-s" . swiper)
+ ("C-r" . swiper)
+ ("C-S-s" . isearch-forward)))
#+end_src
**** Counsel
(use-package eshell
:defer 1
:commands eshell
+ :bind ("C-c a s e" . eshell)
:config
(eval-when-compile (defvar eshell-prompt-regexp))
(defun amin/eshell-quit-or-delete-char (arg)
(defun amin|eshell-setup ()
(make-local-variable 'company-idle-delay)
- (setq company-idle-delay nil)
+ (defvar company-idle-delay nil)
(bind-keys :map eshell-mode-map
("C-d" . amin/eshell-quit-or-delete-char)
("C-S-l" . amin/eshell-clear)
#+end_src
* Borg's =layer/essentials=
+:PROPERTIES:
+:CUSTOM_ID: borg-essentials
+:END:
TODO: break this giant source block down into individual org sections.
#+end_src
* Editing
+:PROPERTIES:
+:CUSTOM_ID: editing
+:END:
** Company
#+end_src
* Syntax and spell checking
+:PROPERTIES:
+:CUSTOM_ID: syntax-spell-checking
+:END:
#+begin_src emacs-lisp
(use-package flycheck
#'endless/replace-quote))
#+end_src
* Programming modes
+:PROPERTIES:
+:CUSTOM_ID: programming-modes
+:END:
** [[http://alloytools.org][Alloy]] (with [[https://github.com/dwwmmn/alloy-mode][alloy-mode]])
:load-path "lib/guix/elisp")
#+end_src
-* Emacs Enhancements
+* Emacs enhancements
+:PROPERTIES:
+:CUSTOM_ID: emacs-enhancements
+:END:
** [[https://github.com/justbur/emacs-which-key][which-key]]
("C-S-h p" . helpful-at-point)))
#+end_src
-** [[https://github.com/knu/shell-toggle.el][shell-toggle]]
-
-#+begin_src emacs-lisp
-(use-package shell-toggle
- :after eshell
- :bind ("C-c a s e" . amin/shell-toggle)
- :config
- (defun amin/shell-toggle (make-cd)
- "Toggle between the shell buffer and whatever buffer you are editing.
-With a prefix argument MAKE-CD also insert a \"cd DIR\" command
-into the shell, where DIR is the directory of the current buffer.
-
-When called in the shell buffer returns you to the buffer you were editing
-before calling this the first time.
-
-Options: `shell-toggle-goto-eob'"
- (interactive "P")
- ;; Try to decide on one of three possibilities:
- ;; If not in shell-buffer, switch to it.
- ;; If in shell-buffer, return to state before going to the shell-buffer
- (if (eq (current-buffer) shell-toggle-shell-buffer)
- (shell-toggle-buffer-return-from-shell)
- (progn
- (shell-toggle-buffer-goto-shell make-cd)
- (if shell-toggle-full-screen-window-only (delete-other-windows)))))
-
- ;; override to split horizontally instead
- (defun shell-toggle-buffer-switch-to-other-window ()
- "Switch to other window.
-If the current window is the only window in the current frame,
-create a new window and switch to it.
-
-\(This is less intrusive to the current window configuration than
-`switch-buffer-other-window')"
- (let ((this-window (selected-window)))
- (other-window 1)
- ;; If we did not switch window then we only have one window and need to
- ;; create a new one.
- (if (eq this-window (selected-window))
- (progn
- (split-window-horizontally)
- (other-window 1)))))
-
- :custom
- (shell-toggle-launch-shell 'shell-toggle-eshell))
-#+end_src
-
** [[https://github.com/EricCrosson/unkillable-scratch][unkillable-scratch]]
Make =*scratch*= and =*Messages*= unkillable.
(global-page-break-lines-mode))
#+end_src
+** expand-region
+
+#+begin_src emacs-lisp
+(use-package expand-region
+ :bind ("C-=" . er/expand-region))
+#+end_src
+
* Email
+:PROPERTIES:
+:CUSTOM_ID: email
+:END:
#+begin_src emacs-lisp
(defvar amin-maildir (expand-file-name "~/mail/"))
footnote-style 'unicode))
#+end_src
-** bbdb
+** ebdb
+
+#+begin_src emacs-lisp
+(use-package ebdb
+ :defer 1
+ :bind (:map gnus-group-mode-map ("e" . ebdb))
+ :config
+ (setq ebdb-sources (no-littering-expand-var-file-name "ebdb"))
+ (after! swiper
+ (add-to-list 'swiper-font-lock-exclude 'ebdb-mode t)))
+
+(use-package ebdb-com
+ :after ebdb)
+
+;; (use-package ebdb-complete
+;; :after ebdb
+;; :config
+;; (ebdb-complete-enable))
+
+(use-package company-ebdb
+ :after (:all company message)
+ :config
+ (defun company-ebdb--post-complete (_) nil)
+ :hook
+ (message-mode . (lambda ()
+ (add-to-list (make-local-variable 'company-backends)
+ 'company-ebdb))))
+
+(use-package ebdb-gnus
+ :after ebdb
+ :custom
+ (ebdb-gnus-window-configuration
+ '(article
+ (vertical 1.0
+ (summary 0.25 point)
+ (horizontal 1.0
+ (article 1.0)
+ (ebdb-gnus 0.3))))))
+
+(use-package ebdb-mua
+ :after ebdb
+ ;; :custom (ebdb-mua-pop-up nil)
+ )
+
+;; (use-package ebdb-message
+;; :after ebdb)
+
+
+;; (use-package ebdb-vcard
+;; :after ebdb)
+#+end_src
+
+** COMMENT bbdb
Manually install bbdb (=lisp/bbdb= copied from an ELPA-based setup),
because installing it from source on Emacs 27 using the following
#+end_src
* Blogging
+:PROPERTIES:
+:CUSTOM_ID: blogging
+:END:
** [[https://ox-hugo.scripter.co][ox-hugo]]
(message "Loading %s...done (%.3fs)" user-init-file
(float-time (time-subtract (current-time)
amin--before-user-init-time)))
-(setq ad-redefinition-action 'warn)
#+end_src
* Footer