Skip to content

Commit

Permalink
New quick and dirty article on 24 Emacs package and utils
Browse files Browse the repository at this point in the history
  • Loading branch information
themkat committed Dec 17, 2024
1 parent 599e507 commit 29055d5
Showing 1 changed file with 73 additions and 0 deletions.
73 changes: 73 additions & 0 deletions org/_posts/2024-12-17-twenty_four_emacs_packages.org
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#+OPTIONS: toc:nil num:nil
#+STARTUP: showall indent
#+STARTUP: hidestars
#+BEGIN_EXPORT html
---
layout: blogpost
title: "24 Emacs packages and utilities to try while counting down to Jul/Christmas/Holidays"
tags: emacs christmas
related_tags_count: 1
---
#+END_EXPORT

There are many good Emacs packages and utilities out there. Why not pick 24 of them to count down to Jul/Christmas? That is exactly what I have done here. Maybe you can find a new package or feature to play with if you have some holidays coming up?


I know that this would be cooler as an advent calendar, but I sadly got the idea too late. Hopefully you can still enjoy it as a weird gift from me :gift: Hopefully it can also work as a shoutout to the many amazing developers making packages! (not just me lol). Happy Holidays! :heart:


*Warning: The word Emacs is mentioned a lot throughout this article. After a while I didn't bother limiting the repetition. If you want to have fun, you could probably make a drinking game out of counting the times I said Emacs! :beer: Make some eggnog and have fun!*


