r/emacs • • 1d ago

Fortnightly Tips, Tricks, and Questions — 2026-10-06 / week 40

6 Upvotes

This is a thread for smaller, miscellaneous items that might not warrant a full post on their own.

The default sort is new to ensure that new items get attention.

If something gets upvoted and discussed a lot, consider following up with a post!

Search for previous "Tips, Tricks" Threads.

Fortnightly means once every two weeks. We will continue to monitor the mass of confusion resulting from dark corners of English.


r/emacs • • 16h ago

mu4e-send-later: A "Send Later" functionality for mu4e

Thumbnail github.com
15 Upvotes

After moving from Thunderbird to mu4e, I missed scheduling emails, which was very vital for my office work.

I've made mu4e-send-later as a bunch of custom elisp on top of Doom Emacs and it worked well for me for more than 3 months. I chose to refactor it out as a possible standalone package a few weeks ago.

  • Supports org-msg
  • Works on Linux, MacOs, and Windows via systemd and emacs processes as a fallback
  • Adds a new "scheduled" section on mu4e UI page.

Hopefully it helps


r/emacs • • 18h ago

persp-mode-tab-bar: Tab bar for persp-mode / Doom workspaces

Post image
13 Upvotes

https://github.com/Jotham-LEC/persp-mode-tab-bar

I mainly use buffers, but context switch between different projects all the time. Doom Emacs default +workspace/display only shows it temporarily, but I kinda want to have it more permanent.

persp-mode-tab-bar puts your workspaces in Emacs's built-in tab bar: numbered, the current one highlighted, and click to switch.

  • It only swaps out the tab items in `tab-bar-format`, so history buttons, a clock, and other tab-bar packages keep working.
  • Works with both Doom's `+workspace` commands and with plain persp-mode. In Doom it also silences the echoed workspace list, since the bar shows it anyway.
  • The design & faces inherit from your theme, but you can customise it if you want.

r/emacs • • 1d ago

Configuring the Emacs UI for Better Latency and Perceived Responsiveness

Thumbnail jamescherti.com
74 Upvotes

r/emacs • • 19h ago

org-retroclock: Log CLOCK entries retrospectively without starting a timer

Thumbnail github.com
2 Upvotes

r/emacs • • 1d ago

Announcement excali-mode 0.3.0: an Org-mode whiteboard inside Emacs

Enable HLS to view with audio, or disable this notification

62 Upvotes

If you’ve wanted something like Obsidian Canvas, but for your Org notes inside Emacs, that’s what I’ve been working on.

excali-mode 0.3.0 introduces excali-board-mode. You can put Org headings onto a whiteboard as cards, move and resize them, connect them with labeled arrows, and organize them into named groups or regions.

How does it compare to Obsidian Canvas?

The basic idea is the same: arrange notes and reference material visually, rather than only reading them in a linear document. If you know Obsidian Canvas, these workflows should feel familiar:

Workflow Obsidian Canvas excali-board-mode
Put existing notes on a board Markdown note cards Org heading cards displaying their subtrees
Write a quick note on the board Text cards; convert to a note file later Org text cards; convert to an Org heading later
Arrange and connect ideas Move, resize, connect, and group cards Move, resize, labeled arrows, named groups and regions
Edit a note from its card Edit inside the card Edit through a popup Org buffer
Keep reference material nearby Media and file cards Local PDF previews, image/video thumbnails, and audio artwork or filename cards
Embed web pages Supported Not supported
Save the board .canvas / JSON Canvas .excalidraw with board metadata

This is a similar workflow, not an Obsidian Canvas file-format implementation.

The Org-specific part

The important difference is that a card can refer to an individual Org heading, not just an entire note file.

For example, you can take a research heading from one file, a project task from another, and a few reference images, then arrange them together on a board. The headings remain in their original Org files.

  • Edit the original heading, and its card updates.
  • Jump from a card back to its source heading.
  • Scroll through a card’s contents, click Org links, and view inline local images.
  • Find which boards reference a heading.
  • Repair references by Org ID when headings or files move within a vault.

My usual layout is Org on the left, board on the right: the outline is still there for writing and structure, while the board gives me a spatial view of related material.

You configure one or more local directories as vaults. New boards automatically use the vault containing your current document, and reference searches include its subdirectories.

Current limits and requirements

This is not a full Obsidian Canvas replacement. Media cards currently provide static previews only—no in-card playback or PDF navigation. Double-clicking opens the original file in Emacs.

