* Initial
#+BEGIN_SRC emacs-lisp
(dolist (path '("sedit-mouse/" "themes/" "re/"))
- (add-to-list 'load-path (concat user-emacs-directory path)))
+ (add-to-list 'load-path (concat user-emacs-directory path)))
- (dolist (file '(re-packages re-pass-alike eng-paper-theme sedit-mouse))
- (require file))
+ (dolist (file '(re-pass-alike eng-paper-theme sedit-mouse))
+ (require file))
(setq w32-recognize-altgr 'nil)
(find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name)))))
#+END_SRC
-* Editing
+* Packages
+** Boilerplate
+Add melpa, and reduce the declarations by setting defaults
#+BEGIN_SRC emacs-lisp
-;; Editing
-(defun re/open-line-below (n)
- "Creates a new empty line below the current line and moves to it."
- (interactive "*p")
- (end-of-line)
- (open-line n)
- (next-line 1)
- (indent-for-tab-command))
-
-(keymap-global-set "C-o" #'re/open-line-below)
-
-(defun re/open-line-above (n)
- "Creates a new empty line above the current line."
- (interactive "*p")
- (beginning-of-line)
- (open-line n)
- (indent-for-tab-command))
-
-(keymap-global-set "M-o" #'re/open-line-above)
-
-(defun re/flush-extra-lines ()
- "Change all groups of blank lines to 1 blank line."
- (interactive)
- (save-excursion (mark-whole-buffer)
- (replace-regexp "^\n+"
- "\n"
- nil
- (region-beginning)
- (region-end))))
-
-(defun re/comment-dwim (&optional arg)
- "Comment region if active, otherwise comment line.
-Stolen from https://depp.brause.cc/dotemacs"
- (interactive "P")
- (if (use-region-p)
- (comment-or-uncomment-region (region-beginning) (region-end))
- (comment-line arg)))
+(require 'package)
-(keymap-global-set "M-;" #'re/comment-dwim)
-
-(defun re/comment-defun (&optional arg)
- "Mark a defun and comment it out.
-Return to initial position after. Arg works on `mark-defun'."
- (interactive "P")
- (save-excursion (mark-defun arg)
- (comment-region (region-beginning) (region-end))))
+(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
-(keymap-global-set "C-M-;" #'re/comment-defun)
-
-(defun re/kill-defun (&optional arg)
- "Mark a defun and kill it.
-Arg works on `mark-defun'."
- (interactive "P")
- (mark-defun arg)
- (kill-region (region-beginning) (region-end)))
-
-(keymap-global-set "C-M-S-K" #'re/kill-defun)
-
-(defun re/kill-bword-or-region (&optional arg)
-"Kill region if active, otherwise kill back one word."
-(interactive "p")
-(if (use-region-p)
- (kill-region (region-beginning) (region-end))
- (backward-kill-word arg)))
+(setq use-package-always-ensure t
+ use-package-always-defer t)
+#+END_SRC
+** Corfu
+#+BEGIN_SRC emacs-lisp
+(use-package corfu
+ :demand
+ t
+ :custom
+ (corfu-auto t)
+ (corfu-auto-delay 0)
+ (corfu-auto-prefix 1)
+ :config
+ (global-corfu-mode))
+
+(use-package corfu-popupinfo
+ :ensure
+ nil ; part of corfu
+ :after
+ corfu
+ :hook
+ (corfu-mode . corfu-popupinfo-mode)
+ :custom
+ (corfu-popupinfo-delay '(1.0 . 0.01)) ; start with M-t, fast refresh once on
+ (corfu-popupinfo-hide nil)
+ :config
+ (corfu-popupinfo-mode))
+#+END_SRC
+** Expand Region
+#+BEGIN_SRC emacs-lisp
+(use-package expand-region
+ :bind
+ (("C-=" . er/expand-region)))
+#+END_SRC
+** Aggressive Indent
+#+BEGIN_SRC emacs-lisp
+(use-package aggressive-indent)
+#+END_SRC
+** Magit
+No longer needed, since I defer by default.
+** Page Break Lines
+Needs to be demanded so I don't have to manually load it
+#+BEGIN_SRC emacs-lisp
+(use-package page-break-lines
+ :demand
+ t
+ :config
+ (global-page-break-lines-mode))
+#+END_SRC
+** AucTeX and pdftools
+Make AucTeX use pdftools, prompt for master file, synctex, etc.
+#+BEGIN_SRC emacs-lisp
+(use-package pdf-tools)
+
+(use-package auctex
+ :config
+ (setq-default TeX-master nil)
+ (add-to-list 'TeX-view-program-selection '(output-pdf "PDF Tools"))
+ (setq TeX-auto-save t
+ TeX-parse-self t
+ TeX-PDF-mode t
+ TeX-source-correlate-start-server t)
+ (add-hook 'TeX-after-compilation-finished-functions
+ #'TeX-revert-document-buffer))
+#+END_SRC
+** CSV Mode
+#+BEGIN_SRC emacs-lisp
+(use-package csv-mode
+ :config
+ (add-hook 'csv-mode-hook 'csv-align-mode))
-(keymap-global-set "C-w" #'re/kill-bword-or-region)
+#+END_SRC
+** Markdown Mode
+Make markdown act more like org when I'm forced to use it
+#+BEGIN_SRC emacs-lisp
+(use-package markdown-mode
+ :config
+ (setq markdown-special-ctrl-a/e t)
+ :bind
+ (:map markdown-mode-map
+ ("M-<right>" . markdown-demote)
+ ("M-<left>" . markdown-promote)
+ ("M-<up>" . markdown-move-up)
+ ("M-<down>" . markdown-move-down)
+ ("C-M-u" . markdown-up-heading)
+ ("C-M-b" . markdown-outline-previous-same-level)
+ ("C-M-f" . markdown-outline-next-same-level)
+ ("C-M-p" . markdown-outline-previous)
+ ("C-M-n" . markdown-outline-next)))
+
+(use-package edit-indirect :after 'markdown-mode)
+#+END_SRC
+** Sly
+#+BEGIN_SRC emacs-lisp
+ (defun re/sly-repl-new-frame (&optional arg)
+ "Start a SLY repl in a new frame."
+ (interactive "P")
+ (re/open-with-new-frame "SLY" #'sly))
+
+ (defun re/sly-quit-current-lisp ()
+ "Quit the current lisp repl connection without prompting."
+ (interactive)
+ (sly-quit-lisp nil nil))
+
+ (defun re/sly-connect-stump (&optional arg)
+ "Connect to my typical stumpwm instance."
+ (interactive "P")
+ (sly-connect "localhost" 4004))
+
+ (use-package sly
+ :config
+ (setq inferior-lisp-program "sbcl"
+ sly-net-coding-system 'utf-8-unix
+ sly-command-switch-to-existing-lisp 'always)
+ (let ((core (expand-file-name "~/sbcl.core-for-sly")))
+ (when (file-exists-p core)
+ (setq sly-lisp-implementations (list `(sbcl ("sbcl" "--core" ,core))))))
+ :bind
+ (:map sly-mrepl-mode-map
+ (")" . (lambda () (interactive) (re/send-on-close-paren #'sly-mrepl-return)))
+ ("]" . (lambda () (interactive) (re/balance-and-eval-sexp #'sly-mrepl-return)))
+ ("C-c q" . re/sly-quit-current-lisp)))
+#+END_SRC
+*** Eldoc settings
+Sly really doesn't play well with elodc in the minibuffer, so here are some settings to make it better.
+#+BEGIN_SRC emacs-lisp
+(add-to-list 'display-buffer-alist
+ '("^\\*eldoc" display-buffer-in-direction
+ (direction . 'down)
+ (window-height . 4)))
+(keymap-global-set "C-c d" #'eldoc) ; force eldoc to show in minibuffer
+(keymap-global-set "C-c D" #'eldoc-doc-buffer) ; open eldoc buffer when it's getting spammed
+#+END_SRC
+** Geiser
+#+BEGIN_SRC emacs-lisp
+ (use-package geiser
+ :config
+ (if (equal system-type 'windows-nt)
+ (setq geiser-chicken-binary '("C:/tools/chicken/bin/csi.exe" "-:c"))
+ (setq geiser-chicken-binary "csi -:c"))
+ (setq scheme-program-name geiser-chicken-binary
+ geiser-active-implementations '(chicken))
+ (add-hook 'scheme-mode-hook 'geiser-mode)
+ :bind
+ (:map geiser-repl-mode-map
+ (")" . (lambda () (interactive) (re/send-on-close-paren #'geiser-repl-maybe-send)))
+ ("]" . (lambda () (interactive) (re/balance-and-eval-sexp #'geiser-repl-maybe-send)))))
+
+ (use-package geiser-chicken :after 'geiser)
+#+END_SRC
+** Forth
+*** TODO Try out this mode for gforth
+#+BEGIN_SRC emacs-lisp
+(use-package forth-mode)
+#+END_SRC
+** ORG
+Loading in org customizations from a separate file for now. Maybe tangle that file from here in the future
+#+BEGIN_SRC emacs-lisp
+ (use-package org
+ :config
+ (require 'org-mouse)
+ (require 're-org)
+ :bind
+ (("C-c l" . org-store-link)
+ ("C-c a" . org-agenda)
+ ("C-c c" . org-capture)
+ ("C-c b" . org-switchb)
+ ("<f10>" . org-clock-out)
+ ("<f2>" . org-clock-goto)
+ :map org-mode-map
+ ("M-<right>" . org-shiftmetaright)
+ ("M-<left>" . org-shiftmetaleft)
+ ("M-S-<right>" . org-metaright)
+ ("M-S-<left>" . org-metaleft)
+ ("C-M-h" . org-mark-subtree)
+ ("C-M-u" . org-up-element)
+ ("C-M-d" . org-down-element)
+ ("C-M-b" . org-backward-heading-same-level)
+ ("C-M-f" . org-forward-heading-same-level)
+ ("C-M-p" . org-previous-visible-heading)
+ ("C-M-n" . org-next-visible-heading)
+ ("<f9>" . org-clock-in)))
+
+ (use-package org-transclusion
+ :after
+ org
+ :bind
+ (("C-c t" . org-transclusion-mode)))
+#+END_SRC
+** HOWM
+On-again, off-again relationship with this one
+#+BEGIN_SRC emacs-lisp
+(use-package howm
+ :config
+ (require 're-howm)
+ :bind
+ (("<f6>" . howm-menu)
+ ("S-<f6>" . re/howm-menu-new-frame)
+ :map howm-mode-map
+ ("C-c , k" . re/howm-create-keyword)
+ ("C-c , =" . howm-narrow-to-memo)))
+#+END_SRC
+** Trashed
+Shows the trash file as a dired buffer
+#+BEGIN_SRC emacs-lisp
+(use-package trashed
+ :config
+ (setq trashed-action-confirmer 'y-or-n-p
+ trashed-use-header-line t
+ trashed-sort-key '("Date deleted" . t)
+ trashed-date-format "%Y-%m-%d %H:%M:%S"))
+#+END_SRC
+* Editing
+** UNIX/vi-like bindings
+=C-h=, =C-w=, =C-u=, et. al to work as I expect. Some functions get re-bound when these take over a default.
+#+BEGIN_SRC emacs-lisp
+ (defun re/open-line-below (n)
+ "Creates a new empty line below the current line and moves to it."
+ (interactive "*p")
+ (end-of-line)
+ (open-line n)
+ (next-line 1)
+ (indent-for-tab-command))
+
+ (keymap-global-set "C-o" #'re/open-line-below)
+
+ (defun re/open-line-above (n)
+ "Creates a new empty line above the current line."
+ (interactive "*p")
+ (beginning-of-line)
+ (open-line n)
+ (indent-for-tab-command))
+
+ (keymap-global-set "M-o" #'re/open-line-above)
+
+ (defun re/kill-bword-or-region (&optional arg)
+ "Kill region if active, otherwise kill back one word."
+ (interactive "p")
+ (if (use-region-p)
+ (kill-region (region-beginning) (region-end))
+ (backward-kill-word arg)))
+
+ (keymap-global-set "C-w" #'re/kill-bword-or-region)
+ (keymap-global-set "C-u" (lambda () (interactive) (kill-line 0))) ; kill-line backwards
+ (keymap-global-set "C-S-U" #'universal-argument)
+ (keymap-set key-translation-map "C-h" "<DEL>") ; Rather F1 for help, also C-S-H works
+ (keymap-global-set "M-j" (lambda () (interactive) (join-line 0))) ; join-line other way
+#+END_SRC
+** Commenting and defun-level bindings
+#+BEGIN_SRC emacs-lisp
+ (defun re/comment-dwim (&optional arg)
+ "Comment region if active, otherwise comment line.
+ Stolen from https://depp.brause.cc/dotemacs"
+ (interactive "P")
+ (if (use-region-p)
+ (comment-or-uncomment-region (region-beginning) (region-end))
+ (comment-line arg)))
+
+ (keymap-global-set "M-;" #'re/comment-dwim)
+
+ (defun re/comment-defun (&optional arg)
+ "Mark a defun and comment it out.
+ Return to initial position after. Arg works on `mark-defun'."
+ (interactive "P")
+ (save-excursion (mark-defun arg)
+ (comment-region (region-beginning) (region-end))))
+
+ (keymap-global-set "C-M-;" #'re/comment-defun)
+
+ (defun re/kill-defun (&optional arg)
+ "Mark a defun and kill it.
+ Arg works on `mark-defun'."
+ (interactive "P")
+ (mark-defun arg)
+ (kill-region (region-beginning) (region-end)))
+
+ (keymap-global-set "C-M-S-K" #'re/kill-defun)
+#+END_SRC
+** Misc QOL bindings
+#+BEGIN_SRC emacs-lisp
(keymap-global-set "<insert>" nil) ; I keep toggliĊ overwrite-mode haply
(keymap-global-set "C-\\" #'undo-redo) ; issues with C-? sometimes
(keymap-global-set "C-S-K" #'kill-whole-line)
-(keymap-global-set "C-u" (lambda () (interactive) (kill-line 0))) ; kill-line backwards
-(keymap-global-set "C-S-U" #'universal-argument) ; C-u used above
-(keymap-set key-translation-map "C-h" "<DEL>") ; Rather F1 for help, also C-S-H works
(keymap-global-set "C-S-d" #'delete-pair)
-(keymap-global-set "M-j" (lambda () (interactive) (join-line 0))) ; join-line other way
(keymap-global-set "C-z" #'zap-up-to-char)
(keymap-global-set "C-c s" #'sort-lines)
(keymap-global-set "<remap> <capitalize-word>" #'capitalize-dwim) ; M-c
(dolist (hook '(text-mode-hook LaTeX-mode-hook))
(add-hook hook #'visual-line-mode))
-(add-to-list 'display-buffer-alist
- '("^\\*eldoc" display-buffer-in-direction
- (direction . 'down)
- (window-height . 4)))
-
(blink-cursor-mode -1)
(delete-selection-mode t)
(keymap-global-set "C-x M-b" #'buffer-menu-other-window)
(keymap-global-set "C-x k" #'kill-current-buffer)
(keymap-global-set "C-x K" #'kill-buffer)
-(keymap-global-set "C-c d" #'eldoc) ; force eldoc to show in minibuffer
-(keymap-global-set "C-c D" #'eldoc-doc-buffer) ; open eldoc buffer when it's getting spammed
#+END_SRC
* Motion
#+BEGIN_SRC emacs-lisp
#+END_SRC
* Cleanup on write
#+BEGIN_SRC emacs-lisp
-;; Cleanup on write
-(setq require-final-newline t)
-(add-hook 'before-save-hook #'re/flush-extra-lines)
-(add-hook 'before-save-hook #'whitespace-cleanup)
-(add-hook 'after-save-hook #'executable-make-buffer-file-executable-if-script-p)
+ (defun re/flush-extra-lines ()
+ "Change all groups of blank lines to 1 blank line."
+ (interactive)
+ (save-excursion (mark-whole-buffer)
+ (replace-regexp "^\n+"
+ "\n"
+ nil
+ (region-beginning)
+ (region-end))))
+ ;; Cleanup on write
+ (setq require-final-newline t)
+ (add-hook 'before-save-hook #'re/flush-extra-lines)
+ (add-hook 'before-save-hook #'whitespace-cleanup)
+ (add-hook 'after-save-hook #'executable-make-buffer-file-executable-if-script-p)
#+END_SRC
* Control
#+BEGIN_SRC emacs-lisp
(eshell-life-is-too-much)
(delete-char arg)))
#+END_SRC
-* SLY REPL
-#+BEGIN_SRC emacs-lisp
-;; SLY REPL
-(add-hook 'sly-mrepl-mode-hook
- (lambda ()
- (keymap-set sly-mrepl-mode-map
- ")"
- (re/send-on-close-paren #'sly-mrepl-return))
- (keymap-set sly-mrepl-mode-map
- "]"
- (re/balance-and-eval-sexp #'sly-mrepl-return))
- (keymap-set sly-mrepl-mode-map
- "C-c q"
- #'re/sly-quit-current-lisp)))
-
-(defun re/sly-repl-new-frame (&optional arg)
- "Start a SLY repl in a new frame."
- (interactive "P")
- (re/open-with-new-frame "SLY" #'sly))
-
-(defun re/sly-quit-current-lisp ()
- "Quit the current lisp repl connection without prompting."
- (interactive)
- (sly-quit-lisp nil nil))
-
-(defun re/sly-connect-stump (&optional arg)
- "Connect to my typical stumpwm instance."
- (interactive "P")
- (sly-connect "localhost" 4004))
-#+END_SRC
-* GEISER REPL
-#+BEGIN_SRC emacs-lisp
-;; GEISER REPL
-(add-hook 'geiser-repl-mode-hook
- (lambda ()
- (keymap-set geiser-repl-mode-map
- ")"
- (re/send-on-close-paren #'geiser-repl-maybe-send))
- (keymap-set geiser-repl-mode-map
- "]"
- (re/balance-and-eval-sexp #'geiser-repl-maybe-send))))
-#+END_SRC
* C-mode
#+BEGIN_SRC emacs-lisp
;;; C-mode
+++ /dev/null
-;;; re-packages.el --- Load Packs -*- lexical-binding: t; -*-
-;; This file is not part of Emacs.
-
-;;; Code:
-
-(require 'package)
-
-(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
-
-(setq use-package-always-ensure t
- use-package-always-defer t)
-\f
-;; UI/Editing
-
-(use-package corfu
- :demand
- t
- :custom
- (corfu-auto t)
- (corfu-auto-delay 0)
- (corfu-auto-prefix 1)
- :config
- (global-corfu-mode))
-
-(use-package corfu-popupinfo
- :ensure
- nil ; part of corfu
- :after
- corfu
- :hook
- (corfu-mode . corfu-popupinfo-mode)
- :custom
- (corfu-popupinfo-delay '(1.0 . 0.01)) ; start with M-t, fast refresh once on
- (corfu-popupinfo-hide nil)
- :config
- (corfu-popupinfo-mode))
-
-(use-package expand-region
- :bind
- (("C-=" . er/expand-region)))
-
-(use-package aggressive-indent :defer t)
-
-(use-package magit
- :config
- (message "Magit Loaded"))
-
-(use-package page-break-lines
- :demand
- t
- :config
- (global-page-break-lines-mode))
-\f
-;; Filetypes
-(use-package pdf-tools)
-
-(use-package auctex
- :config
- (setq-default TeX-master nil)
- (add-to-list 'TeX-view-program-selection '(output-pdf "PDF Tools"))
- (setq TeX-auto-save t
- TeX-parse-self t
- TeX-PDF-mode t
- TeX-source-correlate-start-server t)
- (add-hook 'TeX-after-compilation-finished-functions
- #'TeX-revert-document-buffer))
-
-(use-package csv-mode
- :config
- (add-hook 'csv-mode-hook 'csv-align-mode))
-
-(use-package markdown-mode
- :config
- (setq markdown-special-ctrl-a/e t)
- :bind
- (:map markdown-mode-map
- ("M-<right>" . markdown-demote)
- ("M-<left>" . markdown-promote)
- ("M-<up>" . markdown-move-up)
- ("M-<down>" . markdown-move-down)
- ("C-M-u" . markdown-up-heading)
- ("C-M-b" . markdown-outline-previous-same-level)
- ("C-M-f" . markdown-outline-next-same-level)
- ("C-M-p" . markdown-outline-previous)
- ("C-M-n" . markdown-outline-next)))
-
-(use-package edit-indirect :after 'markdown-mode)
-\f
-;; REPLs
-(use-package sly
- :config
- (setq inferior-lisp-program "sbcl"
- sly-net-coding-system 'utf-8-unix
- sly-command-switch-to-existing-lisp 'always)
- (let ((core (expand-file-name "~/sbcl.core-for-sly")))
- (when (file-exists-p core)
- (setq sly-lisp-implementations (list `(sbcl ("sbcl" "--core" ,core)))))))
-
-(use-package geiser
- :config
- (if (equal system-type 'windows-nt)
- (setq geiser-chicken-binary '("C:/tools/chicken/bin/csi.exe" "-:c"))
- (setq geiser-chicken-binary "csi -:c"))
- (setq scheme-program-name geiser-chicken-binary
- geiser-active-implementations '(chicken))
- (add-hook 'scheme-mode-hook 'geiser-mode))
-
-(use-package geiser-chicken :after 'geiser)
-
-(use-package forth-mode)
-\f
-;; PIM
-(use-package org
- :config
- (require 'org-mouse)
- (require 're-org)
- :bind
- (("C-c l" . org-store-link)
- ("C-c a" . org-agenda)
- ("C-c c" . org-capture)
- ("C-c b" . org-switchb)
- ("<f10>" . org-clock-out)
- ("<f2>" . org-clock-goto)
- :map org-mode-map
- ("M-<right>" . org-shiftmetaright)
- ("M-<left>" . org-shiftmetaleft)
- ("M-S-<right>" . org-metaright)
- ("M-S-<left>" . org-metaleft)
- ("C-M-h" . org-mark-subtree)
- ("C-M-u" . org-up-element)
- ("C-M-d" . org-down-element)
- ("C-M-b" . org-backward-heading-same-level)
- ("C-M-f" . org-forward-heading-same-level)
- ("C-M-p" . org-previous-visible-heading)
- ("C-M-n" . org-next-visible-heading)
- ("<f9>" . org-clock-in)))
-
-(use-package org-transclusion
- :after
- org
- :bind
- (("C-c t" . org-transclusion-mode)))
-
-(use-package howm
- :config
- (require 're-howm)
- :bind
- (("<f6>" . howm-menu)
- ("S-<f6>" . re/howm-menu-new-frame)
- :map howm-mode-map
- ("C-c , k" . re/howm-create-keyword)
- ("C-c , =" . howm-narrow-to-memo)))
-\f
-;; MISC
-(use-package trashed
- :config
- (setq trashed-action-confirmer 'y-or-n-p
- trashed-use-header-line t
- trashed-sort-key '("Date deleted" . t)
- trashed-date-format "%Y-%m-%d %H:%M:%S"))
-
-(provide 're-packages)
-;;; re-packages.el ends here