15 ms·
Emacs’s Builtin Elisp Cheat Sheet
- tut-urut-utut 4y agoEmacs is an amazing editor and never ceases to surprise in a positive way. The only complaint I have about Emacs is its look and feel and a lack of a usable Sidebar. If they could "steal" that from Sublime Text it would be perfect.
- hprotagonist 4y agothere’s even a minimap implementation.
- mickeyp 4y agoDo you mean like `M-x speedbar'? Lots of third-party customizations for it, too.
- mxben 4y agoThanks! Never knew this existed. Would have been better if the sidebar was not shown in a new frame. There are third-party customizations to launch speedbar in the same frame though.
- mmargerum 4y agoi like it as a separate frame
- pksebben 4y agoto add to this, if there are things the speed bar doesn't do that you wish it did, the chance that there's no package for {specific thing you want} is vanishingly small. The primary difficulty is in being able to find exactly what you're looking for. Precise terminology and specific terms of art (i.e. linting, directory traversal, syntax hiliting) will help here.
- tut-urut-utut 4y agoFor me, speedbar is a no-go, since it opens in a new frame. If I switch to browser, and then back to Emacs buffer, it is still hidden behind a browser windows. From sidebar, what I look is an exact equivalent of Sublime Text's sidebar. - It opens in the same frame - I can add/pin a folder tree there, it should be operable by mouse (open/close subtree, click to open a file in buffer or switch to it) - Have a list of open files / buffers - clicking on it should switch to buffer Currently looking at treemacs and neotree that were suggested by me. Previously I was giving up trying to configure them, now I may be more persistent.
- jhbadger 4y agoThe site here has some elisp code that puts the speedbar in the current frame. I've just tried it and it seems to work. https://carnet.danielhan.dev/linux-unix/emacs/speedbar-in-one-frame.html https://carnet.danielhan.dev/linux-unix/emacs/speedbar-in-on...
- gpderetta 4y agosr-speedbar in melpa seems relevant .
- steeleduncan 4y agoI've not used Sublime Text, but I think treemacs fits what you are looking for https://github.com/Alexander-Miller/treemacs https://github.com/Alexander-Miller/treemacs
- arkanane 4y agoI think that the look and feel is what I like more about Emacs. Having such a complete environment full screen without much space waster makes me much more focused
- pech0rin 4y agoMastering emacs is an amazing resource and one I have used countless times over the years. I have used emacs since my time in college (~14 years ago) and I still discover new things about it -- a lot from "mastering emacs". Anyway, thanks for all the great content!
- mickeyp 4y agoThanks! I'm very happy to hear that.
- nanna 4y agoSeconded! Thank you Mickey. Your posts consistently expand my Emacs capabilities, and appreciation of Emacs too :)
- tlavoie 4y agoHey Mickey, another happy reader here. One question, looking at your site, I see mention of an "Emacs 28 edition." I've got v3 of the ebook, is there an update version from here?
- zasdffaa 4y agoEmacs docs aren't perfect but they are a major, major strength of it and I wish so much other software would learn from it. The devs are really responsive too - good guys!
- thorw73m 4y agoC-h r C-s <search_term> - This almost always helps if not google - "<search_term> emacs wiki"
- iLemming 4y agoC-h r - info-emacs-manual Please, try to get into the habit of not only sharing the keystrokes but also commands they bind to. With all different Emacs "distros" popping up, it's hard to track the bindings. "Is it in vanilla, Doom or Spacemacs?..." My hope is for a convention to emerge where the proper etiquette of Emacs pedagogy would be always mentioning the command. Also, I think you meant to say C-h r s <search_term>, where <s> binds to Info-search
- thorw73m 4y agoEmacs in itself is worth studying to become better developer. The best minds in the computer industry have worked on this editor's design. For example I used to think single namespace in elisp is bad. But after used it for a while it feels having single namespace is probably good for cognitive ease. In contrast C++ offers namespace but when "using namespace" is used at the top of the file, the rest of the file contains only part of the namespace. This makes it harder to grep while reading source code. Although emacs have longer symbol names its cognitively much easier.
- untilted 4y agoElisp now supports "shorthands", a kind of cheap namespace system. It's very recent so virtually unused in the wild. https://www.gnu.org/software/emacs/manual/html_node/elisp/Shorthands.html https://www.gnu.org/software/emacs/manual/html_node/elisp/Sh...
- rtpg 4y agoI bought Mastering emacs on a whim after reading it but am still looking for more in-depth stuff about working with Emacs Lisp in particular. I can do basic stuff alright, being able to jump into source in particular is very helpful to at least find snippets of code doing what I want, but I don't have a good sense of how to work effectively in it. (For example, when trying to test things out I haven't really found a way much better than typing into scratch, selecting code and running it while staring at messages....) I would gladly pay money to watch somebody just write and debug emacs lisp code for half an hour cuz I feel wanting for usability when trying to work with this.
- mickeyp 4y agoYou may like my article on this very subject: https://www.masteringemacs.org/article/evaluating-elisp-emacs https://www.masteringemacs.org/article/evaluating-elisp-emac...
- tra3 4y ago> (For example, when trying to test things out I haven't really found a way much better than typing into scratch, selecting code and running it while staring at messages....) Are you talking about when you're noodling, trying to figure how things work, or actually trying to build something? For playing around, I found that scratch works ok, but I found a better workflow. I end up using a daily note in org-roam, with #begin_src elisp... I then tag the heading with :REFILE:ELISP: so I can always find it later. Basically evaluate everything inline within that org-babel block. When I'm building something, or driving towards a specific goal, I use buttercup [0] to write actual unit tests. If I squint, it kinda looks like TDD. Finally, for debugging of running elisp, take a look at edebug [1]. It's a pretty standard looking debugger (if you used something like gdb). By default emacs uses debug which is not as friendly. [0]: https://github.com/jorgenschaefer/emacs-buttercup https://github.com/jorgenschaefer/emacs-buttercup [1]: https://www.gnu.org/software/emacs/manual/html_node/elisp/Edebug.html https://www.gnu.org/software/emacs/manual/html_node/elisp/Ed...
- LanternLight83 4y agoJust stumbled upon edebug yesterday after looking through the options that you can put in a `declare` form and it's become an invaluable portion of my workflow; if I may ask a noob question, is there an easy way to keep a persistent eye on a closure or arbitrary set of a variables, and is there a way to debug-step through disassembled code? Totally okay if you don't know off the top of your head, I'll have time to search for these eventually.
- rollcat 4y agoI have a love-hate relationship with Emacs. The defaults are absolutely awful. The editor is pretty unusable without at least a hundred lines of ELisp: basic stuff like CUA, setting up fonts, disabling useless UI clutter, delete-selection-mode, rebinding a couple keys, setting up packages, explaining where to find coreutils on BSD systems, etc. And then you get to packages. If you want to do anything remotely useful, you're gonna have to start installing random stuff from GNU ELPA, MELPA, etc. There's no package pinning or SemVer so you get what you get, packages sometimes break in mysterious ways. So you write more code to work around various broken stuff in packages. I've gone through several iterations of throwing away my entire init.el and starting from scratch with just the bare minimum needed to get work done. At the current iteration, ELisp is still ~33% of all source code volume in my dotfiles repo[0]. I haven't pushed my latest effort to unbreak "jump to definition" (because apparently dumb-jump is deprecated??? and I need to use xref??? but it doesn't work???) so that'll likely go up. I never wanted to write enough ELisp to justify calling it a program, but Emacs made me. But then there is magit[1], which is so damn good, it makes every other VCS interface look like a sad joke. Which is problematic, because configuring Emacs itself is a bit of a sad joke. I want to just write code, not write code to make just writing code less of a pain. :( [0]: https://github.com/rollcat/dotfiles https://github.com/rollcat/dotfiles [1]: https://magit.vc https://magit.vc
- abrax3141 4y agoExactly the difference between emacs and most of the software world is that for most of the software world your post would end at “The defaults are absolutely awful. The editor is pretty unusable.”
- MonkeyClub 4y ago"Sane defaults" is a thing, but the sanity supporting the defaults changes every couple of decades. E.g., re the GP's complaint about lack of CUA: CUA is an IBM effort to standardize a dozen shortcuts that are considered more or less universally useful. But Emacs predates CUA by a couple of decades, and supports easy access to an insanely wider (two, three orders of magnitude) space of functionality. If you want CUA, Notepad is 100% conformant. Disclaimer: Yes I would adore a clean pure new Emacs, but given the dearth of Stallmans, the new Emacs would take even longer to not have CUA by default.
- abrax3141 4y agoI have been using plain out-of-the-box emacs for literally 40+ years. (I wrote the initial version of one of the commands that’s now built-in.) I do probably a third of my data cleaning work in keyboard macros. I am so used to and efficient with plain emacs that most customization just seems like unnecessary decoration — with the exception of major language modes, because language specific fwd/bkwd (s)expr is so useful.
- yc20220630103 4y agoPersonally as somebody who is NOT a software dev Emacs is my favorite tool on Linux and I usually have 1 or 2 windows open at all times. Tramp in particular is like magic, I can natively browse remote directories, copy and edit files and run a terminal remotely through eshell. This is STILL something that VSCode struggles with, the Microsoft "Remote" extension has /bin/bash hardcoded in and fails if the remote machine doesn't have it.
- vdm 4y agoWhat machine does not have /bin/bash
- yoyohello13 4y agoAlpine linux based containers/VMs don't have bash and I occasionally need to drop into a shell in those.
- submeta 4y agoExcellent! This is a wonderful function I did not know about. - I learn a lot about Emacs from Mickey Petersen, his book "Mastering Emacs" (highly recommended), and his articles on r/emacs. Thank you again for this article.
- kettunen 4y agoAs an Emacs user, I definitely enjoy always finding new things about it. Thanks to these kinds of discoveries I've been able to make my .emacs.d smaller and smaller in tiny increments due to being able to replace various packages downloaded from ELPA/MELPA with built-in ones.