mastodon.world is one of the many independent Mastodon servers you can use to participate in the fediverse.
Generic Mastodon server for anyone to use.

Server stats:

8.1K
active users

#emacs

123 posts98 participants8 posts today
Emacs News<p>Protesilaos Stavrou: All my videos are mirrored on the Internet Archive (thanks to Amin Bandali) <a href="https://protesilaos.com/codelog/2025-07-29-videos-internet-archive/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">protesilaos.com/codelog/2025-0</span><span class="invisible">7-29-videos-internet-archive/</span></a> <a href="https://emacs.social/tags/emacs" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>emacs</span></a></p>
Emacs News<p>Sacha Chua: 2025-07-28 Emacs news <a href="https://sachachua.com/blog/2025/07/2025-07-28-emacs-news/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">sachachua.com/blog/2025/07/202</span><span class="invisible">5-07-28-emacs-news/</span></a> <a href="https://emacs.social/tags/emacs" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>emacs</span></a></p>

Show me your #emacs keybindings that you put into existing global submaps that you feel are intuitive.

Here are some of mine:

Under C-x v (for VC stuff):
("C-x v t" . git-gutter-mode)
("C-x v s" . git-gutter:stage-hunk)
("C-x v n" . git-gutter:next-hunk)
("C-x v p" . git-gutter:previous-hunk)
("C-x v T" . git-timemachine)
("C-x v R" . browse-at-remote)

Under M-g for error navigation:
("M-g M-l" . flymake-show-buffer-diagnostics)

In the C-x map to complement C-x u:
("C-x C-u" . vundo)

And a better use for C-x C-o (overriding delete-blank-lines):
("C-x C-o" . browse-url-at-point)

Technically these are reserved or taken spots but I like these bindings enough to make an exception for them.

In a previous toot thread we've been talking about ways to launch processes from Emacs in a way that lets them survive Emacs exiting, crashing or restarting via M-x restart-emacs.

The best way I've found so far:

;;; with separate cmd and args:
(call-process command nil 0 args)

;;; or let the shell parse the command:
(call-process-shell-command command nil 0)

The key is the 0 as the third argument, this causes Emacs to discard the output and not wait for the process.

I use it like this for my EXWM command launcher function:

(defun my-exwm-run (command)
(interactive (list (read-shell-command "$ ")))
(call-process-shell-command command nil 0))

Previously I used start-process-shell-command and nohup but that accumulated defunct processes when using M-x restart-emacs. The call-process-shell-command with the 0 arg doesn't seem to have that problem and it doesn't need nohup. This is a bit counter intuitive because call-process is supposed to be for synchronous processes. Not sure if make-process (the async primitive) can do this the same way.

If somebody is familiar with how/why exactly this works I'd love to hear your thoughts.

Trying to decide how I want to spend the rest of my afternoons now that appointments are out of the way. I think I want to spend a little time polishing my #emacs config a bit, and then maybe futz around with #lisp

I broke my Vim usage by learning Colemak and decided to fix it by learning Emacs. A surprise side-effect, manipulating terminal and many programs became easier due to the same keybinds – which I never knew before – working in many other places!

What I want is a consistent interface like lispyville/paredit/combobulate that I can navigate in something like evil, while having good multiple cursors that understand the bit of syntax that I'm highlighting and finding the matches. #emacs

Replied in thread

@chesheer IMO people have lost the ability to discuss topics in a non-personal fashion. Factual level vs. personal level.

Nowadays, the tendency that any discussion results in personal insults is very high.

Besides: since #Emacs is able to do everything(!) that #vim does (except vimscript) but vim can only do vim-stuff but only a tiny fraction of the stuff that's built-in or optional within Emacs, this is actually settled once and for all. 😈

I'm coding a little project in #elisp before I get back to bigger #Emacs things. This project has, what we could call a record, 7-8 fields. I thought, maybe I should try records or cl-defstruct. I coded them up, started to use them, and found it more painful than I hoped.

The keywords of defstruct seem like a good idea, but they percolate upwards and things get complicated.
I found myself thinking in clojurey ways which don't work so well in Elisp.

I went back to lists. A list of lists.. It feels right to me and it all just works. I can find them with some flavor of assoc, then find the attributes the same way.

What do you think? What would you do?