It feels so great writing for long hours in emacs with a nice keyboard (in my case a ThinkPad keyboard), no matter what computer I’m using, as long as I have a terminal and decent resources for my tasks that will be fine for me. This is one of the discoveries in my journey that very well paid back the resources I spent to learn. Its old, robust but at the same time is highly flexible, with many features and packages that will give you an experience that will boost your productivity to the next level. It’s not a secret that learning curve is challenging and after you get started you are going to realize that there is a rabbit hole full of features, packages, modes, lisp and others.

I’m not saying that you cannot use same experience from any other IDE or text editor, nor you’re not going to feel that improvement specially at the beginning, things are going to get sharper after you engage in a workflow that uses emacs for building code and notes. I think emacs gives you that, a new mindset, that’s it you know at this point you can do the same with other tools. For example for org-mode there are modern popular contenders such as notion, evernote and logseq. I tried them all, and all would say they’re popular because they’re excellent for what they do, but I still think emacs is special, and that is because is that is highly extensible, you can do from simple note taking to write code and even running code/macros from an instance that runs inside of many buffers which happens to be highly accessible to you, that is what makes emacs different from any other text editors.

Just a normal workflow inside of Emacs
A workflow example in Emacs!

This text editor can boost other parts that work in a less common area of productiveness, this is all about flexibility to the point that you can create your own workflow here, as a result there are many packages and tools that you can create which makes your workflow experience more pleasant and productive, that is what in reality is emacs. I was reading recently about macros, I remembered them from the school specially when using excel, they are powerful right? guess what… I read about them in Wikipedia, I cannot believe that this text editor was part of early macros, and its name was a piece of the next text ‘Editor MACroS’. Anyways, it’s good to be using an old piece of historic software that was influenced by UNIX and kept alive by the open source community.

When I started using Linux terminals more often, that was a fun part of my life highly driven just for fun, I did not use it in school or work but still use Linux. I’ve spent time trying first using open source software and that led me to code a bit in bash and eventually triggered my desire to learn Python, I knew that I needed to go and search the best new exciting software for text editing, so I’ve checked constantly what were those text editors with rich features that were good enough to test, that led me to emacs. First real exposure to emacs occurred because of forums and memes, inside of such forums some people posted interesting text editors and few sites were they compared emacs with other text editors such as VIM, Kate, Geany or Atom, then my curiosity influenced me to check among them and see which one will suit my needs. I’ve tried emacs and did notice that a high amount of resources should be spent upfront, that was discouraging simply I simply decided to move on and learn more about Data Science stuff. Back then around 2018, there was a decent list of popular IDE’s that could get job done I was using Kate and Jupyter Notebooks, but I was still looking for that thing that could get the job done faster, that’s when I’ve decided to give a try to the other ‘bad ass text editor’ and that was VIM. My first thought after questioning: Should I try VIM? well guess what!, I was a touchtyper back, not the fastest (avg 80 wpm by the time), so I immediately started to be using VIM.

I’ll just said that VIM is cool, after few years using VIM, it is hard to adapt me back again to use text file or a terminal without it, in terms of productivity, good results started softly but later after a year my writing speed increased substantially and not to mention that creativity was another part that was hit by this tool because it reduces the friction of putting your thoughts in text ASAP. In simple terms, VIM provides a very exquisite user experience, it lets you optimize your workflow by customizing your text editor in very nice ways, I still use VIM and its variants including VIM keybindings everywhere, I’ll talk more about this in another post, since VIM is a text editor I frequently use.

After learning the basics and adapting my muscle memory for VIM I was good to learn the next thing, then I’ve found that emacs has a mode that lets you use VIM keybindings inside of it, next thing it was to pick an updated version of it and then I’ve found the different of flavors of emacs, I’ve decided to try them. First I’ve found ‘Spacemacs’, it was kind of difficult at the beginning and then I’ve found ‘Doom Emacs’ which happens to have ’evil-mode’ activated by default and has an active community. ’evil-mode’ can be activated in order to give you the same VIM feel like experience, that was actually very nice and a deal breaker for me, you could get the exquisite flavor of VIM inside of emacs, at the end of the day that was my main motivator that convinced me to make to the switch.

I’m not going to give you a full review of experiences with other modes, this distribution of Emacs lets you start really quick by just uncommenting the next file ./doom.d/init.el, but here I want to give a high level view of the packages that I normally use on a daily basis to get more things done, my current setup includes:

  • a left pane with neotree and projects subdirectories listed there with current things you’re trying to solve
  • a 3 pane window arrangement like 1 vertical and 2 others or more stacked vertically

This is my general view setup, I frequently toggle the left pane by using SPC o p that show and hide the left pane where neotree is located which was useful to maximize area.

Most of my time in Emacs is spent writing my notes, that includes code, project documentation and other general topics. Since there are many things running Emacs lets me choose different kind of workspaces by just executing the next keyboard combination SPC TAB n I am able to create a new workspace and not to mix them all, and be able to switch between them, I mean for me this is cool and the best part of it is that everything is free to customize, user has access to this and is able to change its behaviour as he/she wants.

-

Code blocks are great inside of Emacs, you should try them
Code blocks written and executed inside of org!

For coding, I generally use same pane configuration with an ’eshell’ terminal which works out of the box, I like how good the keybindings are very well integrated with ’eshell’, of course Emacs offers many variants, I’ve heard good things about ‘vterm’ which I’ll give it a try in the future, the overall experience for coding is fantastic and simple, you just need to uncomment your preferred language in the init.el file mentioned before, refresh your Emacs by doing a SPC H r r and you are all set.

In respect of documentation everything goes to org-mode which is incredibly powerful, this is absolutely one of the best packages I ever used, you can pretty much do anything from here, from taking simple notes to create code blocks and run them from here like Jupyter notebooks, it is incredible amazing how this thing works with many languages. In my opinion org deserves an exclusive description because it is so extense, I’ll probably talk more about this in the future, but for now I’ll say that most of my time is being spent in org files building my notes for everything and also my task management by doing org-agenda.

In conclusion, Emacs is an incredibly flexible text editor that gives you full control over its extendible properties, if you know the tool, you can be highly productive here without exiting Emacs, that means focus. For me, being in one pace that can do most of workflow for creation giving me the possibility to keep getting things better, it has made the magic, giving me a superior experience and enough motificaiton to keep learning and play with it every single day.