this post was submitted on 18 Oct 2023
1 points (100.0% liked)
Emacs
314 readers
2 users here now
A community for the timeless and infinitely powerful editor. Want to see what Emacs is capable of?!
Get Emacs
Rules
- Posts should be emacs related
- Be kind please
- Yes, we already know: Google results for "emacs" and "vi" link to each other. We good.
Emacs Resources
Emacs Tutorials
- Beginner’s Guide to Emacs
- Absolute Beginner's Guide to Emacs
- How to Learn Emacs: A Hand-drawn One-pager for Beginners
Useful Emacs configuration files and distributions
Quick pain-saver tip
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Check the documentation of async-shell-command (M-x describe-function async-shell-command RET), and you'll see that it takes one necessary argument, the command to run.
If you run it interactively (through its keybinding or M-x), it prompts you for that argument. Type in the command for Emacs, and Emacs will pass that as the argument to async-shell-command.
But if you want to, you can call it from Lisp and pass in the argument yourself! Try executing it in the scratch buffer or by running eval-expression (I believe M-: by default).
That will run
git status
and give you the resultNow if you want to run that bit of code more often, wrap it in a function and assign it a keybinding!
Would anyone else handle this differently? I'm still learning myself!
I think you misunderstood, I need autofilled with the last run command (which is dynamic) not the the hard-coded one.
I like your thinking!
Here's a solution for automatically running the last command:
It has two drawbacks:
shell-command-history
doesn't differentiate between asynchronous and synchronous shell commands, so you may accidentally repeat an async command synchronously (if you differentiate at all)—there are ways to look through the history for the one you want, howeverHonestly probably not worth solving that second issue, as you could bind a function like the one above and then just use that binding instead of the usual when you want to repeat. (Actually, now that I've thought this through, I think that's exactly what I'm gonna do.)
If you want the auto fill behavior and not the repeat behavior, you could advise the shell-command functions to grab
(car shell-command-history)
and insert it into the minibuffer.Thanks for the thought-provoking question! I think I'm gonna go add this function now. : )