So I’m here to ask for resources — text based tutorials, video tutorials and what not — that would help someone grok Emacs (from a novice level) and get into the Emacs way of doing things (including elisp?).
I would also like recommendations on what (package/source) you consider as the best to install on macOS and on Linux.
I have a few customizations, not many. My .emacs file is 63 lines long, doesn't include any other files, and mostly just tweaks some key bindings and turns off features that I don't like. The only modes I use are built-in ones (e.g., C-mode, auto-wrapping text mode, etc.). I can't write elisp without a reference manual, and I think that's okay.
I suggest:
- not installing a bunch of random stuff until you're comfortable with the core experience or you simply have to adjust or disable something that bugs you
- just using Emacs, and not customizing the crap out of it, ditto
If you haven't gone through the Emacs tutorial, it's how I learned it (at 300 baud, uphill both ways and in the snow -- not kidding about the 300 baud thing, though).
The best way of learning Elisp is reading the source code that is distributed with Emacs. Do a git checkout of Emacs and read Elisp code written by Stefan Monnier. Stay away from org-mode elisp - the quality of that code base is highly suspect.
Credentials established, I cannot recommend this tutorial enough:
https://david.rothlis.net/emacs/tutorial.html
He walks you through most of the core of what makes Emacs great by showing you how to make a change to a project in the idiomatic Emacs way.
I would have learned it years faster had I started there.
Beyond that, learn basic Emacs keybindings via the tutorial, as others have suggested.
I started in Emacs but installed evil-mode a few years ago and have never looked back.
I do not recommend Spacemacs. Install the tools you want as you find you want them, so that you know what's doing what, and so you have a decent chance of knowing what broke things when something stops working.
Keep your packages in version control as part of your .emacs.d repository. That keeps updates and deleted packages from screwing you.
Use "use-package" (https://github.com/jwiegley/use-package) for configuring what you install. It's written by one of the Emacs maintainers and will help you do things right by default.
I'm not the best Emacser out there, but if you're curious, my config is on my GitHub account: https://github.com/NateEag/.emacs.d
Happy hacking.
- episode 0: introduction => https://mickael.kerjean.me/2017/03/18/emacs-tutorial-series-...
- episode 1: the basics => https://mickael.kerjean.me/2017/03/19/emacs-tutorial-series-...
- episode 2: org-mode => https://mickael.kerjean.me/2017/03/20/emacs-tutorial-series-...
- episode 3: interesting built in features => https://mickael.kerjean.me/2017/03/21/emacs-tutorial-series-...
- episode 4: installing plugins => https://mickael.kerjean.me/2017/03/22/emacs-tutorial-series-...
- episode 5: extending emacs with elisp => https://mickael.kerjean.me/2017/03/23/emacs-tutorial-series-...
If you want something close to what most users probably have setup and yet still close to vanilla you can give Emacs Prelude a try: https://prelude.emacsredux.com/en/latest/
I started with it, tried out the package selection, but then started a smaller config from scratch with what I liked from it.
Also good links: https://www.masteringemacs.org/reading-guide http://emacsrocks.com
I don't believe one should restrict oneself to a single editor, but rather follow a path of least resistance - Emacs is actually the path of least resistance when you want to have a custom editing experience.
Overall I use four editors Emacs, vi, notepad++ and VS Code. Emacs when doing Clojure or any other code so I can have something that is very convenient for me, vi and notepad++ on machines where I don't want to setup a config or where I do only simple text editing and VS Code where I would ocasionally need to install a plug-in, but I don't need to use it often.
So after about a year I started over, resetting my config and using Emacs customization over custom elisp writing to get a working init file. It helped me learn a lot. This is the path I recommend: do small customizations using Emacs' built-in features, then learn elisp later.
I learned a lot from this CS prof's videos, and it's a good, practical learning path I'd recommend: https://www.youtube.com/watch?v=49kBWM3RQQ8&list=PL9KxKa8NpF...
If you're into writing, I maintain a list of resources for writing with Emacs: https://github.com/thinkhuman/writingwithemacs
Unless your passion is in going meta and focus on building the tools instead of using them, chances are that your current tools can do what you need just fine.
I do have some functions for connecting to databases, but for the most part, there are no deep customizations.
I also have avy (think that's jump mode in vim), ldo for file browsing, yasnippet (for snippets), multiple-cursors, and some language-specific major and minor modes.
I mainly want to press C-c C-c and get my work done.
------
As a general rule, emacs is pretty easy:
* C = basic
* M = more powerful
* CM = most powerful.
So...
* C-f = move forward one character
* M-f = move forward one word
* CM-f = move forward one bracket
A lot of things are sort of mnemonic:
* f - forward
* b - back
* r - rectangle
* s - search
* r - reverse search
The biggest thing to remember is that "yank" has the opposite meaning in Emacs. In emacs, you can either "kill" (cut), or "copy", then you "yank" to (paste). This is a function of how the Emacs "kill ring" works. This extends to the above:
* C-y - yank the last item
* M-y - scroll back through the backlog of the kill ring.
Everything sort of falls out from this logic. If had to be completely honest with you, I probably use 20% of the total functionality of Emacs. It's a huge system, but I get my work done efficiently and don't sweat that I can't write a bunch of elisp from memory.
Also emacs is largely self-documenting. Learn the keys for querying documentation first thing. You can search for current keybindings, what a given function _does_, etc all live while you're using it.
1. Go through the Emacs Tutorial. Just start emacs, put the cursor on the text 'Emacs Tutorial' and hit enter. It will only take 30 mins max.
2. Go through the first chapter in the Practical Common Lisp book here: http://gigamonkeys.com/book/lather-rinse-repeat-a-tour-of-th...
3. By now you are comfortable navigating around and editing text, opening files, running emacs commands with M-x etc... so you can now install packages for syntax highlighting for your language etc... via M-x package-install 4. Use emacs to edit all your files for at least 1 day. 5. Use emacs keybindings to navigate around in other apps if you're on Mac or Linux, those are standard keybindings that work everywhere in Terminal, bash, Textedit, Chrome, etc... 6. Learn how to use vim, download a vim cheatsheet and have it handy for reference, edit some files in vim (git commit messages will also do). 7. Install evil-mode and edit your .emacs.d/init.el file to bind a key to toggle evil-mode on/off 8. In maybe one day max, you're very comfortable in emacs now, and may be well on your way to writing your own extension functions. You're pretty much an emacs expert by now, in only 2 days max! 9. Try out different emacs configs. You can try mine out here: https://github.com/sufyanadam/.emacs.d it's setup for all major languages, Ruby, Python, React, JSX, etc... It also has some soundboard keys bound, try C-c-n-m when you want to greet someone new but don't want to be interrupted (you have to have mplayer installed on your system for it to work).
edit: If you use MacOS, Yamamoto Mitsuharu‘s emacs-mac [3] is my recommendation, as for linux the version from your distros package manager should be apt. ;)
[0] https://github.com/hlissner/doom-emacs
[1] https://github.com/syl20bnr/spacemacs
That might be problem as teams standardize on newer editors with good collaboration features, which don't exist or aren't as new-user friendly as in Emacs. Some languages also don't have as good integration with Emacs as they do with some IDEs.
That said, if you really want to learn Emacs, then
- go through the tutorial
- print out a good Emacs cheatsheet
- Have piece of paper or notebook to make your own supplement/complement to the cheatsheet
- use a Rosetta stone site if coming from Vim
- Force yourself to use the keybindings to move, not the arrow keys or the mouse. It will take a few weeks to get comfortable with the basic movement.
- Probably most important after the tutorial: learn all the help functions and their keybindings
- C-h ?
- info
- apropos
- where-is
- describe-key, describe-function, describe-mode, describe-variable, describe-bindings
- find-library
- understand how undo works
- package-list-packages to install packages
- Start a basic init.el:
- (fset 'yes-or-no-p 'y-or-n-p)
- (global-font-lock-mode t)
- (transient-mark-mode -1)
- Learn keyboard macros <--- Enormously useful
- After you are more comfortable, install and configure helm
- Read or browse the Emacs manual and the Elisp manual (in info)
- Read the "Mastering Emacs" posts for more advanced features
- Also Mike Zamansky's Youtube channel
https://sites.google.com/site/steveyegge2/effective-emacs
http://steve-yegge.blogspot.com/2006/06/shiny-and-new-emacs-...
http://steve-yegge.blogspot.com/2008/01/emergency-elisp.html
Even after close to a decade of Emacs usage, I learned more about Emacs using Spacemacs for a month than I thought possible.
I'd say it depends on what your aim is: (1) would be the way to go if you primarily want to get fluent with emacs, or are content to use tools you already know for other work, and learn plain emacs gradually in the background. (2) would be best if you want to get productive quickly using emacs for real work, at the risk of a more occluded understanding of emacs per se.
I'd put in a word for Prelude (https://github.com/bbatsov/prelude) as a possible compromise, making emacs immediately usable but without putting many layers between you and it. Some might consider it a little old-fashioned however (no use-package etc).
I've used vanilla emacs on and off for many years for quick edits, but only recently for actual programming (using Prelude, and prompted by learning Clojure). It's taking over my computing lifestyle. I've laughed in the past at people using it for email, but found myself using mu4e lately. Scary.
They are at: https://www.youtube.com/channel/UC0uTPqBCFIpZxlz_Lv1tk_g/vid...
Most of the videos are focused on practical tasks you would want to do. It's one of the few really good Emacs focused channels IMO.
Start with plain Emacs. Print/write out the popular cheatsheets. Just make sure you know how to exit, access the documentation, and move around the windows/frames/buffers. Get Melpa & install some packages. Play with the config, adding keybindings, figure out hooks and so on. Copy some elisp functions from dotfiles on Github. Spam the documentation command on everything. Get frustrated with how much tinkering you need to do to get the crazy setups you've seen on blogposts. Stay motivated by consuming more content about custom setups. Discover the magic of magit and parinfer and dired. Look up some of the org-mode/PIM heroes on github, usernames: novoid, alphapapa, karlicoss
Install Doom. Tinker with it a bit. Take notes of your learning in an org file. Tinker some more. Go back to plain emacs for a bit. Then try spacemacs. Go straight back to Doom because it's faster and you now understand enough about emacs to be scared of spacemacs' layers.
Below are some links to help you along the way.
http://ergoemacs.org/emacs/blog.html
https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf
https://orgmode.org/worg/orgcard.html
https://cestlaz.github.io/stories/emacs/
https://github.com/jethrokuan/emacs-workshop/blob/master/mod...
is pretty good as an introductory resource.
Disclaimer: I picked up Emacs from Jethro Kuan
then start with
Absolute Beginners Guide to Emacs http://www.jesshamrick.com/2012/09/10/absolute-beginners-gui...
follow up with Emacs' tutorial and online help
follow up with Mike Zamansky videos on YouTube https://cestlaz.github.io/stories/emacs/
finally check out the blog entries (and the book !) at https://www.masteringemacs.org/
Second, I want to recommend the Emacs Lisp tutorial, which I would argue is the best official tutorial for a programming language, full stop. This will teach you a tonne about Emacs which you won't pick up any other way, and you can fill in differences between Spacemacs and vi(m) by the usual expedient of trolling the internet for clues.
Find an expert Emacs user who's willing to help, and have them watch you in person, even for just a short time, as you use Emacs to do things. Lather, rinse, repeat. Make sure they show you how to use the built-in help and feature-exploration mechanisms (but they'll know to do that anyway, if they're an expert).
I suggest don't go full inside but start slowly incorporating emacs into your workflow.
If you write code then using emacs only for git via magit for the first couple of weeks should be a good start (while reading some emacs related book in parallel).
Then try to experiment with the org mode, this thing alone might get you on the hook to be productive with the tool.
If you like the experience then I suggest you to consider buying ergonomic keyboard like ergodox/maltron/kinesis advantage to improve your typing.
Members of said lovely community thoroughly recommended Mastering Emacs to newcomers as a number one introductory text which I since do as well—mostly because they did. I also recommend built-in tutorial.
As for packages,
• helm or some other fuzzy completion thing; make sure your M-x, C-h f, C-h v do offer fuzzy completion, it improves discoverability greatly. Recent (27?) Emacsen may have something like this out of the box.
• avy: jump to positions on screen
• there are several packages that offer insert/command mode including the famous evil-mode but it's a good idea to get used to defaults. “Mastering Emacs” has something on this. I've heard macOS supports default Emacs keys everywhere (not true for other systems)
• which-key can display keys and commands available at the moment, quite helpful from the start. You can actually find some of this information with context menu but it is less convenient. The issue with which-key is, you need to configure it to actually see its stuff. A config for it may be found in the link below
• https://github.com/a13/emacs.d/blob/master/README.org is a cleanly written init file; if you want a starter config for package x, try searching there for (use-package x ..) expression, copy it to your init file, press C-M-x and it's applied (note: it will often download the package, too). Many popular packages and built-in features are covered. Tweak some parameters, C-M-x, observe the changes immediately.
• last but not least, to make use of many existing configurations out there, you will need use-package. So install it early and learn to load it on startup (see the very config above as a reference)
Emacs led me to elisp which led me to Common Lisp which led me to scheme which led me to racket, each of which has its own unique set of literature.
I’m enjoying the journey. It’s a refreshing change of pace from the ever-changing, cutting-edge, hyped-up programming world many of us live and work in.
Emacs has also led me to further interest in macros, compilers, and programming languages.
If you don’t have prior experience with lisps I’d recommend Gentle Introduction to Common Lisp, How to Design Programs, or Practical Common Lisp. The fundamentals from each apply well to elisp.
If you want immediate(ish) productivity, id recommend emacs prelude, doom, or spacemacs.
It can be treated as an editor, and as your workflow slowly adjusts you will find yourself writing a mental wishlist.
Realising that wishlist is where Emacs shines among other editors/IDEs/applications.
It is a headspace/workspace and imo the programming equivalent of BASB.
I for example use it because I want nothing to pull me from my workflow, so I have shells, repls, notebooks, filesystem browser, internet browser, rss, and a slew of other utilities tiled, something akin to a Bloomberg terminal, even spotify if I need music. It has enabled my productivity in a way no other application could.
All readline apps support[1] them, including bash[2] and many others emulate them.
On MacOS, support for emacs keybindings is standard in Cocoa text views[3] and you can improve it quite easily[4].
[1]: https://tiswww.case.edu/php/chet/readline/readline.html#SEC1
[2]: https://www.gnu.org/software/bash/manual/html_node/Readline-...
[3]: https://developer.apple.com/library/archive/documentation/Co...
I started out by following basic tutorials, like this one [0], and working my way up. You may want to find a guide to get themes setup, and some rough edges ironed out.
Alternatively, you could dive into distributions. I highly recommend Spacemacs, and have written an article about it [1]. It is a lot of learning especially if you're familiar with vim. The github page is also a great introduction [2]. I would recommend using the develop branch over master, as master tends to be very stale.
I have also heard good things about Doom emacs, another vim style distro.
[0] http://www.jesshamrick.com/2012/09/10/absolute-beginners-gui...
- Do the built-in tutorial before anything else.
- Read through most of the manual. It's extraordinarily good despite containing a few small and usually obvious errors. You can skip things, e.g. calendaring if you're happy with your current calendar system.
- Get a friend's nontrivial init file (.emacs, init.el, etc.) or find a representative one online. Ideally use one from someone who uses Emacs for the same stuff you will, so more of it will be relevant to you. Read and understand every part of this file, copying and adapting into your own .emacs as you feel moved.
- Use the built-in help system aggressively. Don't be afraid to go on detours when an intriguing function or variable meets your eye.
- Spend some time browsing the descriptions of packages in the `list-packages' buffer to find interesting packages, and read their source code.
- Read the Intro to Elisp (note: I think I used a 3rd party alternative tutorial somewhere, not sure which one) and use the Elisp manual more as a reference. Take as much time as necessary to digest anything that seems confusing. A few things aren't super intuitive on first read, for example the precedence relationship among various keymaps. Make diagrams!
- Contribute some bugfixes and new features to packages you are using. Start small.
- Use the Emacs Wiki as a secondary resource.
I joined a company where most of the devs used emacs, so I kind of needed to adopt it too. I started with very little config and it was very hard. Because many operations were different to the GUI editors I'd used before, I had to waste 20% of my brain power to consciously do things that should be unconscious (save, cut, paste etc). This made it much harder to program!
The first step was updating the config to make emacs more similar to my old editor. For example: make it so pasting text when text is selected replaces the selection. Turn off branching undo. Install a plugin that gave me an autocomplete list of every file in my current project. Make it so that if I copy text in emacs, it appears on the OS-wide clipboard. I'm sure your list of things will be different.
Another important step was getting my emacs theme to look nice. This really made me love the program a lot more. It's silly, but there we are.
The third important step was finding things that emacs does better than other editors. For me, a big one was having a terminal inside my editor (lots of editors do this now, but back then it was rare).
Hope you end up loving emacs!
2- Any key combination you touch translates to those commands, so `C-h k` which shows you the actual command is key. Learn the commands behind the keys and mix and match to suit your style. Read http://steve-yegge.blogspot.com/2007/02/my-save-excursion.ht... to get the overall idea. Use smex or helm's helm-M-x to be able to call the commands without remembering their names fully. You can also use apropos to search for commands, but smex or helm is much easier. This way, you don't need to learn that many shortcut keys.
3- Define a shortcut key to open your .emacs file so you can define new commands without extra effort. Keep it to a single file in .emacs.d dir to make things easier. Too many files make things harder to maintain for me.
4- Practice on your elisp skills on `ielm`.
Helm is pretty amazing and almost worth the cost of Emacs by itself: https://emacs-helm.github.io/helm/
I've been using emacs for about a year now. My config is stable at 1506 emacs packages. It runs on 6 different emacs distributions. Some would say my setup is bloated. With a 2 minute startup time, I need emacsclient. It's important to remove any impediments to learning as possible. Any weird keyboard problems, or waiting times you should try to eliminate. It takes an obsessive kind of discipline, like using batons on homeless people to combat the spread of coronavirus.
Every day I check the emacs reddit and search melpa for packages with particular keywords in their names. Every time I hit a bug I try to solve it.
Run multiple emacs instances so if you break something, at least one emacs still works. I recommend using 'lispy' for emacs lisp, but until you have learned that I recommend using vim for writing elisp. You kinda have to make key bindings to learn new emacs packages.
Please name some features that I'm missing.
People talk about adding their own tweaks. Any programmable editor lets you add your own tweaks. I've added my own to several. Including emacs. Emacs wasn't special here
I'm happy to use emacs when I have to (it's the only thing installed). But otherwise not feeling it.
I used emacs for a couple years on a linux laptop with a full keyboard, and I loved it. Then I got into more teaching than programming, so I moved to some beginner-friendly editors; I wanted to use the same tools I was recommending for my students.
Now I'm doing more dev work again, and I really miss emacs. But I'm a little lost about how to map keys so I can jump between my laptop in standalone mode, my laptop when I have an external keyboard connected, and non-mac linux machines.
https://sites.google.com/site/steveyegge2/effective-emacs
Note some of the advice, such as how to swap Ctrl and Caps-Lock on specific OSes, maybe be outdated now.
That and the built in tutorial - there should be a link on the screen when you start up emacs, or `C-h t` - should be enough to get you started.
Pretty good resources right at the top.
I didn't find anything similar when I got started using it, so it might be useful to you.
S. Chua's blog is the best "zine" I think: https://sachachua.com/blog/
To avoid "but vi/vim and the shell…" which is a sort of "mental flu" every Emacser has to go through at least once in his life, understand this:
"the UI paradigm of Emacs" is also called a roguelike interface by ESR, vi's too: "In Chapter 11 we described the effect of the absence of standard arrow keys on early roguelike programs; vi was one of these. " http://www.catb.org/esr/writings/taoup/html/ch13s03.html
Curiously last weekend I have found a video about org-roam and the presenter mentioned he was using Doom emacs. I was curious enough to try it. It uses vim key bindings by default. To get started I highly recommend this series by Zaiste [0], he explains how to set up the environment and digs into org-mode which were my main concerns. I found the sections on projectile, magit, dired and avy very helpful. Now I am tempted to give it a try in one of my projects. The downfall so far is I didnt find an in depth explanation on how to grok it with python.
[0]https://www.youtube.com/watch?v=rCMh7srOqvw&list=PLhXZp00uXB...
magit is a fantastic git UI. helm is a great ui for searching lists of things(used very often)
I've been using Emacs for ~5 years now, and I switched from Sublime Text. I used Vim here and there but I wasn't a huge fan, and I always heard that Emacs is _the editor_ that can solve anything. Org mode is what got me really interested so I read through that book and switched to Emacs fully after a couple of weeks of light usage and reading.
Now I only use Emacs, and I've never been happier programming. It's truly a remarkable piece of software.
Edit: just want to say that you should use vanilla emacs and try not to install any plugins at first. Resist the temptation to go willy-nilly on some awesome-xyz list.
I personally would recommend doom-emacs (https://github.com/hlissner/doom-emacs) which has an easy to understand codebase.
Now as you use it, you'll inevitably run into bumps or things you want to change. This is where you start to learn. In doom you can just press `SPC h a` to search up anything you could want (`SPC h` will show you all possible help options). Discoverability in Emacs is amazing, and puts all other editors to shame.
If you like trying new programming languages then all you do is add it to the layers list, and it’ll install recommended packages for that language. It’s nice to have that ready for you to use so you don’t waste time researching which packages go with which language. Then you just hit “space-M” and you see everything you need to work with that language. Read the README.md for that layer or even dive into its code if you want to know how it works.
I don’t think I could have moved from Vim to emacs without spacemacs and will be forever grateful for that.
https://ethanaa.com/blog/switching-to-doom-emacs/
I wouldn't worry too much about elisp until you're at least intermediate. I've used Emacs for 10+ years and I next to no custom config that I've found indispensable.
Also, not as a tutorial, but more as a reference, https://emacswiki.org/ is a great site for not just information on the editor itself, but all the various modules/hacks people have contributed.
Pick a real goal you want to accomplish that the thing you want to understand is a good fit for.
Maintain a curious mindset while trying to accomplish the goal.
To frame this in the context of emacs. Just start using it for programming. When you come across something you want it to do, google how do I make emacs <...>.
I know it sounds overly simplistic, but just trust me and try it.
I installed Emacs from brew and apt (on two machines) and just ran doom installation script which you can find in Doom's GitHub repo.
To find your way around you can just follow command descriptions when you press
It is mostly about learning Emacs without blindly copying configs from GitHub and getting distracted by all the shiny packages one can get.
The multiple cursors episode is really cool: http://emacsrocks.com/e13.html
Feel free to add more.
* Motivation
This is inspired by an ongoing conversation about emacs with a friend and a debugging interview that I really enjoyed.
* Exchanging emacs tips with a friend
A friend of mine is pretty proficient in emacs: org-mode all the things, written >500 LoC of elisp, tried several distributions. We still regularly teach each other about existing emacs functionality and exchange messages along the lines of: - I just found that there is a function foo, which I have made a keybinding foo and can now search open a tab with a SO search with text from the clipboard - whaaat? That's super useful! - I know, right?
He works with a couple of greybeards, who also seem to be constantly finding emacs functionality that makes their lives easier, which suggests it would be beneficial for all of us to watch others in emacs.
* Interview
I was given a real git repo that I needed to load into my environment (spacemacs on Linux) to debug and fix failing tests. They sat me down during the onsite (the days when we would go to interview in person), told me to download the repo from the URL, told me how to run the tests (after activating the python venv) and watched me debug and fix failing tests - only 5 were failing from about 100. The interviewers were not proficient in emacs, but I felt that they could follow my thought process and workflow. I had only recently set up python dap-mode and felt clunky navigating in pdb through dap, so ended up print debugging.
It made me think how interesting it would be to watch other people with different backgrounds and experiences debug the same problem and how often I would learn new tricks or debugging techniques. Having a good understanding of the problem and the code allows you to focus on the activity of programming and watch out for new ways of tackling the same problem.
* What will we investigate
Furthermore, it might be interesting to see what debugging practices are statistically more succesful in tracking down the bug faster (and control them for overall years of programming experience and emacs proficiency).
If our sample is big enough we can answer questions like: Correlation between overall years of programming experience and debugging time? Who is faster at debugging: printf or gdb debugger people? Which keybindings and modes are most frequent across users? Is there a correlation between having custom elisp functions and debugging time?
* Format
I will prepare a representative repo in the most popular language (I am most comfortable in Python, happy to consider other languages, if people prefer), bury some bugs in it (that will be easy), administer the study and summarise the findings in a spreadsheet/write-up.
Following the debugging session outlined above. Every participant:
starts recording their screen
Starts a fresh emacs instance with their config and loads a emacs lisp script that we provide for printing keypresses and recording keypresses + function calls to a log file.
download the prepared repo
run tests
investigate failing tests
fix them
commit their changes
The participant ends the screen recording session before sending me
- the video to me or youtube/dailymotion URL
- plaintext keylog history
- link to their elisp config
I appreciate logging keypresses/function calls might feel intrusive, so if you are uncomfortable doing that - don't! At the same time, if we want to share good debugging practices and general emacs tricks - I see this as the most impactful way to share techniques and elisp snippets.I watch it, sumarise the findings and present a write-up.
Who is interested?
M-x tetris
First, I firmly believe that kabdib comment - that you shouldn't customize Emacs, or fiddle with it too much - is not good advice for the year 2020. Forty years ago (i.e., when kabdib started using it), I would have agreed with it (I'd have to be born first, though). In essence, the vanilla Emacs is a powerful text editor with macros, syntax highlighting for many languages, debugger and linter integration, split panes, great diff viewer, and so on. In short: vanilla Emacs is still loaded with features, especially if you compare it to EDIT under MS-DOS or MS Write from Win 3.1.
The problem here is twofold: due to strict GPL licensing requirements, the inclusion of new features in the Emacs core is not that fast, and (more importantly) the rest of the world hasn't been frozen for the last 30 years. What I mean is that today, the comparison is not Emacs vs. Notepad, but rather Emacs vs. (Sublime | VS Code | Atom | ...). The vanilla Emacs has literally no features you could see as an advantage over the other editors (and that's even before we start talking about modern IDEs).
Basically, the only thing Emacs has in its favor is this: it's a full-blown, incredibly efficient IDE for programming in Elisp, and it's been like this for the last 40 years. Thousands of programmers used that environment to build the tools for just about anything under the heavens, and most of their code is out there, on Emacs Wiki, in ELPA / MELPA repos, and all over GitHub.
To me, using Emacs without taking advantage of its ecosystem is simply a waste of time. So to summarize this point: you don't have to fiddle with your Emacs config too much, but one of the first commands you should learn is probably `M-x list-packages.`
---
Second, while I say you "don't have to," it's important to remember that you can fiddle with the config. The "incredibly efficient Elisp IDE" is always there for you, a single command away. You can use it to read the code and docs for any function or command you use (or want to). You can make a small change in command and have it immediately reloaded. You can put a breakpoint anywhere in any function and step through its execution while having call stack with all the (if not compiled away) variables and their values.
The browser-based editors could, in principle, offer a similar or better experience, but for some reason, they currently don't (yet). You don't necessarily have to use it right off the bat - or you can ignore it altogether - but when you need it, it's always there. Fixing a typo, disabling unused features, automating chains of commands, binding commands to whatever is convenient to you, and so on - Emacs allows you to do all of that more efficiently than any other editor I've seen (LightTable being dead and all).
Also, as for "endlessly tweaking" your config: in my experience, that's not what happens. It took me a year to learn Elisp, then I spent about two years trying out various packages, writing my own, adding some conveniences on top of what's provided, and so on. That was almost a decade ago, though, and since then, I touched my config with very minor edits every couple of months, and I tried out some new packages as they came, so maybe a few times a year? Something like that. This is because I made my Emacs fit my habits, and once I did, I have had no incentive to fiddle with it further. Why would I? It works exactly the way I want it to.
---
TLDR: first, learn how to install (and uninstall!) packages and how to customize them with the `customize-...` commands. Then, go through the "awesome emacs" on GitHub and play with any package that catches your attention. Ask for package recommendations on StackExchange or somewhere if you're not sure which to choose or if there's a package implementing what you want (there is). Then, if you wish, delve deeper: start debugging and editing the packages' code, learn Elisp in the process, write whatever helpers you need. And after that, yes, simply use the editor (your editor!) for the next couple of decades.