diff --git a/README-MacOS.org b/README-MacOS.org index f7c0e7e..2dc056d 100644 --- a/README-MacOS.org +++ b/README-MacOS.org @@ -134,16 +134,11 @@ After Emacs is /kinda/ working, make sure you install *all* the fonts, that is: M-x nerd-icons-install-fonts #+end_example -Everything golden? +Everything golden? Great. Want to upgrade all the packages? #+begin_example -M-x straight-freeze-versions +M-x package-upgrade-all #+end_example -Before we can build a Telegram server for [[file:ha-aux-apps.org::*Telega][Telega]], we need to install the /latest/ version: -#+begin_src sh - brew unlink tdlib # optional - brew install tdlib --HEAD -#+end_src * Supporting Packages Now install all the extras: #+begin_src sh diff --git a/README.org b/README.org index 3b6fe59..7d885c8 100644 --- a/README.org +++ b/README.org @@ -8,7 +8,9 @@ I’ve crafted my Emacs configuration, I cheekily call /hamacs/, in a literate p The advantage to rolling yer own is I tend to /use/ what I add, leading to less bloat. In reality, this is more fun. -Using [[https://howardism.org/Technical/Emacs/literate-devops.html][literate programming]] for my Emacs configuration gives me an easy way to /share/ my code. Feel free to steal whatever you find interesting, as sharing makes our community great. Notice that functions and features I have written begin with =ha-=, but everything else is either /stock Emacs/ or a /package/ I download using [[https://github.com/raxod502/straight.el][straight]] (see [[file:bootstrap.org][bootstrap]] for the details) and configure with [[https://github.com/jwiegley/use-package][use-package]] (see either [[https://ianyepan.github.io/posts/setting-up-use-package/][this introduction]] or [[https://www.emacswiki.org/emacs/UsePackage][this wiki page]] for those details)… meaning most blocks of code should work on its own. +Using [[https://howardism.org/Technical/Emacs/literate-devops.html][literate programming]] for my Emacs configuration gives me an easy way to /share/ my code. Feel free to steal whatever you find interesting, as sharing makes our community great. Notice that functions and features I have written begin with =ha-=, but everything else is either /stock Emacs/ or a /package/ I download (see [[file:bootstrap.org][bootstrap]] for the details) and configure with the [[https://github.com/jwiegley/use-package][use-package]] macro (see either [[https://ianyepan.github.io/posts/setting-up-use-package/][this introduction]] or [[https://www.emacswiki.org/emacs/UsePackage][this wiki page]] for those details)… meaning most blocks of code should work on its own. + +*Note:* I now require Emacs version 30, for a few packages can’t be automatically downloaded from an Emacs Package Archive (like ELPA or MELPA), and I take advantage of the new =:vc= feature of =use-package= to download those packages directly from their Git repository. I’ve separated my configuration into /chapters/ around particular subjects, applications and programming languages. This feature allows you, dear reader, to jump our to items of interest, but allows me to /selectively load/ individual chapters. For instance, if I’m not doing much with Ruby at work, I can remove that chapter from the list in my [[file:bootstrap.org::*Load the Rest][bootstrap]]. I also don’t load my [[file:ha-display.org][UI configuration]] when I am using the Terminal (doesn’t happen much, actually). @@ -26,7 +28,7 @@ To create [[file:~/.emacs.d/init.el][~/.emacs.d/init.el]] which starts the proce [[file:screenshots/dashboard-small.png]] ** Core Configuration - - [[file:bootstrap.org][Bootstrap]] :: configures =straight= and loads basic libraries the rest of the code depends on. It then loads the following files in order. + - [[file:bootstrap.org][Bootstrap]] :: loads basic libraries the rest of the code depends on. It then loads the following files in order. - [[file:ha-config.org][Configuration]] :: contains /most/ of my configuration, setting up my sequence key menus, evil, etc. - [[file:ha-evil.org][Evilness]] :: configuration for using VI, er, ~vim~ keybindings in Emacs. - [[file:ha-general.org][Leader]] :: using the ~SPC~ to kick off a hierarchical order of functions. diff --git a/bootstrap.org b/bootstrap.org index efab2d3..6b3d491 100644 --- a/bootstrap.org +++ b/bootstrap.org @@ -35,11 +35,6 @@ A literate programming file for bootstraping my Emacs Configuration. #+end_src * Introduction This file contains all the variable definitions and library loading for the other files in my project. - -I'm installing everything using the [[https://github.com/raxod502/straight.el#getting-started][straight.el]] for package installation and management. This is initialization code configured in [[file:initialize][initialize]], and calls to =use-package= now accepts a =:straight= parameter that allows me to retrieve special versions of some packages. - -See the details in [[https://dev.to/jkreeftmeijer/emacs-package-management-with-straight-el-and-use-package-3oc8][this essay]]. - * Initial Settings ** Garbage Collection Settings GC has always been a contentious subject in Emacs. Lot less of an issue now, but let’s not slow the startup (any more than I already do by checking all the packages to see if anything new needs to be downloaded). @@ -107,7 +102,7 @@ Getting tired off all the packages that I load spewing a bunch of warnings that The following packages come with Emacs, but seems like they still need loading: #+begin_src emacs-lisp (use-package cl-lib - :straight (:type built-in) + :ensure nil :init (defun first (elt) (car elt)) :commands (first)) diff --git a/ha-applications.org b/ha-applications.org index fa4ec04..3f33276 100644 --- a/ha-applications.org +++ b/ha-applications.org @@ -32,14 +32,11 @@ Ethic issues aside, I’m [[https://technobabble.bearblog.dev/fine-ill-try-ai/][ Installing Xenodium’s [[https://github.com/xenodium/agent-shell][agent-shell]], requires his [[https://github.com/xenodium/acp.el][ACP package]] for accessing the installed [[https://agentclientprotocol.com/][ACP libraries]], and his [[https://github.com/xenodium/shell-maker][shell-maker]] package. #+BEGIN_SRC emacs-lisp - (use-package acp - :straight (:type git :host github :repo "xenodium/acp.el")) + (use-package acp) - (use-package shell-maker - :straight (:type git :host github :repo "xenodium/shell-maker")) + (use-package shell-maker) (use-package agent-shell - :straight (:type git :host github :repo "xenodium/agent-shell") :after acp :custom @@ -69,7 +66,7 @@ I would like the /intern/ to notify me when it needs attention, so I noticed the #+BEGIN_SRC emacs-lisp (use-package knockknock - :straight (knockknock :type git :host github :repo "konrad1977/knockknock") + :vc (:url "https://github.com/konrad1977/knockknock" :rev :newest) :init (setq knockknock-border-color "brown") (setq knockknock-border-width 2) @@ -90,10 +87,8 @@ The configuration for [[https://github.com/zackattackz/agent-shell-notifications #+BEGIN_SRC emacs-lisp (use-package agent-shell-notifications - :straight (agent-shell-notifications - :type git - :host github - :repo "zackattackz/agent-shell-notifications") + :vc (:url "https://github.com/zackattackz/agent-shell-notifications" :rev :newest) + :after knockknock :hook ;; Enable notifications in each agent-shell buffer (agent-shell-mode . agent-shell-notifications-mode) @@ -134,7 +129,7 @@ Using the [[https://github.com/cmacrae/agent-shell-sidebar][agent-shell-sidebar] #+BEGIN_SRC emacs-lisp (use-package agent-shell-sidebar :after agent-shell - :straight (:host github :repo "cmacrae/agent-shell-sidebar") + :vc (:url "https://github.com/cmacrae/agent-shell-sidebar" :rev :newest) :bind (("s-i" . agent-shell-sidebar-toggle-focus) ("s-I" . agent-shell-sidebar-toggle))) #+END_SRC @@ -324,7 +319,6 @@ This project (and others) can use repeat mode, but The [[https://scripter.co/using-git-delta-with-magit][magit-delta]] project uses [[https://github.com/dandavison/delta][git-delta]] for colorized diffs. #+begin_src emacs-lisp (use-package magit-delta - :ensure t :hook (magit-mode . magit-delta-mode)) #+end_src @@ -408,8 +402,7 @@ The crucial parts of this helper function are that we "wash" the result using =a The functions below depend on [[help:magit-thing-at-point][magit-thing-at-point]], and this depends on the [[https://sr.ht/~pkal/compat/][compat]] library, so let’s grab that stuff: #+begin_src emacs-lisp :tangle no - (use-package compat - :straight (:host github :repo "emacs-straight/compat")) + (use-package compat) (use-package magit-section :commands magit-thing-at-point) @@ -504,8 +497,7 @@ Using the [[https://github.com/emacsmirror/gist][gist package]] to write code sn The gist project depends on the [[https://github.com/sigma/gh.el][gh library]]. There seems to be a problem with it. #+begin_src emacs-lisp :tangle no - (use-package gh - :straight (:host github :repo "sigma/gh.el")) + (use-package gh) #+end_src ** Forge @@ -577,8 +569,7 @@ With the =gh= CLI working, we can install and use this project: #+BEGIN_SRC emacs-lisp (use-package magit-gh - :after magit - :straight (:type git :host github :repo "jonathanchu/magit-gh")) + :after magit) #+END_SRC @@ -738,7 +729,6 @@ Make my EWW browsers /look/ like an Org file with the [[https://github.com/cheny #+begin_src emacs-lisp (use-package shrface - :straight (:host github :repo "chenyanming/shrface") :config (shrface-basic) ;; (shrface-trial) @@ -873,18 +863,18 @@ Instead I use Emacs' built-in directory lister (which accepts the standard, =dir #+begin_src emacs-lisp (use-package ls-lisp - :straight (:type built-in) + :ensure nil :config (setq ls-lisp-use-insert-directory-program nil dired-listing-switches "-l --almost-all --human-readable --group-directories-first --no-group")) #+end_src -And [[https://www.masteringemacs.org/article/dired-shell-commands-find-xargs-replacement][this article by Mickey Petersen]] convinced me to turn on the built-in =dired-x= (just have to tell [[file:bootstrap.org::*Introduction][straight]] that knowledge): +And [[https://www.masteringemacs.org/article/dired-shell-commands-find-xargs-replacement][this article by Mickey Petersen]] convinced me to turn on the built-in =dired-x=: #+begin_src emacs-lisp (use-package dired-x - :straight (:type built-in)) + :ensure nil) #+end_src The advantage of =dired-x= is the ability to have [[https://www.emacswiki.org/emacs/DiredExtra#Dired_X][shell command guessing]] when selecting one or more files, and running a shell command on them with ~!~ or ~&~. @@ -898,7 +888,6 @@ The [[https://github.com/alexluigit/dirvish][dirvish]] project aims to make a pr I’m beginning with dirvish to use the [[https://github.com/alexluigit/dirvish/blob/main/docs/CUSTOMIZING.org][sample configuration]] and change it: #+begin_src emacs-lisp :tangle no (use-package dirvish - :straight (:host github :repo "alexluigit/dirvish") :init (dirvish-override-dired-mode) :custom diff --git a/ha-aux-apps.org b/ha-aux-apps.org index a97b1e1..93b0dd6 100644 --- a/ha-aux-apps.org +++ b/ha-aux-apps.org @@ -31,7 +31,6 @@ The following applications are not needed. I alternate between trying to /stay i Glad to see the 2FA feature is working on the [[https://codeberg.org/martianh/mastodon.el][mastodon.el]] project, and even more glad to see the great birdland diaspora arrive in the land of the toots. #+begin_src emacs-lisp (use-package mastodon - :straight (:host codeberg :repo "martianh/mastodon.el") :init (setq mastodon-instance-url "https://pdx.social" mastodon-active-user "howard")) @@ -95,7 +94,6 @@ Let’s turn on non-fixed-width fonts to make everything easier to read: Yet another encrypted chat/VoIP client-server, but unlike Signal and Telegram, [[matrix.org][Matrix]] is act ually open source. In other words, a project for nerds. We’ll be using Alphapapa’s latest [[https://github.com/alphapapa/ement.el][ement]] project. #+begin_src emacs-lisp (use-package ement - :straight (:host github :repo "alphapapa/ement.el") :after major-mode-hydra :config (major-mode-hydra-define ement-room-mode (:quit-key "q") @@ -176,7 +174,8 @@ Been working on my [[https://gitlab.com/howardabrams/emacs-rpgdm][RPG DM project #+begin_src emacs-lisp :tangle no (when (f-directory? "~/src/emacs-rpgdm") (use-package rpgdm - :straight (:local-repo "~/src/emacs-rpgdm") + :ensure nil + :load-path "~/src/emacs-rpgdm" :commands (rpgdm-mode rpgdm-tables-load) :init (setq rpgdm-base (expand-file-name "~/src/emacs-rpgdm")) :config (ha-leader "t D" '("rpg dm" . rpgdm-mode)))) @@ -186,7 +185,8 @@ Working on my new replacement of my DM code: #+begin_src emacs-lisp (when (f-directory? "~/src/emacs-rpgtk") (use-package rpgtk - :straight (:local-repo "~/src/emacs-rpgtk") + :ensure nil + :load-path "~/src/emacs-rpgtk" :after hydra ;; :commands (rpgtk-mode rpgtk-tables-load rpgtk-dice rpgtk-message) :custom @@ -204,7 +204,8 @@ And my [[https://gitlab.com/howardabrams/emacs-ironsworn][new Ironsworn project] (when (f-directory? "~/src/emacs-ironsworn") (use-package rpgdm-ironsworn :after rpgdm - :straight (:local-repo "~/src/emacs-ironsworn") + :ensure nil + :load-path "~/src/emacs-ironsworn" :init (setq rpgdm-ironsworn-project (expand-file-name "~/src/emacs-ironsworn") ;; Ignore org links that call my RPG functions: @@ -238,7 +239,6 @@ And then the configuration: #+BEGIN_SRC emacs-lisp (use-package ready-player - :straight (:type git :host github :repo "xenodium/ready-player") :config (when (eq system-type 'darwin) (set-fontset-font t nil "SF Pro Display" nil 'append) diff --git a/ha-capturing-notes.org b/ha-capturing-notes.org index 5ae403a..4998f93 100644 --- a/ha-capturing-notes.org +++ b/ha-capturing-notes.org @@ -233,7 +233,6 @@ And for even quicker work, we can have special scripts tied to special keybindin The [[https://gitlab.com/aimebertrand/org-mac-link][org-mac-link]] project makes it easy to tell Emacs to retrieve information from other apps, e.g. the URL of the opened tab in Firefox. #+begin_src emacs-lisp (use-package org-mac-link - :straight (:host gitlab :repo "aimebertrand/org-mac-link") :config (ha-leader "i" '("insert app info" . org-mac-link-get-link))) #+end_src diff --git a/ha-config.org b/ha-config.org index 7bed10d..3dfa399 100644 --- a/ha-config.org +++ b/ha-config.org @@ -145,8 +145,7 @@ And my copy of his code: After reading [[https://irreal.org/blog/?p=12139][Jon Sander’s essay]] as well as [[https://mbork.pl/2024-04-27_Emacs_everywhere][Marcin Borkowski's essay]], I decided to try out Tecosaur’s [[https://github.com/tecosaur/emacs-everywhere][Emacs Everywhere]] approach: #+begin_src emacs-lisp - (use-package emacs-everywhere - :straight (:host github :repo "tecosaur/emacs-everywhere")) + (use-package emacs-everywhere) #+end_src This package /called outside of Emacs/, so I bound a keybinding to iCanHazShortcut: @@ -229,7 +228,7 @@ When I push changes to my files to Gerrit and other code review, I don’t want The [[https://www.emacswiki.org/emacs/RecentFiles][recentf]] feature has been in Emacs for a long time, but it has a problem with Tramp, as we need to turn off the cleanup feature that attempts to =stat= all the files and remove them from the =recent= accessed list if they are readable. The requires recentf to open up a remote files which blocks Emacs at the most inopportune times… like when trying to reboot the machine. #+begin_src emacs-lisp (use-package recentf - :straight (:type built-in) + :ensure nil :config (setq recentf-auto-cleanup 'never) ;; disable before we start recentf! (recentf-mode 1)) @@ -343,7 +342,7 @@ The [[https://github.com/minad/vertico][vertico]] package puts the completing re My issue with Vertico is when calling =find-file=, the Return key opens =dired=, instead of inserting the directory at point. This package addresses this: #+begin_src emacs-lisp (use-package vertico-directory - :straight (el-patch :files ("~/.emacs.d/straight/repos/vertico/extensions/vertico-directory.el")) + :ensure nil ;; More convenient directory navigation commands :bind (:map vertico-map ("RET" . vertico-directory-enter) @@ -384,7 +383,6 @@ How does it compare? Once upon a time, I enjoyed typing ~plp~ for =package-list- #+begin_src emacs-lisp (use-package fussy - ;; :straight (:host github :repo "jojojames/fussy") :config (push 'fussy completion-styles) (setq completion-category-defaults nil @@ -575,7 +573,6 @@ The [[https://github.com/minad/cape][Cape project]] deliver particular [[help:co #+BEGIN_SRC emacs-lisp :tangle no (use-package cape - :straight (:host github :repo "minad/cape") :init (setq completion-at-point-functions (list #'cape-emoji))) #+END_SRC @@ -708,7 +705,7 @@ As I've mentioned [[http://www.howardism.org/Technical/Emacs/beep-for-emacs.html 'libnotify))) (use-package beep - :straight (:local-repo "~/src/hamacs/elisp") + :ensure nil :hook (after-init . ha-random-startup-message) :commands (beep-when-finished beep-when-run-too-long) :config @@ -1258,7 +1255,7 @@ Also, as [[https://www.bytedude.com/gpg-in-emacs/][bytedude]] mentions, I need t #+begin_src emacs-lisp (use-package epa-file - :straight (:type built-in) + :ensure nil :custom (epg-debug t) (auth-source-debug t) diff --git a/ha-demos.org b/ha-demos.org index 76721eb..df2c3d1 100644 --- a/ha-demos.org +++ b/ha-demos.org @@ -44,8 +44,8 @@ Once I made demonstrations /within/ Emacs with my [[https://github.com/howardabr #+begin_src emacs-lisp :tangle no (use-package demo-it - :straight (:local-repo "~/src/demo-it") - ;; :straight (:host github :repo "howardabrams/demo-it") + :ensure nil + :load-path "~/src/demo-it" :commands (demo-it-create demo-it-start demo-it-hide-mode-line demo-it--presentation-display-set) :custom (demo-it--insert-test-speed :faster)) @@ -194,7 +194,6 @@ With some a startup bug that I haven’t been able to resolve, I’m not using i #+begin_src emacs-lisp :tangle no (use-package dslide - :straight (dslide :host github :repo "positron-solutions/dslide") :commands (dslide-deck-start dslide-deck-stop) :custom (dslide-start-from 'point) @@ -244,7 +243,6 @@ Call the =ha-slide-notes-update= function automatically after updating a slide. #+BEGIN_SRC emacs-lisp :tangle no (use-package dslide - :straight (dslide :host github :repo "positron-solutions/dslide") :commands (dslide-narrow-hook) :hook (dslide-narrow . 'ha-slide-notes-update)) #+END_SRC @@ -255,9 +253,7 @@ The [[https://github.com/positron-solutions/moc][Master of Ceremonies]] package #+BEGIN_SRC emacs-lisp :tangle no (use-package default-text-scale) - (use-package moc - :straight (:type git :host github - :repo "positron-solutions/moc")) + (use-package moc) #+END_SRC Select text, and call =moc-focus= (call =moc-focus-quit= to stop). Highlight more text, and call =moc-focus-highlight= to brighten it, or =moc-focus-obscure= to hide it. @@ -271,8 +267,7 @@ An interesting approach for making presentations, that I’m not sure I will nee The [[https://github.com/trevorpogue/topspace][topspace]] project can pad the top of a buffer, to make the first line in the center of the window. Helpful for presentations: #+BEGIN_SRC emacs-lisp - (use-package topspace - :straight (:type git :host github :repo "trevorpogue/topspace")) + (use-package topspace) #+END_SRC *** Showing Something associated with a Headline @@ -307,7 +302,6 @@ To do this, add =:DSLIDE_ACTIONS: dslide-action-highlight-paragraphs= to the pro #+begin_src elisp emacs-lisp :tangle no (use-package dslide - :straight (:host github :repo "positron-solutions/dslide") :config (defclass dslide-action-highlight-paragraphs (dslide-action) ((overlays :initform nil)) diff --git a/ha-display.org b/ha-display.org index 9763414..fadaacf 100644 --- a/ha-display.org +++ b/ha-display.org @@ -85,7 +85,6 @@ The [[https://github.com/jdtsmith/ultra-scroll][ultra-scroll]] project allows sm #+BEGIN_SRC emacs-lisp (use-package ultra-scroll - :straight (:type git :host github :repo "jdtsmith/ultra-scroll") :config (setq scroll-conservatively 101 ; important! pixel-scroll-precision-interpolate-page t @@ -123,7 +122,6 @@ I found that the prolific [[https://protesilaos.com/][Protesilaos Stavrou]] [[ht #+begin_src emacs-lisp (use-package pulsar - :straight (:host github :repo "protesilaos/pulsar") :after winum ace-window :custom (pulsar-face 'pulsar-generic) @@ -188,7 +186,6 @@ Am I ever really ever satisfied with any font? I regularly change my font based #+begin_src emacs-lisp (use-package mixed-pitch - ;; :straight (:host github :repo "jabranham/mixed-pitch") :config (add-to-list 'mixed-pitch-fixed-pitch-faces 'org-property-value) (add-to-list 'mixed-pitch-fixed-pitch-faces 'org-special-keyword) @@ -418,7 +415,6 @@ This project replaces [[https://github.com/domtronn/all-the-icons.el][all-the-ic #+BEGIN_SRC emacs-lisp (use-package nerd-icons - :straight (nerd-icons :type git :host github :repo "rainstormstudio/nerd-icons.el") :custom ;; The Nerd Font you want to use in GUI defaults to fixed-font: (nerd-icons-font-family ha-fixed-font)) @@ -673,7 +669,6 @@ In code, if you drop a specific /text/ labels, we can highlight them with [[http #+begin_src emacs-lisp (use-package hl-todo - :straight (:host github :repo "tarsius/hl-todo") :config (setq hl-todo-keyword-faces `(("TODO" . ,(face-foreground 'warning)) @@ -689,7 +684,6 @@ Suggests to bind some keys to =hl-todo-next= in order to jump from tag to tag, b #+begin_src emacs-lisp (use-package consult-todo - :straight (:host github :repo "liuyinz/consult-todo") :init (defconst consult-todo--narrow '((?t . "TODO") diff --git a/ha-email.org b/ha-email.org index 4136f45..dc0a77f 100644 --- a/ha-email.org +++ b/ha-email.org @@ -741,7 +741,7 @@ The idea of linking org documents to email could be nice, however, the =ol-notmu #+begin_src emacs-lisp :tangle no (use-package ol-notmuch :after org - :straight (:type built-in) + :ensure nil :config (add-to-list 'org-modules 'ol-notmuch)) #+end_src To use, read a message and save a link to it with ~SPC o l~. Next, in an org document, create a link with ~, l~. Now, you can return to the message from that document with ~, o~. Regardless, I may need to store a local copy when I upgrade Org. diff --git a/ha-eshell.org b/ha-eshell.org index 5ff9574..4447912 100644 --- a/ha-eshell.org +++ b/ha-eshell.org @@ -27,10 +27,9 @@ A literate programming file for configuring the Emacs Shell. While I like [[https://github.com/akermu/emacs-libvterm][vterm]] for logging into [[file:ha-remoting.org][remote systems]], I find Emacs’ shell, =eshell=, an interesting alternative. If you find the documentation lacking, I [[http://www.howardism.org/Technical/Emacs/eshell-fun.html][documented most features]], and you might find the following helpful. -Tell straight to use the built-in =eshell=: #+begin_src emacs-lisp (use-package eshell - :straight (:type built-in) + :ensure nil :hook (eshell-mode . ha-eshell-setup)) #+end_src @@ -976,7 +975,6 @@ The problem with this trick is that =rx= outputs an Emacs-compatible regular exp The [[https://github.com/joddie/pcre2el][pcre2el]] project can convert from a Lisp regular expression to a [[http://www.pcre.org/][PCRE]] (Perl Compatible Regular Expression), acceptable by [[https://github.com/BurntSushi/ripgrep][ripgrep]]. #+begin_src emacs-lisp (use-package pcre2el - :straight (:host github :repo "joddie/pcre2el") :config (defmacro prx (&rest expressions) "Convert the rx-compatible regular EXPRESSIONS to PCRE. @@ -1378,7 +1376,6 @@ The [[https://codeberg.org/akib/emacs-eat][Emulate a Terminal]] project provides #+begin_src emacs-lisp :tangle no (use-package eat :after eshell - :straight (:repo "https://codeberg.org/akib/emacs-eat") :hook (eshell-load . eat-eshell-visual-command-mode)) #+end_src @@ -1787,7 +1784,7 @@ Sometimes you need to change something about the current file you are editing... Here is where we associate all the functions and their hooks with =eshell=, through the magic of =use-package=. #+begin_src emacs-lisp (use-package eshell - :straight (:type built-in) + :ensure nil :custom (eshell-banner-message '(ha-eshell-banner)) :init (setq eshell-error-if-no-glob t diff --git a/ha-evil.org b/ha-evil.org index 33831d6..222676a 100644 --- a/ha-evil.org +++ b/ha-evil.org @@ -360,7 +360,6 @@ Why not use ~f~? I’m reserving the ~f~ for a tree-sitter version that is not a #+BEGIN_SRC emacs-lisp (use-package anzu - :ensure t :config (global-anzu-mode +1)) #+END_SRC @@ -427,7 +426,7 @@ Where I like to align, is on variable assignments, e.g. If you press ~RETURN~ for the /character/ to align, =evil-lion= package simply calls the built-in [[help:align][align]] function. This function chooses a regular expression based on a list of /rules/, and aligning Lisp variables requires a complicated regular expression. Extend [[elisp:(describe-variable 'align-rules-list)][align-rules-list]]: #+begin_src emacs-lisp (use-package align - :straight (:type built-in) + :ensure nil :config (add-to-list 'align-rules-list `("lisp-assignments" diff --git a/ha-general.org b/ha-general.org index cadfee6..85c22df 100644 --- a/ha-general.org +++ b/ha-general.org @@ -907,7 +907,7 @@ Remember these keys in the *Help* buffer: Let's make Info behave a little more VI-like: #+begin_src emacs-lisp (use-package info - :straight (:type built-in) + :ensure nil :general (:states 'normal :keymaps 'Info-mode-map "B" 'Info-bookmark-jump diff --git a/ha-org-publishing.org b/ha-org-publishing.org index 85e8687..6025f05 100644 --- a/ha-org-publishing.org +++ b/ha-org-publishing.org @@ -30,8 +30,7 @@ While the Emacs community have a plethora of options for generating a static web The RSS needs UUIDs: #+BEGIN_SRC emacs-lisp results silent - (use-package uuidgen - :straight (:host github :repo "emacsmirror/uuidgen")) + (use-package uuidgen) (defun org-icalendar-create-uid (&rest ignored) "Returns a UUID." @@ -41,8 +40,7 @@ The RSS needs UUIDs: While the following packages come with Emacs, they aren't necessarily loaded: #+begin_src emacs-lisp :results silent - (use-package ox-rss - :straight (:host github :repo "emacsmirror/ox-rss")) + (use-package ox-rss) (use-package org :config @@ -64,7 +62,6 @@ Render my code with my font colors: Also, we need Jack, and his HTML prowess: #+begin_src emacs-lisp (use-package jack - :straight (:host github :repo "tonyaldon/jack") :commands (jack-html)) #+end_src diff --git a/ha-org-word-processor.org b/ha-org-word-processor.org index 437b4c5..50d1ea7 100644 --- a/ha-org-word-processor.org +++ b/ha-org-word-processor.org @@ -109,7 +109,6 @@ The variable, =org-hide-emphasis-markers=, is key to pretending that Emacs can b #+begin_src emacs-lisp (use-package org-appear - :straight (:type git :host github :repo "awth13/org-appear") :init (setq org-appear-trigger 'manual) :hook ((org-mode . (lambda () @@ -330,7 +329,6 @@ The [[https://github.com/minad/org-modern][org-modern]] project attempts to do a #+begin_src emacs-lisp (use-package org-modern - :straight (:host github :repo "minad/org-modern") :after org :hook ((org-mode . org-modern-mode) (org-agenda-finalize . org-modern-agenda)) @@ -367,7 +365,7 @@ According to an idea by [[https://jft.home.blog/2019/07/17/use-unicode-symbol-to The [[https://github.com/TonCherAmi/org-padding][org-padding]] project looks places extra space before and after headers and blocks (essentially leading), to create a more word-processor-y experience. Great idea, however, I have spent a lot of extra time entering blank lines before and after my headers and blocks: #+begin_src emacs-lisp (use-package org-padding - :straight (:host github :repo "TonCherAmi/org-padding") + :vc (:url "https://github.com/TonCherAmi/org-padding" :rev :newest) :hook (org-mode . org-padding-mode) :config (setq org-padding-block-begin-line-padding '(0.5 . 0.3) diff --git a/ha-org.org b/ha-org.org index d706a17..d2ea18f 100644 --- a/ha-org.org +++ b/ha-org.org @@ -3,7 +3,7 @@ #+date: 2020-09-18 #+tags: emacs org #+startup: inlineimages -#+lastmod: [2026-10-09 Fri] +#+lastmod: [2026-10-20 Tue] A literate programming file for configuring org-mode and those files. @@ -32,7 +32,6 @@ Org is a /large/ complex beast with a gazillion settings, so I discuss these lat #+begin_src emacs-lisp :noweb yes (use-package org ;; TODO: Using the latest org-mode - ;; :straight (:type built-in) :mode (("\\.org" . org-mode)) :init <> @@ -281,7 +280,7 @@ Came up with a great way to search a project for Org-specific files, and wrote [ #+begin_src emacs-lisp (use-package org-find-file - :straight nil + :ensure nil :config (ha-leader "f o" '("load org" . org-find-file))) #+end_src @@ -495,7 +494,6 @@ Need to install and configure Emacs to work with [[https://plantuml.com/][PlantU After installing the [[https://github.com/skuro/plantuml-mode][plantuml-mode]], we need to reference the location: #+begin_src emacs-lisp (use-package plantuml-mode - :straight (:host github :repo "skuro/plantuml-mode") :init (setq org-plantuml-jar-path (expand-file-name "~/bin/plantuml.jar"))) #+end_src @@ -548,8 +546,8 @@ Of course, since we are dealing with Emacs, where we assimilate any good idea. J #+begin_src emacs-lisp (use-package pikchr-mode - :straight (:local-repo "~/src/pikchr-mode") - ;; :straight (:host github :repo "kljohann/pikchr-mode") + :ensure nil + :load-path "~/src/pikchr-mode" :custom (pikchr-executable "~/bin/pikchr")) #+end_src @@ -737,7 +735,7 @@ I have a special version of tweaked [[file:elisp/ox-confluence.el][Confluence ex #+begin_src emacs-lisp (use-package ox-confluence :after org - :straight nil ; Located in my "elisp" directory + :ensure nil ; Located in my "elisp" directory :config (ha-leader :keymaps 'org-mode-map "o E" '("to confluence" . ox-export-to-confluence))) @@ -748,7 +746,6 @@ I have a special version of tweaked [[file:elisp/ox-confluence.el][Confluence ex I’m not afraid of HTML, but I like the idea of doing my HTML work in a Lisp-like way using the [[https://github.com/tonyaldon/jack][jack-html project]]: #+begin_src emacs-lisp (use-package jack - :straight (:host github :repo "tonyaldon/jack") :commands (jack-html)) #+end_src @@ -802,7 +799,7 @@ I've been working on my own [[http://www.howardism.org/Technical/Emacs/focused-w (use-package async) (use-package ha-focus - :straight (:type built-in) + :ensure nil :config (ha-leader "o f" '("begin focus" . ha-focus-begin) @@ -894,9 +891,9 @@ And the Emacs interface to that: #+begin_src emacs-lisp (use-package jinx - :straight (:host github :repo "minad/jinx" :files (:defaults "jinx-mod.c" "emacs-module.h")) :hook (emacs-startup . global-jinx-mode) - :bind (("C-;" . jinx-correct-nearest) + :bind (("C-:" . jinx-correct-nearest) + ("s-:" . jinx-correct-nearest) ("s-;" . jinx-correct-nearest) ([remap ispell-word] . #'jinx-correct)) :config @@ -1439,7 +1436,6 @@ The [[https://github.com/rnkn/olivetti][olivetti project]] sets wide margins and Trying out [[https://protesilaos.com/][Protesilaos Stavrou]]’s [[https://protesilaos.com/emacs/logos][logos project]] as a replacement for [[https://github.com/joostkremers/writeroom-mode][Writeroom-mode]]: #+begin_src emacs-lisp (use-package logos - :straight (:host gitlab :repo "protesilaos/logos") :init (setq logos-outlines-are-pages t logos-outline-regexp-alist diff --git a/ha-programming-ansible.org b/ha-programming-ansible.org index 5471db0..14a76ff 100644 --- a/ha-programming-ansible.org +++ b/ha-programming-ansible.org @@ -35,7 +35,6 @@ The obvious keybindings are ~M-h/j/k/l~ … but that is used … well, somewhat. #+begin_src emacs-lisp :tangle no (use-package spatial-navigate - :straight (:repo "https://codeberg.org/ideasman42/emacs-spatial-navigate") :config (pretty-hydra-define spatial-navigate (:color amaranth :quit-key "q") ("Box" @@ -62,7 +61,6 @@ The [[https://github.com/antonj/Highlight-Indentation-for-Emacs][Highlight-Inden #+begin_src emacs-lisp (use-package highlight-indentation - :straight (:host github :repo "antonj/Highlight-Indentation-for-Emacs") :hook ((yaml-mode . highlight-indentation-mode) (python-mode . highlight-indentation-mode))) #+end_src @@ -119,7 +117,6 @@ Allow this mode in Org blocks: And we hook #+begin_src emacs-lisp (use-package yaml-pro - :straight (:host github :repo "zkry/yaml-pro") :after yaml-mode :hook ((yaml-mode . yaml-pro-mode))) #+end_src @@ -224,7 +221,6 @@ Do I consider all YAML files an Ansible file needing [[https://github.com/k1LoW/ #+begin_src emacs-lisp (use-package ansible - :straight (:host gitlab :repo "emacs-ansible/emacs-ansible") ;; :mode ((rx (or "playbooks" "roles") (one-or-more any) ".y" (optional "a") "ml") . ansible-mode) :config (setq ansible-vault-password-file "~/.ansible-vault-passfile") @@ -242,7 +238,6 @@ Since most Ansible files are a combination of YAML and Jinja, the [[https://gith #+BEGIN_SRC emacs-lisp (use-package poly-ansible - :straight (:host github :repo "emacsmirror/poly-ansible") :after ansible) #+END_SRC diff --git a/ha-programming-clojure.org b/ha-programming-clojure.org index a520579..bc48e5a 100644 --- a/ha-programming-clojure.org +++ b/ha-programming-clojure.org @@ -247,7 +247,7 @@ The /real problem/ is trying to remember all the [[https://github.com/clojure-em And of course, we want to put this with org blocks: #+begin_src emacs-lisp (use-package ob-clojure - :straight (:type built-in) + :ensure nil :custom (org-babel-clojure-backend 'cider) :config diff --git a/ha-programming-elisp.org b/ha-programming-elisp.org index 529c742..16a2566 100644 --- a/ha-programming-elisp.org +++ b/ha-programming-elisp.org @@ -126,35 +126,38 @@ I like the idea of [[https://github.com/abo-abo/lispy][lispy]] for making a Lisp My primary use-case is for its refactoring and other unique features. For instance, I love [[help:lispy-ace-paren][lispy-ace-paren]] that puts an /ace label/ on every parenthesis, allowing me to quickly jump to any s-expression. #+begin_src emacs-lisp - (use-package lispy - :config - (when (fboundp 'evil-define-key) - (evil-define-key '(normal visual) lispyville-mode-map - ;; Jump to interesting places: - "gf" '("ace paren" . lispy-ace-paren) - "gF" '("ace symbol" . lispy-ace-symbol) - (kbd "M-v") '("mark s-exp" . lispy-mark))) ; Mark entire s-expression + (use-package zoutline) - (pretty-hydra-define lispy-debug nil - ("Debug" - (("d" lispy-edebug "Start") - ("j" lispy-debug-step-in "Jump in") - ("r" lispy-eval-and-replace "Eval/Replace")) - "Instrument" - (("f" (eval-defun t) "Function")) - )) + (use-package lispy + :after zoutline + :config + (when (fboundp 'evil-define-key) + (evil-define-key '(normal visual) lispyville-mode-map + ;; Jump to interesting places: + "gf" '("ace paren" . lispy-ace-paren) + "gF" '("ace symbol" . lispy-ace-symbol) + (kbd "M-v") '("mark s-exp" . lispy-mark))) ; Mark entire s-expression - (pretty-hydra-define lisp-refactor nil - ("To" - (("i" lispy-to-ifs "cond→if") - ("c" lispy-to-cond "if→cond") - ("t" lispy-toggle-thread-last "to thread") - ("d" lispy-to-defun "λ→𝑓") - ("l" lispy-to-lambda "𝑓→λ")) - "Convert" - (("F" lispy-flatten "flatten") - ("b" lispy-bind-variable "bind var") - ("B" lispy-unbind-variable "unbind var"))))) + (pretty-hydra-define lispy-debug nil + ("Debug" + (("d" lispy-edebug "Start") + ("j" lispy-debug-step-in "Jump in") + ("r" lispy-eval-and-replace "Eval/Replace")) + "Instrument" + (("f" (eval-defun t) "Function")) + )) + + (pretty-hydra-define lisp-refactor nil + ("To" + (("i" lispy-to-ifs "cond→if") + ("c" lispy-to-cond "if→cond") + ("t" lispy-toggle-thread-last "to thread") + ("d" lispy-to-defun "λ→𝑓") + ("l" lispy-to-lambda "𝑓→λ")) + "Convert" + (("F" lispy-flatten "flatten") + ("b" lispy-bind-variable "bind var") + ("B" lispy-unbind-variable "unbind var"))))) #+end_src ** Lispyville I want an Evil version of [[Lispy]]. The [[https://github.com/noctuid/lispyville][lispyville project]] builds on it to make it Evil. From the README: @@ -280,7 +283,6 @@ These are all good, but the primary keys I need to figure out, are the s-express Wilfred’s [[https://github.com/Wilfred/emacs-refactor/tree/master#elisp][emacs-refactor]] package can be helpful if you turn on =context-menu-mode= and … #+begin_src emacs-lisp (use-package emr - ;; :straight (:host github :repo "Wilfred/emacs-refactor") :config (pretty-hydra-define+ lisp-refactor nil ("To 𝛌" diff --git a/ha-programming-haskell.org b/ha-programming-haskell.org index 459219d..7ea9df9 100644 --- a/ha-programming-haskell.org +++ b/ha-programming-haskell.org @@ -60,7 +60,7 @@ The [[https://github.com/mihaimaruseac/hindent][hindent package]] looks interest * Haskell and Org #+begin_src emacs-lisp (use-package ob-haskell - :straight (:type built-in) + :ensure nil :config (add-to-list 'org-babel-load-languages '(haskell . t))) #+end_src diff --git a/ha-programming-python.org b/ha-programming-python.org index c9afb10..032441a 100644 --- a/ha-programming-python.org +++ b/ha-programming-python.org @@ -355,7 +355,7 @@ The built-in Eglot package natively supports [[https://github.com/Microsoft/pyri #+begin_src emacs-lisp (use-package eglot - :straight nil + :ensure nil :after python :defer t :hook (python-mode . eglot-ensure) @@ -370,7 +370,7 @@ Keybindings for the eglot-based LSP sub-menu, wired into the existing =python-mo (defvar ha-python-lsp-title (font-icons 'faicon "python" :title "Python LSP")) (use-package eglot - :straight nil + :ensure nil :after major-mode-hydra :config (pretty-hydra-define python-lsp (:color blue :quit-key "q" diff --git a/ha-programming-ruby.org b/ha-programming-ruby.org index 477d518..677e1de 100644 --- a/ha-programming-ruby.org +++ b/ha-programming-ruby.org @@ -268,7 +268,7 @@ The built-in Eglot package natively supports [[https://github.com/castwide/solar #+begin_src emacs-lisp (use-package eglot - :straight nil + :ensure nil :after ruby-mode :defer t :hook (ruby-mode . eglot-ensure)) @@ -278,7 +278,7 @@ Keybindings for the eglot-based LSP sub-menu, wired into the =ruby-mode= local l #+begin_src emacs-lisp (use-package eglot - :straight nil + :ensure nil :after ruby-mode :config (ha-local-leader 'ruby-mode-map diff --git a/ha-programming-scheme.org b/ha-programming-scheme.org index 412d2ad..c35494f 100644 --- a/ha-programming-scheme.org +++ b/ha-programming-scheme.org @@ -57,7 +57,7 @@ The [[https://www.nongnu.org/geiser/][geiser project]] attempts to be the interf Do we need a Scheme work for Org Babel? According to [[https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-scheme.html][this document]], we just need to make sure we add the =:session= variable to start the REPL. #+begin_src emacs-lisp (use-package ob-scheme - :straight (:type built-in) + :ensure nil :config (add-to-list 'org-babel-load-languages '(scheme . t))) @@ -105,7 +105,7 @@ Still having difficulty getting the Scheme REPL to output the results back into Normally, I would just [[info:SICP][read the book]], however, if we want to read the [[file:~/.emacs.d/straight/build/sicp/sicp.info][sicp.info]] file, we need this, at least, temporarily: #+begin_src emacs-lisp -(add-to-list 'auto-mode-alist '("\\.info\\'" . Info-mode)) + (add-to-list 'auto-mode-alist '("\\.info\\'" . Info-mode)) #+end_src * Racket Actually, let’s do this with [[https://racket-lang.org/][Racket]]: @@ -122,7 +122,7 @@ While Racket, as a Scheme, should work with Geiser (below), let’s also get [[h Can we get Racket working with Org? #+begin_src emacs-lisp (use-package ob-racket - :straight (:host github :repo "DEADB17/ob-racket") + :vc (:url "https://github.com/DEADB17/ob-racket" :rev :newest) :after org :config (add-to-list 'org-babel-load-languages '(racket . t))) diff --git a/ha-programming.org b/ha-programming.org index 2b01061..e4e7b31 100644 --- a/ha-programming.org +++ b/ha-programming.org @@ -33,7 +33,6 @@ The [[https://github.com/eki3z/mise.el][mise.el]] project overcomes the [[https: #+BEGIN_SRC emacs-lisp (use-package mise - :straight (:type git :host github :repo "eki3z/mise.el") :hook (after-init . global-mise-mode)) #+END_SRC @@ -84,7 +83,7 @@ For all programming languages, I would like to now default to absolute line numb While Emacs has options for viewing and moving around code, sometimes, we could /collapse/ all functions, and then start to expand them one at a time. For this, we could enable the built-in [[https://www.emacswiki.org/emacs/HideShow][hide-show feature]]: #+begin_src emacs-lisp :tangle no (use-package hide-show - :straight (:type built-in) + :ensure nil :init (setq hs-hide-comments t hs-hide-initial-comment-block t @@ -238,7 +237,6 @@ Why use [[https://www.flycheck.org/][flycheck]] over the built-in =flymake=? Spe #+begin_src emacs-lisp (use-package flycheck - :straight (:host github :repo "flycheck/flycheck") :init (setq next-error-message-highlight t) :bind (:map flycheck-error-list-mode-map @@ -426,15 +424,15 @@ Note that Emacs already has the ability to download and install grammars, so fol #+begin_src emacs-lisp (when (treesit-available-p) (use-package treesit - :straight (:type built-in) + :ensure nil :preface (setq treesit-language-source-alist '((bash "https://github.com/tree-sitter/tree-sitter-bash") ;; (c "https://github.com/tree-sitter/tree-sitter-c/" "master" "src") - (clojure "https://github.com/sogaiu/tree-sitter-clojure" "master" "src") + ;; (clojure "https://github.com/sogaiu/tree-sitter-clojure" "master" "src") ;; (cpp "https://github.com/tree-sitter/tree-sitter-cpp/" "master" "src") ;; (cmake "https://github.com/uyha/tree-sitter-cmake") - (css "https://github.com/tree-sitter/tree-sitter-css") + ;; (css "https://github.com/tree-sitter/tree-sitter-css") (dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile" "main" "src") ;; From my private cloned repository: ;; (dockerfile "file:///opt/src/github/tree-sitter-dockerfile" "main" "src") @@ -442,8 +440,8 @@ Note that Emacs already has the ability to download and install grammars, so fol ;; (elisp "https://github.com/Wilfred/tree-sitter-elisp") ;; (elixir "https://github.com/elixir-lang/tree-sitter-elixir" "main" "src") ;; (erlang "https://github.com/WhatsApp/tree-sitter-erlang" "main" "src") - (go "https://github.com/tree-sitter/tree-sitter-go") - (templ "https://github.com/vrischmann/tree-sitter-templ") + ;; (go "https://github.com/tree-sitter/tree-sitter-go") + ;; (templ "https://github.com/vrischmann/tree-sitter-templ") ;; (haskell "https://github.com/tree-sitter/tree-sitter-haskell" "master" "src") (html "https://github.com/tree-sitter/tree-sitter-html") ;; (java "https://github.com/tree-sitter/tree-sitter-java" "master" "src") @@ -452,11 +450,11 @@ Note that Emacs already has the ability to download and install grammars, so fol ;; (julia "https://github.com/tree-sitter/tree-sitter-julia" "master" "src") ;; (lua "https://github.com/MunifTanjim/tree-sitter-lua" "main" "src") (make "https://github.com/alemuller/tree-sitter-make") - (markdown "https://github.com/ikatyang/tree-sitter-markdown") + ;; (markdown "https://github.com/ikatyang/tree-sitter-markdown") ;; (meson "https://github.com/Decodetalkers/tree-sitter-meson" "master" "src") - (python "https://github.com/tree-sitter/tree-sitter-python") - (ruby "https://github.com/tree-sitter/tree-sitter-ruby" "master" "src") - (rust "https://github.com/tree-sitter/tree-sitter-rust" "master" "src") + ;; (python "https://github.com/tree-sitter/tree-sitter-python") + ;; (ruby "https://github.com/tree-sitter/tree-sitter-ruby" "master" "src") + ;; (rust "https://github.com/tree-sitter/tree-sitter-rust" "master" "src") (toml "https://github.com/tree-sitter/tree-sitter-toml") ;; (tsx "https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src") ;; (typescript "https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src") @@ -503,10 +501,10 @@ And enable the languages: #+end_src *** Combobulate I like [[file:ha-programming-elisp.org::*Clever Parenthesis][Clever Parenthesis]], but can we extend that to other languages generally? After reading Mickey Petersen’s essay, [[https://www.masteringemacs.org/article/combobulate-structured-movement-editing-treesitter][Combobulate project]], I decided to try out his [[https://github.com/mickeynp/combobulate][combobulate package]]. Of course, this can only work with the underlying tooling supplied by the [[https://emacs-tree-sitter.github.io/][Tree Sitter]] → -#+begin_src emacs-lisp +#+begin_src emacs-lisp :tangle no (when (treesit-available-p) (use-package combobulate - :straight (:host github :repo "mickeynp/combobulate") + :vc (:url "https://github.com/mickeynp/combobulate" :rev :newest) :after treesit :hook ((yaml-ts-mode . combobulate-mode) ;; (css-ts-mode . combobulate-mode) @@ -517,7 +515,7 @@ I like [[file:ha-programming-elisp.org::*Clever Parenthesis][Clever Parenthesis] #+end_src Now, I can create an /interface/ of keystrokes to jump around like a boss: -#+begin_src emacs-lisp +#+begin_src emacs-lisp :tangle no (when (treesit-available-p) (use-package combobulate :general @@ -565,7 +563,7 @@ Now, I can create an /interface/ of keystrokes to jump around like a boss: Mickey’s interface is the [[help:combobulate][combobulate]] function (or ~C-c o o~), but mine is more /evil/. I can create a /helper function/ to allow me to jump to various types of—well, /types/: -#+begin_src emacs-lisp +#+begin_src emacs-lisp :tangle no (when (treesit-available-p) (use-package combobulate :config @@ -686,7 +684,7 @@ Emacs has two LSP projects, and while I have used [[LSP Mode]], but since I don #+begin_src emacs-lisp (use-package eglot - :straight nil + :ensure nil :commands eglot-ensure :config (setq eglot-autoshutdown t)) @@ -1465,7 +1463,7 @@ While I don't like writing them, I can't get away from them. Check out the goodi While filename extensions work fine most of the time, I don't like to pre-pend =.sh= to the shell scripts I write, and instead, would like to associate =shell-mode= with all files in a =bin= directory: #+begin_src emacs-lisp (use-package sh-mode - :straight (:type built-in) + :ensure nil :mode (rx (or (seq ".sh" eol) "/bin/")) :init diff --git a/ha-remoting.org b/ha-remoting.org index 5fe0e99..655aca1 100644 --- a/ha-remoting.org +++ b/ha-remoting.org @@ -28,7 +28,7 @@ A literate configuration for accessing remote systems. [[https://www.emacswiki.org/emacs/TrampMode][Tramp]] allows almost all Emacs features to execute on a remote system. #+begin_src emacs-lisp (use-package tramp - :straight (:type built-in) + :ensure nil :config ;; Use remote PATH on tramp (handy for eshell). @@ -42,7 +42,7 @@ A literate configuration for accessing remote systems. Will Schenk has [[https://willschenk.com/articles/2020/tramp_tricks/][a simple extension]] to allow editing of files /inside/ a Docker container: #+begin_src emacs-lisp (use-package tramp - :straight (:type built-in) + :ensure nil :config (push '("docker" . ((tramp-login-program "docker") (tramp-login-args (("exec" "-it") ("%h") ("/bin/sh"))) @@ -75,7 +75,7 @@ Which means, I need to put it as a link in an org file. #+begin_src emacs-lisp (use-package tramp-sh :after tramp - :straight (:type built-in) + :ensure nil :custom (tramp-use-ssh-controlmaster-options nil)) #+end_src * Remote Terminals @@ -124,7 +124,7 @@ I'm not giving up on Eshell, but I am playing around with [[https://github.com/a VTerm has an issue (at least for me) with ~M-Backspace~ not deleting the previous word, and yeah, I want to make sure that both keystrokes do the same thing. -#+begin_src emacs-lisp :tangle no +#+begin_src emacs-lisp (use-package vterm :config (setq vterm-shell "zsh" @@ -162,7 +162,7 @@ An odd use case I have: working in a Terminal session in one buffer window, and Now, I can type: ~s-G~ (with the shift), select the line with Avy, and type ~N~ to have it copy/paste into the buffer: -#+BEGIN_SRC emacs-lisp :tangle no +#+BEGIN_SRC emacs-lisp (use-package vterm :config (defun ha-vterm-avy-paste-line () @@ -180,15 +180,9 @@ Now, I can type: ~s-G~ (with the shift), select the line with Avy, and type ~N~ ** Eat While not as fast as [[https://github.com/akermu/emacs-libvterm][vterm]], the [[https://codeberg.org/akib/emacs-eat][Emulate a Terminal]] project (eat) is fast enough, and doesn’t require a dedicate library that requires re-compilation. While offering [[https://elpa.nongnu.org/nongnu-devel/doc/eat.html][online documentation]], I’m glad for an [[info:eat#Top][Info version]]. -#+BEGIN_SRC emacs-lisp +#+BEGIN_SRC emacs-lisp :tangle no (use-package eat - :straight (:host codeberg :repo "akib/emacs-eat" - :files ("*.el" ("term" "term/*.el") "*.texi" - "*.ti" ("terminfo/e" "terminfo/efo/e/*") - ("terminfo/65" "terminfo/65/*") - ("integration" "integration/*") - (:exclude ".dir-locals.el" "*-tests.el"))) - :commands (eat eat-make eat-project) + ;; :commands (eat eat-make eat-project) :bind (:map eat-semi-char-mode-map ("C-c C-t" . ha-eat-narrow-to-shell-prompt-dwim)) :config diff --git a/initialize b/initialize index 067bd4c..8c7836e 100755 --- a/initialize +++ b/initialize @@ -35,15 +35,15 @@ cat > "$HAMACS_DEST/early-init.el" < "$HAMACS_DEST/init.el" <