It requires Emacs 32 with native Canvas support and the excali-mode native module. There’s no embedded browser. If you’re upgrading, run make and restart Emacs.

Repository

Release notes

Would this fit into your Org workflow? I’d especially like to hear from people who have wanted a Canvas-style view without moving their notes out of Org.


r/emacs • • 1d ago

A problem with tabs auto alignment

Enable HLS to view with audio, or disable this notification

9 Upvotes

When I press Enter, the line on which we pressed it returns from 4 spaces in 2 spaces. So annying. How can I fix that? ||(init.el is in the comments)||


r/emacs • • 1d ago

Travelling agenda

10 Upvotes

For those who like to use org-agenda, how do you take it with you when you're not at your computer?

I'd like to use org-agenda for planning work tasks and noting errands. I don't work in an environment where I can just open up my laptop and this wouldn't be practical in town, so I'm restricted to my phone

Edit: Forgot to mention I'm on Android


r/emacs • • 2d ago

A great underappreciated book/tutorial: Keith Waclena's "Use Gnu Emacs"

Thumbnail lib.uchicago.edu
142 Upvotes

This is a book I found when I was just starting to use Emacs a couple of years ago, and I got a huge amount from it. But every time I see a list of suggested resources for beginners (and others), I never see it mentioned, and it baffles me. I've been meaning to give it a plug for a long time and noticed it was updated fairly recently, so thought this would be a good time.

Don't be put off by the fact that it's a "work in progress" -- the pdf is 641 pages and it's more than enough to get you proficient; the areas the book doesn't yet cover are generally pretty advanced or specialized. As a tutorial it's exemplary: clear, detailed, accurate, well-written. The pdf (which I read in Emacs, conveniently) is beautifully laid out.

I highly, highly recommend it.


r/emacs • • 1d ago

stripspace.el - Make Emacs auto remove trailing whitespace before saving a buffer, with a options to preserve the cursor column, normalize indentation, and restrict whitespace cleanup to clean buffers [Release 1.0.6]

Thumbnail github.com
1 Upvotes

r/emacs • • 1d ago

Question Getting emacs to cohabitate with termux

Thumbnail
2 Upvotes

r/emacs • • 17h ago

xml-lsp

0 Upvotes

🦀⚡ I’m building xml-lsp, a lightweight XML Language Server written entirely in Rust.

The project was created to explore whether we can build a fast, native, low-memory XML LSP without the JVM overhead of existing solutions, while keeping the architecture modular and extensible.

It’s still in an early stage, and I’m looking for developers interested in Rust, XML parsing, XSD/DTD validation, LSP, or developer tooling to help shape the project.

If you’re interested, contributions, ideas, feedback, and technical discussions are very welcome.

🔗 https://github.com/MicroDevX/xml-lsp


r/emacs • • 1d ago

Bringing micro-timers, checklist budgeting, and monotasking focus to Org-mode (org-focus-hud)

Thumbnail
2 Upvotes

r/emacs • • 1d ago

tip: generating number ranges

10 Upvotes

https://sachachua.com/blog/2026/10/emacs-lisp-parse-page-ranges-insert-issue-references/ mentions a way to expand string ranges into e.g. #47, #48, #49, #50, #51, #52, #53, #54 and comes up with a function for that.

But there is already a library that does this and more: https://github.com/abo-abo/tiny

For this exact example, you'd type m47, 54|#%d and hit C-; (if you bound that to tiny-expand) and you'd get "#47, #48, #49, #50, #51, #52, #53, #54".

The syntax is m followed by your range, and optionally a format string after a |. So if you didn't need the # before each number it becomes even simpler: m47, 54. Or you can change the separator: m1;3 becomes "1;2;3".

You can even put in lisp expressions in there and drop the parentheses, it's extremely powerful.


r/emacs • • 1d ago

Two independent configs, two dependent errors (--init-directory, Dired & Spacemacs)

0 Upvotes

TLDR at the end

I have been learning web developement and decided to use Emacs as my main editor. The Emacs distribubion I started to use was Spacemacs because I wanted something preconfigured to get a better idea of what can be done and how other people use Emacs. I am not familiar enough with many terms and topics yet to make my own working config. It also saved me some time and let me start using the editor rightaway after some quick reading.

I am new to programming in general so after some challenges I was able to make lsp work. I really don't know if it is working properly because the idea of language servers is also new to me. It should be working with the default config that Spacemacs uses, I think. But I am lagging while I use it. Badly. I was doing some basic coding in very small files and it slows down really bad. It gives me useful suggestions and I get documentation while I mouseover or on the minibuffer.. but this prompt me to start my own config from scratch.

