BurnedOut
Your friendly neighborhood asshole
This thread will attempt to document my musings on Emacs - one of the pieces of technology that had a profound impact on my programming skills and computer usage in general. I want you to think about the power of text editing and hopefully use emacs at least once in your life.
Emacs is one of the best of kind of I have ever used. It has a relatively esoteric (for most coders) language that is LISP. That's the selling point. In my decade-old experience of coding, having lisp changes everything. It's homoiconic - code is data and data is code in lisp. Remember this, this will be very important in the future posts.
Homoiconicity changes a lot about how software is made. Combine that lisp's dynamic nature. It basically means code can be changed on the fly and lazily executed in the context specified. However dynamic homoiconicity changes how you code. Any language that is not truly lisp will ALWAYS use functions. This is OK but results into verbose configurations. Compare a lisp version of config vs Lua version of that same config
Emacs is one of the best of kind of I have ever used. It has a relatively esoteric (for most coders) language that is LISP. That's the selling point. In my decade-old experience of coding, having lisp changes everything. It's homoiconic - code is data and data is code in lisp. Remember this, this will be very important in the future posts.
Homoiconicity changes a lot about how software is made. Combine that lisp's dynamic nature. It basically means code can be changed on the fly and lazily executed in the context specified. However dynamic homoiconicity changes how you code. Any language that is not truly lisp will ALWAYS use functions. This is OK but results into verbose configurations. Compare a lisp version of config vs Lua version of that same config
Emacs lisp python config:
(mode-config!
:id python-mode
:builtin-terminal t
:formatter "black -"
:compile
(buffer "python3 %path")
(cwd "cd %path && python3 %buffer")
:repl
(buffer "python3")
(workspace "python3")
(cwd "python3")
:hooks
(eglot-ensure))
Lua python config:
local python = {}
python.formatter = {
buffer = "cat {path} | black -q -",
workspace = "black -q .",
dir = "black -q .",
stdin = true,
}
python.test = "pytest {path}"
python.repl = {
buffer = "ipython3",
workspace = "ipython3",
dir = "python3",
}
python.server = "jedi_language_server"
python.compile = "python3 {path}"
python.buf_opts = {
shiftwidth = 4,
tabstop = 4,
expandtab = true,
}
return python