* Criteria
- Packages that modify the look and feel of Emacs, as well as packages that help you do more from inside of Emacs. This includes packages that increase the features available (spoiler: like completion of text).
- Modes for editing programming languages would only be interesting to those that program in that language, so all such modes are excluded. I will assume that you are a programmer though, but many packages will be general purpose ones. Hopefully you can find something interesting even if you are not a programmer.
- Built in packages are allowed if they are a bit hidden, or if they are super useful. I will limit these ones to a minimum.
- No library packages for Emacs Lisp code. While packages like Dash.el, s.el and f.el are nice, they do not help you much unless you write Emacs Lisp. They are therefore excluded from this list. If you are curious about them, I suggest reading [[https://themkat.net/2022/10/03/emacs_lisp_better.html][my earlier article on library packages]].
- At least a few silly packages! We all LOOOVE doing stupid things from Emacs like playing games or checking the weather, so we need some of those types of packages on the list. (games and weather are examples, so not a spoiler ;) )


* 24 Emacs packages and utilities
Below, you will find the list! Most packages will be available on [[https://melpa.org/#/][Melpa]] (the biggest community package archive) or GNU Elpa (the official GNU archive), but not all. Those that are not will have a quick note in its description.


1. [[https://github.com/larstvei/Try][try]]: Do you ever see a package that you like, but don't want to keep it around? (remember that everything you usually download with package-install is in your load-path!). Then Try is the package for you! Like the name says, it let's you try packages in your current session. When you exit Emacs, they are gone. [[https://themkat.net/2021/11/20/emacs_package_highlight_try.html][Try was covered in one of my earlier articles]].
2. [[https://github.com/themkat/pink-bliss-uwu][pink-bliss-uwu theme]]: Do you also want Emacs to be more pink and cute? If so, then my theme is for you! Did I say my theme? Yes! I made this. Love it or hate it, this is my blog, so I'm allowed to mention my own packages from time to time :) Note: not yet on Melpa or Elpa.
3. [[https://orgmode.org/][org-mode]]: A mode for writing notes, blog posts ([[https://themkat.net/2024/10/22/how_i_blog_with_emacs.html][including this blog!]]) and more. Org Mode has a special plain text file format that supports the same functionality as other formats (including Markdown), but adds code block execution (like Jupyter Notebooks), agenda items for calendars and so on. Probably cheating to put it in this list, as it is included in Emacs. That being said, the version that is included is old, so downloading a newer version is recommended to get bug fixes and newer features. [[https://themkat.net/2021/09/13/recommended_emacs_packages.html][Briefly covered in my earlier article on recommended Emacs packages]].
4. [[https://elpa.gnu.org/packages/undo-tree.html][undo-tree]]: In most editors, you have a linear undo/redo-history. undo-tree gives you this history as a tree you can navigate instead! [[https://themkat.net/2021/09/13/recommended_emacs_packages.html][My earlier article on recommended Emacs packages have a screenshot and small description]].
5. [[https://github.com/ema2159/centaur-tabs][centaur-tabs]]: Do you want Emacs to have tabs like your browser (or other editors like VS Code)? Then Centaur Tabs is what you are looking for! While there are several tab solutions for Emacs, this one is my favorite. [[https://themkat.net/2024/01/04/emacs_centaur_tabs.html][Written about in more detail in its own article]].
6. [[https://github.com/themkat/smilefjes.el][smilefjes.el]]: Live in Norway? Or visit Norway sometimes? Then you probably want to visit restaurants and take away places. How would you know which ones are clean and healthy to visit? The Norwegian Food Administration regularly do checkups, and have compiled a list. This list can be checked from the comfort or Emacs! The name is "smiley face" directly translated to English, and is my own creation :smile:
7. [[https://github.com/astoff/devdocs.el][devdocs]]: Do you ever wish you could read documentation directly from inside of Emacs? Whether it be the Rust reference book, GLSL reference, React reference or something else? Well, you can! devdocs.el and other packages are covered in [[https://themkat.net/2024/10/27/docs_inside_emacs.html][an earlier article on reading documentation from inside of Emacs]].
8. [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Window-Convenience.html][Windmove]]: (probably cheating here, as this is built in). Are you a chronic =C-x o= user when switching between your buffer windows? So was I until I started using Windmove. Windmove gives you more fluid movement of windows where you can select the direction (as opposed to the previous keybinding which moves in a seemingly random order). It is covered in [[https://themkat.net/2024/10/14/emacs_tip_windmove.html][a separate article here on my blog]] if you want to read more about it.
9. [[https://magit.vc/][Magit]]: While git on the command line is easy enough, I really feel like Magit makes me even more productive. Instead of having to type out commands, you have shortcuts. You also get a nice status view where you can view diffs, select what to commit (even simplified commit of selected portion of files!), push and more. [[https://themkat.net/2021/09/13/recommended_emacs_packages.html][Magit was briefly covered in my earlier article on recommended Emacs packages]].
10. [[https://github.com/emacs-exwm/exwm][EXWM]] (Emacs X Window Manager): The classical joke about Emacs is: "It's a good OS, but lacks a decent text editor". Why not make Emacs closer to that dream/joke? :joy: It is what it says: You control the windows in your X11 based system using Emacs, as they were regular buffers. Before I decided to try Mac OS X full time for a few years, I used it extensively. I still use it on Raspberry Pis and other machines around the house. Works great, even if there are drawbacks like Emacs and application shortcuts not always working great together.
11. [[https://elpa.gnu.org/packages/rainbow-mode.html][rainbow-mode]]: Working with CSS or other places where you work with colors? One example is hex codes for colors, which rainbow-mode highlights using said color. Think of the classical markers you used when taking notes, but as the background color of hex codes in your CSS (or other places). This makes previewing the colors much easier, and you feel a bit more productive. The added bonus is that your editor becomes more colorful! :heart: This package was covered in [[https://themkat.net/2021/10/08/emacs_packages_that_make_me_happy.html][the article about Emacs packages that makes me happy]].
12. [[https://github.com/magnars/multiple-cursors.el][Multiple cursors]]: Sometimes we need to do the same operation in multiple parts of the open buffer. Maybe we want to add spaces? Ascending numbers before the text (for making a list)? YAML list entries with common keys? Or something else? Then we can use multiple cursors instead of one! That is exactly what this package does. [[https://emacsrocks.com/e13.html][Emacs Rocks has a nice video on it if you want to see it in action]].
13. [[https://github.com/emacs-dashboard/emacs-dashboard][Dashboard]]: Do you miss a dashboard instead of the scratch buffer or Emacs splash screen? Dashboard provides exactly that! (who would have thought... duh!). You can customize it to your liking to show your projects, recent files, agenda items, [[https://github.com/hyakt/emacs-dashboard-hackernews][recent HackerNews entries]], or whatever else you want. Covered in [[https://themkat.net/2021/10/08/emacs_packages_that_make_me_happy.html][my earlier article on Emacs packages that makes me happy]].
14. [[https://github.com/iqbalansari/emacs-emojify][Emojify]]: Do you also wish that emojis in your buffers, Git commit messages (in Magit) or similar were less boring? Not just showing you the Github emoji codes or boring keyboard letters? Then Emojify is your friend! It spices up Emacs with emojis. Another package to provide some color and happiness to your possibly stale editor experience :heart: Yet another package covered [[https://themkat.net/2021/10/08/emacs_packages_that_make_me_happy.html][in the article on packages that makes me happy]].
15. [[https://github.com/larstvei/Focus][Focus]]: Are you ever overwhelmed by all the syntax highlighting and colors when editing your functions? Want to only focus on the function you are editing, and let the rest of the world be gray and unfocused? That is exactly what Focus does! As far as I know, it also works on a sentence by sentence or paragraph when editing normal text as well.
16. [[https://github.com/akermu/emacs-libvterm][vterm]]: While Emacs has some terminal/shells built-in, they have their share of issues. One of them being to not be able to run interactive programs (e.g, terminal user interfaces like Midnight Commander). vterm helps with that issue, and let's you have a nice terminal that feels Emacs-native. [[https://themkat.net/2023/06/06/emacs_package_highlight_vterm.html][It was covered in its own article]].
17. [[https://github.com/company-mode/company-mode][company]] (Complete Any): Probably a boring choice, as most of you use it. This is the de-facto completion framework for Emacs. In short, it shows suggestions while you type. It can be used with other packages to provide completion items as well, like with the next entry...
18. [[https://github.com/emacs-lsp/lsp-mode][lsp-mode]]: While Emacs 29 has Eglot built in as a standard LSP (Language Server Protocol) client, I prefer lsp-mode. It gives way more nice UI elements, and is more batteries included. Configuration and utilities for many programming languages are also included. If you do not know; LSP is a standard to give you IDE (Integrated Development Environment) like features across any editor. This includes showing errors, completion items, code action (e.g, add missing import) and more. This is done through communicating with an external LSP server.
19. [[https://github.com/TeMPOraL/nyan-mode][nyan-mode]]: With the previous entries, we took a more serious note. Now for a more fun pick! nyan-mode shows the infamous Nyan Cat in your modeline indicating the percentage-wise position of your cursor. The Github repo has a nice screenshot if this sounds confusing.
20. [[https://github.com/seagle0128/doom-modeline][doom-modeline]]: While we are at the topic of modelines; Doom Modeline provides a minimalistic, yet sleek replacement for the standard Emacs modeline. This includes configurability, icons (all-the-icons), colors and more. This has been my choice of modeline for the last few years. The Github repo provides screenshots if you want to see it in action.
21. [[https://github.com/rnkn/olivetti][Olivetti]]: Do you sometimes wish you could have some margins to more easily focus on the text while editing? This is especially handy for editing blog posts, books etc. on larger monitors. Using Olivetti, you can make your org-mode experience look like you are editing a paper page like you may have seen in Libre Office Writer (or its commercial counterpart from a certain company with Micro in its name).
22. [[https://github.com/pashky/restclient.el][restclient-mode]]: Sometimes I need to do HTTP calls, like calling a REST API. (hey, most people who aren't lucky enough to have a day job in embedded or game development have to!). There are nice ways of doing it in the command line (like curl or httpie), but it quickly gets tedious when you have many headers or inputs. Why not just do the calls from Emacs? With restclient-mode you can! When everyone around you needs GUIs like Postman, you can have a smug look of superiority on your face and use the best editor in the world :heart: (okay, I was a bit sarcastic here, but it is great not having to install more bloat and leave Emacs).
23. [[https://github.com/minad/vertico][Vertico]]: This is not something I use myself yet, but I have seen it in action. Currently I'm looking into it as a replacement for Helm. Like Helm, it gives completion for buffer lists, find file, and more. Not sure if it will ever be in my configuration, but it sure is interesting. More minimalist, configurable, and less opinionated. I'm one of the people who really enjoy Helm, but it has its (sometimes unintuitive) quirks. Trying something new is also good for you so life feels less stale. [[https://www.youtube.com/watch?v=J0OaRy85MOo][System Crafters has a video about configuration which shows it in action]].
24. [[https://github.com/johanvts/emacs-fireplace][fireplace]]: Exactly what is says! A nice fireplace you can run from inside Emacs! For Julekveld (aka Christmas Eve if you prefer that name) you need something cosy!



Honorable mention of sorts:
- [[https://github.com/Jimx-/emacs-gl][Emacs OpenGL]]: Yes, OpenGL using Emacs Lisp! Requires you to build a special version of Emacs that has the necessary GLArea code added. Technically an Emacs Lisp library package on steroids, so not eligible for the main list. Still, it is insanely cool! :heart: Hopefully I can have some time to play with this during holidays.


If you see your package above, I want to thank you for bringing us all joy! <3



Hopefully you can find one package to explore this holiday season :santa: Wish you all the best! Feel free to share your picks in the comments, so I can have more to explore as well :heart:

-----

If you think this article had too many serious packages, fear not! I have [[https://themkat.net/2021/11/30/emacs_fun_useless.html][an article on fun and useless things to do in Emacs]] that you can check out!

0 comments on commit 29055d5

Please sign in to comment.