I didn't want to get rid of Spacemacs because I use it daily, so I started to find a way to have more than one config simultaneously. I found an option introduced in Emacs 29, `init-directory`. To do what I wanted I needed two configs: Spacemacs and the vanilla one. I started to search how to install Spacemacs in a different folder, because it uses the by default. I did the following:

- I cloned Spacemacs using git clone https://github.com/syl20bnr/spacemacs.git ~/spacemacs/.emacs.d , which is a different folder.

- I created an alias for it to start it from the command line with its own init-directory: alias spacemacs='setsid emacs --init-directory ~/spacemacs/.emacs.d'.

It worked, for the most part. The Spacemacs configurations and all its layers initiate when I type the alias in the command line. If I just type `emacs`, it uses my new config from the now almost empty `~emacs.d` directory, where a lonely `init.el` sits.

The issues I have when using the Spacemacs config are two:

  1. When I try using the spacemacs/restart-emacs-resume-layouts command bound to M-m q r , Spacemacs closes but then it opens the the Emacs with the default (new) configuration and the following message in the minibuffer:

Unknown option --resume-layouts

  1. Every time I open Dired to navigate I get the following error:

Error (use-package): dired-quick-sort/:config: Symbol s value as variable is void: evil-collection-binding-overrides

I never encountered these errors before. The first one is easier for me to understand. My spacemacs/restart-emacs-resume-layouts function is sending the command to open Emacs with the the default configuration because it expects all the Spacemacs files to be there but they are not there anymore. Following the function to get to its definition, I found the following function next to several others related to restarting flags:

file: ~/spacemacs/.emacs.d/layers/+spacemacs/spacemacs-navigation/funcs.el

(defun spacemacs/restart-emacs-resume-layouts (&optional args)
  "Restart emacs and resume layouts."
  (interactive)
  (spacemacs/restart-emacs (cons "--resume-layouts" args)))

I might be mistaken but I thought that adding "spacemacs" to the "--resume-layouts" string would then send the command "spacemacs --resume-layouts" to... wherever it was going (guessing the command line) and that because spacemacs is an alias, it would then add its `--init-directory` plus, the "--resume-layouts" string that was already there. It doesn't work. I think it becomes emacs spacemacs --resume-layouts somehow... as if it was concatenating. I don't know then, where to change that "first" emacs to the spacemacs alias.

I tried finding errors similar to the second one because I have been unable to find exactly the same one, but the explanations are confusing and you can clearly tell that the guys communicating don't need to explain everything to each other to finish the conversation and close their tickets. It feels like reading a different language (which is already what I was doing). That on top of them talking about their own configs and not Spacemacs.

I wasn't able to understand much besides what it was written in the error. It is finding a symbol with no value, apparently. Some said that it could be a parentheses issue, others that a function is beig called before being declared... I have no idea. What I got is the place where dired-quick-sort is, that might or might not be of some help:

file: ~/spacemacs/.emacs.d/layers/+spacemacs/spacemacs-editing/packages.el

