(find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name)))))
#+END_SRC
* Packages
-** Add melpa, and reduce the declarations by setting defaults
+** Add melpa, initialize
#+BEGIN_SRC emacs-lisp
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
-
-(setq use-package-always-ensure t
- use-package-always-defer t)
+(package-initialize)
+#+END_SRC
+** Install all packages that are not included
+#+BEGIN_SRC emacs-lisp
+(defvar *re/packages*
+ '(corfu
+ expand-region
+ page-break-lines
+ pdf-tools
+ auctex
+ csv-mode
+ markdown-mode
+ edit-indirect
+ sly
+ geiser
+ geiser-chicken
+ forth-mode
+ trashed
+ org-transclusion))
+
+(dolist (pkg *re/packages*)
+ (unless (package-installed-p pkg)
+ (package-refresh-contents)
+ (package-install pkg)))
#+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 after one second, fast refresh once on
- (corfu-popupinfo-hide nil)
- :config
- (corfu-popupinfo-mode))
+(require 'corfu)
+
+(setq corfu-auto t
+ corfu-auto-delay 0
+ corfu-auto-prefix 1)
+
+(add-hook 'corfu-mode-hook #'corfu-popupinfo-mode)
+
+(setq corfu-popupinfo-delay '(1.0 . 0.01) ; start after one second, fast refresh once on
+ corfu-popupinfo-hide nil)
+
+(global-corfu-mode)
#+END_SRC
** Expand Region
#+BEGIN_SRC emacs-lisp
-(use-package expand-region
- :bind
- (("C-=" . er/expand-region)))
+(require 'expand-region)
+
+(keymap-global-set "C-=" #'er/expand-region)
#+END_SRC
-** Aggressive Indent
+** Page Break Lines
#+BEGIN_SRC emacs-lisp
-(use-package aggressive-indent)
+(require 'page-break-lines)
+(global-page-break-lines-mode)
#+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
+** PDFtools
+Be sure to run =pdf-tools-install= before first run
#+BEGIN_SRC emacs-lisp
-(use-package page-break-lines
- :demand
- t
- :config
- (global-page-break-lines-mode))
+(add-to-list 'auto-mode-alist '("\\.pdf\\'" . pdf-tools-install))
+
+(setq-default pdf-view-display-size 'fit-page)
#+END_SRC
-** AucTeX and pdftools
-Make AucTeX use pdftools, prompt for master file, synctex, etc. Be sure to run =pdf-tools-install= before first use.
+** Auctex
#+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))
+(setq-default TeX-master nil)
+
+(setq TeX-auto-save t
+ TeX-parse-self t
+ TeX-PDF-mode t
+ TeX-view-program-selection '((output-pdf "PDF Tools"))
+ 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))
+(add-hook 'csv-mode-hook 'csv-align-mode)
#+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)
+(setq markdown-special-ctrl-a/e t)
+
+(with-eval-after-load 'markdown-mode
+ (keymap-set markdown-mode-map "M-<right>" #'markdown-demote)
+ (keymap-set markdown-mode-map "M-<left>" #'markdown-promote)
+ (keymap-set markdown-mode-map "M-<up>" #'markdown-move-up)
+ (keymap-set markdown-mode-map "M-<down>" #'markdown-move-down)
+ (keymap-set markdown-mode-map "C-M-u" #'markdown-up-heading)
+ (keymap-set markdown-mode-map "C-M-b" #'markdown-outline-previous-same-level)
+ (keymap-set markdown-mode-map "C-M-f" #'markdown-outline-next-same-level)
+ (keymap-set markdown-mode-map "C-M-p" #'markdown-outline-previous)
+ (keymap-set markdown-mode-map "C-M-n" #'markdown-outline-next))
#+END_SRC
** Sly
#+BEGIN_SRC emacs-lisp
(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)))
+(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))))))
+
+(with-eval-after-load 'sly-mrepl
+ (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))
#+END_SRC
*** Eldoc settings
Sly really doesn't play well with elodc in the minibuffer, so here are some settings to make it better.
#+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)
+(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)
+
+(with-eval-after-load 'geiser-repl
+ (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
** Forth
-*** TODO Try out this mode for gforth
-#+BEGIN_SRC emacs-lisp
-(use-package forth-mode)
-#+END_SRC
+*** TODO Try out forth-mode for gforth
** ORG
-*** Load in the package and set bindings
+*** Set bindings, things that have to happen after loading
#+BEGIN_SRC emacs-lisp
-(use-package org
- :config
- (require 'org-mouse)
- (add-to-list 'org-export-backends 'md)
- :bind
- (("C-c l" . org-store-link)
- ("C-c a" . org-agenda)
- ("C-c c" . org-capture)
- :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)))
-
-(use-package org-transclusion
- :after
- org
- :bind
- (("C-c t" . org-transclusion-mode)))
+(with-eval-after-load 'org
+ (require 'org-mouse)
+ (add-to-list 'org-export-backends 'md)
+ (keymap-set org-mode-map "C-M-h" #'org-mark-subtree)
+ (keymap-set org-mode-map "C-M-u" #'org-up-element)
+ (keymap-set org-mode-map "C-M-d" #'org-down-element)
+ (keymap-set org-mode-map "C-M-b" #'org-backward-heading-same-level)
+ (keymap-set org-mode-map "C-M-f" #'org-forward-heading-same-level)
+ (keymap-set org-mode-map "C-M-p" #'org-previous-visible-heading)
+ (keymap-set org-mode-map "C-M-n" #'org-next-visible-heading)
+ (keymap-set org-mode-map "C-c t" #'org-transclusion-mode))
+
+(keymap-global-set "C-c l" #'org-store-link)
+(keymap-global-set "C-c a" #'org-agenda)
+(keymap-global-set "C-c c" #'org-capture)
#+END_SRC
-*** Configuration
-**** General options
+*** General options
#+BEGIN_SRC emacs-lisp
(setq org-M-RET-may-split-line nil
org-cycle-inline-images-display t
org-yank-adjusted-subtrees t
org-startup-indented t)
#+END_SRC
-**** Time Clocking
+*** Time Clocking
#+BEGIN_SRC emacs-lisp
(org-clock-persistence-insinuate)
(setq org-clock-in-resume t
org-clock-report-include-clocking-task t
org-time-stamp-rounding-minutes '(1 1))
#+END_SRC
-**** Agenda and Capture
-***** Agenda settings
+*** Agenda and Capture
+**** Agenda settings
#+BEGIN_SRC emacs-lisp
(setq org-agenda-files (append '("~/org/")
(file-expand-wildcards "~/projects/*/")
org-log-done 'time
org-log-state-notes-insert-after-drawers t)
#+END_SRC
-***** Custom Agendas
+**** Custom Agendas
#+BEGIN_SRC emacs-lisp
(defvar *re/org-agenda-inbox*
'(tags "CATEGORY=\"inbox\"" ((org-agenda-overriding-header "INBOX:"))))
,,*re/org-agenda-waiting*
,,*re/org-agenda-undertakings*))))
#+END_SRC
-***** Capture Templates
+**** Capture Templates
#+BEGIN_SRC emacs-lisp
(setq org-capture-templates '(("i" "Inbox" entry
(file "inbox.org")
"* %^{Description}\n%U\n%?"
:prepend t)))
#+END_SRC
-**** IDs
+*** IDs
#+BEGIN_SRC emacs-lisp
(setq org-id-link-to-org-use-id 'create-if-interactive-and-no-custom-id
org-id-method 'ts
(advice-add 'org-refile :after (lambda (&rest _) (re/org-save-all)))
#+END_SRC
-**** Archiving
+*** Archiving
#+BEGIN_SRC emacs-lisp
(setq org-archive-location (concat "~/org/old.org_keep::datetree/")
org-agenda-text-search-extra-files '(agenda-archives))
(add-to-list 'auto-mode-alist '("\\.org_keep\\'" . org-mode))
#+END_SRC
-**** Converting markdown to org
+*** Converting markdown to org
#+BEGIN_SRC emacs-lisp
(defun re/markdown-to-org-region (start end)
"Convert Markdown formatted text in region (START, END) to Org.
start end
"pandoc -f markdown -t org --wrap=preserve" t t))
#+END_SRC
-**** Converting org to markdown
+*** Converting org to markdown
#+BEGIN_SRC emacs-lisp
(defun re/org-to-markdown-region (start end)
"Convert Org formatted text in region (START, END) to Markdown.
** 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
+(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"))
+ trashed-date-format "%Y-%m-%d %H:%M:%S")
#+END_SRC
** Use mu4e on my home pcs
#+BEGIN_SRC emacs-lisp
(unless (equal system-type 'windows-nt)
- (use-package mu4e
- :ensure nil
- :config
+ (unless (package-installed-p 'mu4e)
+ (package-refresh-contents)
+ (package-install 'mu4e))
+ (with-eval-after-load 'mu4e
(setq mail-user-agent 'message-user-agent
message-send-mail-function 'smtpmail-send-it
message-citation-line-format "Quoth %f :\n"
(:maildir "/Sent" :key ?s)
(:maildir "/Trash" :key ?t)
(:maildir "/Drafts" :key ?d)))))
-
#+END_SRC
* Load libraries
Libraries Not from the package manager
#+END_SRC
* Buffer dealiŋ
#+BEGIN_SRC emacs-lisp
-;; Buffer dealiŋ
(setq-default indicate-empty-lines t
truncate-lines t
fill-column 78)
(add-hook 'dired-mode-hook
(lambda ()
- (progn
- (keymap-set dired-mode-map
- "o"
- #'re/dired-display-direction)
- ;; Rename r,R+M(mv), chmod M>c, compress-to c>z
- (keymap-set dired-mode-map
- "z"
- #'dired-do-compress-to)
- (keymap-set dired-mode-map
- "c"
- #'dired-do-chmod)
- (keymap-set dired-mode-map
- "r"
- #'dired-do-rename)
- (keymap-set dired-mode-map
- "M"
- #'dired-do-rename)
- ;; My add-on defuns
- (keymap-set dired-mode-map
- "s"
- #'re/dired-sort)
- (keymap-set dired-mode-map
- "F"
- #'re/dired-find-marked-files)
- (keymap-set dired-mode-map
- "M-C"
- #'re/copy-with-mod-time)
- (keymap-set dired-mode-map
- "b"
- #'re/dired-open-externally)
- (keymap-set dired-mode-map
- "B"
- #'re/dired-open-marked-externally)
- (dired-hide-details-mode t)
- (hl-line-mode))))
+ (keymap-set dired-mode-map "o" #'re/dired-display-direction)
+ (keymap-set dired-mode-map "z" #'dired-do-compress-to)
+ (keymap-set dired-mode-map "c" #'dired-do-chmod)
+ (keymap-set dired-mode-map "r" #'dired-do-rename)
+ (keymap-set dired-mode-map "M" #'dired-do-rename)
+ (keymap-set dired-mode-map "s" #'re/dired-sort)
+ (keymap-set dired-mode-map "F" #'re/dired-find-marked-files)
+ (keymap-set dired-mode-map "M-C" #'re/copy-with-mod-time)
+ (keymap-set dired-mode-map "b" #'re/dired-open-externally)
+ (keymap-set dired-mode-map "B" #'re/dired-open-marked-externally)
+ (dired-hide-details-mode t)
+ (hl-line-mode)))
#+END_SRC
* Bookmarks
#+BEGIN_SRC emacs-lisp
(setq save-abbrevs 'silently)
-(dolist (hook '(org-mode-hook howm-mode-hook))
- (add-hook hook #'abbrev-mode))
+(add-hook 'org-mode-hook #'abbrev-mode)
#+END_SRC
* Customization Framework
Disable it by making it save to a temp file (stolen from prot)