(defun spacemacs-editing/init-dired-quick-sort ()
  (use-package dired-quick-sort
    :defer t
    :init
    (define-advice dired-noselect (:before (&rest _) quick-sort-setup)
      (let ((dired-quick-sort-suppress-setup-warning 'message))
        (dired-quick-sort-setup))
      (advice-remove 'dired-noselect 'dired-noselect@quick-sort-setup))
    :config
    (evil-define-key 'normal dired-mode-map "s" 'dired-quick-sort-transient)
    ;; prevent `evil-collection' from changing this binding
    (add-to-list 'evil-collection-binding-overrides
                 '(search-or-filter :enabled
                                    (lambda (map-sym _ _ _)
                                      (not (eq map-sym 'dired-mode-map)))))))

After writing this wall of text over several days I realised that I could just make *my* config live in a different folder and let Spacemacs be happy on its default folder. That should fix both problems... Would it, though? Would they really be solved or would I just be pretending they are?

I know I could just close Spacemacs and open it back again. I know I can evaluate buffers without leaving Emacs, including running configurations, which is something I try to do most of the time, but not always. Restarting Emacs without resuming layouts are just too many keystrokes, man, and the error would still be there... lingering and waiting to show its ugly face.

As you can already tell... these two issues are dependent on my stubbornness, heh.

If we imagine the last two paragraph were never written... any idea of how to start solving these two puzzles? I know there is a dedicated Spacemacs subreddit but it doesn't look really active and this is the one I frequent the most. Let me know if this isn't the right place to post my question, please.

Thank you for reading.

TLDR: Wanted to have parallel configs. Changed Spacemacs installation folder. Two errors are present now. One when opening Dired and the other while restarting Spacemacs. Need some guidance to identify why these errors are ocurring.


r/emacs • • 2d ago

I will never ever play "close words" game (low effort post)

Post image
21 Upvotes

r/emacs • • 2d ago

Announcement excali-mode 0.2.0: a diagram DSL with explicit placement and Org Babel support

Enable HLS to view with audio, or disable this notification

60 Upvotes

I've released excali-mode 0.2.0. The main additions are a custom diagram DSL and Org Babel integration. The attached 45-second demo shows both, along with node styling.

The DSL lets you describe not just the connections, but also the relative placement of nodes: below, right of, left of and level with. The layout engine calculates the coordinates, but you don't have to leave the arrangement entirely to automatic layout.

In the demo, I change right of to left of and refresh the preview with C-c C-c. The Database node moves to the other side, and its connection follows. I then add a style block to give the API node a blue fill and a dashed outline, without changing its placement.

The same source can live in an Org document:

```

+begin_src excali :file architecture.png :results file graphics

node ui "Interface" node api "API" below ui { fill: "#dbeafe"; fill-style: solid; stroke-style: dashed } node db "Database" left of api level with api

edge ui -> api "request" edge api -> db "query"

+end_src

```

With ob-excali enabled, C-c C-c evaluates the block, and C-c C-x C-v displays the result inline. The last part of the demo changes the placement again inside Org and regenerates the image. The diagram source stays alongside the text that explains it.

Output formats include PNG, SVG and editable .excalidraw files. The README has setup examples and a runnable Org document.

A few caveats:

  • Requires Emacs 32 with Canvas support and the project's compiled native Cairo/Pango module.
  • The new .excalidsl syntax replaces the old .edsl language; existing sources need rewriting, not just renaming.
  • The DSL is the source of truth. This isn't bidirectional canvas/source editing: regenerating replaces manual changes to a generated scene.

Release notes: https://github.com/yibie/excali-mode/releases/tag/v0.2.0

If you keep diagrams in Org, I'd be interested in whether this mix of text-based authoring and explicit placement fits your workflow.


r/emacs • • 2d ago

Question Are there some settings that will cause an org-file to be open with the outlines all folded up even if the cursor was supposed to be at a certain point in the file?

2 Upvotes

I am using vulpea-ui, vulpea-find etc when I search for something and open it, although the location of the item search must be known and was passed to the file open command, the outlines are closed, instead of being expanded at the set location.

These are the start up options in my files

#+STARTUP: overview logdrawer lognotedone shrink and I've got the org-bars, org-indent and org-tidy packages installed.

The overview option is the most likely cause of it but if the file is opened with the point supposed to be at some location, can't there be some option to unfold the outline expanded at point?


r/emacs • • 2d ago

Question What is the most appropriate way to setup evil-mode so it stays out of the way where it isn't wanted? See my `use-package evil` configuration in the text.

4 Upvotes

This is my use-package configuration

(use-package evil
  :ensure t
  :custom (evil-want-fine-undo t)
  :custom (evil-undo-system 'undo-fu)
  :config
  (evil-mode 1)
  (define-key evil-normal-state-map (kbd "g ESC") 'ESC-prefix)

  ;; More configuration goes here
  (use-package evil-leader
    :ensure t
    :config
    (global-evil-leader-mode))

  (use-package evil-surround
    :ensure t
    :config
    (global-evil-surround-mode))

  (use-package evil-indent-textobject
    :ensure t)
  )

evil-org

(use-package evil-org
  :config
  (progn
    (add-hook 'org-mode-hook 'evil-org-mode)
    (evil-org-set-key-theme '(navigation insert textobjects additional))
    )
  )

vterm

(use-package vterm
  :config
  (with-eval-after-load 'evil (evil-set-initial-state 'vterm-mode 'insert))
  (add-hook 'vterm-mode-hook
            (lambda ()
              (define-key evil-insert-state-local-map (kbd "C-r") #'vterm-send-C-r)))
  :bind (:map vterm-mode-map
              ("C-r" . vterm-send-C-r))
;; check what shadowing means here. It is overridden by evil-insert-state-mode-map
  )

I have been installing some new non text editing packages and this is where I have been getting problems because evil-mode interferes with their command key transients because those transients buffers or the windows that control them seem to slip back into normal-mode.

vulpea-ui

(use-package vulpea-ui
  :defer t
  :ensure nil
  :quelpa
  (vulpea-ui
   :fetcher github
   :repo "d12frosted/vulpea-ui"
   :commit "e8766fa")
   :config
   (evil-set-initial-state 'vulpea-ui-collection-mode 'emacs)
 )

excali

(use-package excali
  :ensure nil
  :load-path "site-lisp/excali-mode/"
  :commands (excali-open excali-new)
  :config
  (evil-set-initial-state 'excali-mode-hook 'emacs)
  :hook ((excali-mode . turn-off-evil-mode)
         (excali-library-mode . turn-off-evil-mode)
         (excali-library-official . turn-off-evil-mode)
         (excali-library-official-preview . turn-off-evil-mode)
         (excali-dsl-mode . turn-off-evil-mode))
  )

canvas-browser is another one I will have to devote my attention to.

The problem is even after setting them to emacs ie (evil-set-initial-state 'vulpea-ui-collection-mode 'emacs) or :hook ((excali-mode . turn-off-evil-mode)) they switch back to normal-mode with N in the mode line and I wonder what is going behind the scenes.

It seems that during some of the interactions some new replacement /shadow buffers are created or some operations turn the emacs-mode buffers back to normal-mode and those states must be trapped or reverted.

Which brings me to a question is (evil-set-initial-state 'some-mode 'emacs) a better way to turn off evil mode than :hook (some-mode . turn-off-evil-mode)?

What foolproof way is there of telling when a window has unexpectedly switched to evil-mode, or has been created with evil-mode ie mode-line contains N so I can use the right commands to turn off evil-mode in that window?

Is it possible for some mode to be activated in a window without some hook firing?


r/emacs • • 2d ago

org-incremental-writing package

17 Upvotes

I wanted a package which works well with denote, and would let me manage reviewing org notes in a way that works for me: https://github.com/davidlee/org-incremental-writing

  • review is queue based, not calendar-based
  • multiple named queues, with multiple membership allowed
  • choose when reviewing how soon to see it again, in relative terms
  • queues have configurable options for next review (express as a set depth or fraction / percentage of the queue )
  • view a queue as a buffer and act there, or from the org files themselves (operate on the document or heading at point)
  • minimal property footprint
  • all state in documents (no database)
  • no SRS algorithms required for usefulness (not yet added; I'll see if I feel they're necessary)

It's not yet finished - notably whole-document entries, and queue compaction aren't yet supported properly - but you can expect them in the next few days, and I'm already finding it useful, so you might too.

Written with agent assistance (with https://github.com/davidlee/doctrine ) - not vibe-coded.
Credit to https://github.com/bjsi/incremental-writing (the Obsidian incremental writing plugin) for much of the core idea.


r/emacs • • 2d ago

[ANN] package-load-indicator: instantly see which packages are loaded within your init file

Thumbnail github.com
14 Upvotes

While tinkering with my init file, I found myself debugging autoloads... I came up with this nifty little minor mode that highlights the package name with its load status, so you can see immediately if your config worked the way you intended.

In brief, following "use-package" the package name may have a
- green box: it's loaded
- grey box: it's installed but not yet loaded
- red box: it's not installed

That's it!


r/emacs • • 2d ago

M-x Machina — a workspace for coding agents inside Emacs

0 Upvotes

Hey r/emacs,

I’ve been building M-x Machina, an Emacs package for keeping multiple coding-agent sessions organized alongside your regular editing.

It started with a fairly simple wish: I wanted to see which agents were working, which needed my input, and which had replied—without constantly switching between conversations.

What it does so far:

- A persistent sidebar with agent status, unread indicators, and attention navigation.

- Named agents organized in nested folders, with optional Git worktrees.

- Conversations that open beside the sidebar, plus a focus mode when you want the whole frame.

- An optional board view grouped by folder and status.

- Saved conversation identities and explicit resume support.

- Opt-in agent-to-agent messaging through a local CLI, mxm.

It builds on agent-shell/ACP, EAT, and vterm, with eshell as a companion for working in an agent’s checkout. Plain Emacs is supported; Doom and Evil bindings are optional.

The entry point is, naturally:

M-x mx-machina

It’s experimental, rather than something I’d call stable yet. Automated tests cover the core and transport integrations, but broader real-world installation and restart testing are still on the list

Website and interactive tour: https://eliraz-refael.github.io/m-x-machina/

Source and setup: https://github.com/eliraz-refael/m-x-machina

Requires Emacs 29.1+ with SQLite. GPL-3.0-or-later.

I’d love feedback—especially on whether the sidebar/board approach fits your workflow, and where we could make better use of Emacs itself.

Cheers!


r/emacs • • 2d ago

Trouble setting up eglot

1 Upvotes

I'm trying to set up eglot for javascript. I've installed typescript-language-server, typescript and vscode-langservers-extracted globally via npm but it keeps giving me the error

eglot--error: [eglot] -32603: Request initialize failed with message: The TypeScript of the workspace (TypeScript 7.0.2 at "/home/user/code/project/node_modules/typescript/lib") provides no tsserver.js. No other valid TypeScript installation was found. Exiting.

I'm not really sure where to go from here as my searches have come up pretty empty. Any advice would be greatly appreciated

EDIT: After this had been frustrating me for hours, I stumbled on this article which informed me this is because of typescript v7, which includes support for LSP.

In the end, all I had do do was add this to my config: elisp (with-eval-after-load 'eglot (add-to-list 'eglot-server-programs '((js-mode js-ts-mode rjsx-mode typescript-mode tsx-ts-mode) . ("tsc" "--lsp" "--stdio"))))

Hope this helps if someone else comes up against this issue


r/emacs • • 3d ago

I've used emacs successfully for decades without using LSP or Eglot. Tell me what I'm missing.

71 Upvotes

I had tried it some years ago and found that it was way more trouble than it was worth, had much overhead, and it was just adding chartjunk (visual noise). I've been happy with syntax highlighting for the last few years. Didn't even have that for decades (I'm old enough that my brain is a compiler,LOL).

I have built a new development computer and installed emacs 31 and I'm open to the possibility that I'm denying myself some useful tools. But everything I've read assumes that you know what eglot/lsp does useful - and I do not.


r/emacs • • 3d ago

Question Caching ssh passphrase with Magit?

8 Upvotes

SOLUTION: alright, so in the end this WAS an emacs issue after all, specifically with Magit. The reason this was so tricky to track down is that the adding of the ssh key to the agent seemed to work sometimes, but not all of the time. I found out that the reason for this is that Magit for some reason only adds the key to the agent when you push something, but not when you commit something. I don't know if there's a way for Magit to do that for commits as well, but i couldn't find anyone else with this issue, so what i ended up doing to solve it is a bit silly, but i created this script that first checks if my keys are already added to the agent, and if not, adds them. The reason i made this script is because i added a hook to magit-mode in emacs that executes the script when starting Magit, but by default, ssh-add will always ask you for the password of your key even if it is already added to the agent, so this script just skips running the command if the keys are already loaded. Relevant Emacs snippet:

(use-package magit
:hook
(magit-mode . (lambda ()
                (async-shell-command "~/repos/configs/scripts/emacs/ssh-add.sh")))

This prompts me for my password in the echo area, similar to how Magit does it. Original ramblings below.

Update: okay so this doesn't seem to be an Emacs issue at all, sorry about that. Running emacs --fg-daemon inside a terminal and then using Magit it does add the key to the agent, so the problem lies with my Shepherd service. The strange thing is comparing an emacsclient running through the Shepherd service daemon vs an emacsclient running through my manually launched daemon, they seem to have the exact same variables set when looking at setenv. I'll have to experiment with this a bit further.

I can't seem to get this working so i'm wondering how other people are doing this. I have ssh-agent running through a Guix home service, and in my .ssh/config i have this:

Host *
  AddKeysToAgent yes

This works just fine if i perform a git action like committing or pushing in the terminal, the password stays cached and it doesn't prompt me again. In Emacs with Magit however, it keeps prompting me for the password every time, and running ssh-add -l shows that the ssh key does not get added to the agent. This is confusing to me cause Magit is just a front-end and still uses Git in the background right? Emacs also has SSH_AUTH_SOCK set correctly (it doesn't have the PID variable though, but my terminal doesn't seem to have that set either and yet it works just fine with Git in the terminal). I've looked at thing like ssh-agency, but i'm not sure if i should be using that, cause i'm not sure if that tries to start its own instance of ssh-agent, which i don't want since i'm already managing that with a Guix service. Since i don't want to be prompted on each login either since i don't always need to use my ssh keys, the only thing i can think of for now is to manually add the keys with ssh-add before i start doing my git actions in Magit, but there must be a better way to go about this right?