From fd2c31aeef103d2e082a5b1d5e0b0dcd0776b010 Mon Sep 17 00:00:00 2001 From: Panadestein Date: Fri, 23 Feb 2024 10:15:15 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Panadest?= =?UTF-8?q?ein/emacsd@bb40038e71c25e8c7d6aed4d6c642fce6d2e8b2b=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 735 ++++++++++++++++++++++++++++------------------------- 1 file changed, 384 insertions(+), 351 deletions(-) diff --git a/index.html b/index.html index eb5ab4b..48fb9a4 100644 --- a/index.html +++ b/index.html @@ -48,108 +48,109 @@

Emacs literate configuration

Table of Contents

-
-

Prelude: Emacs configuration and the world of Lisp

-
+
+

Prelude: Emacs configuration and the world of Lisp

+

Welcome to my literate Emacs configuration. This setup, like many of its lineage, validates Newton's famous aphorism about standing on the shoulders of giants. @@ -170,9 +171,9 @@

Prelude: Emacs configuration and the world of Lisp

-
-

Org-mode literate programming

-
+
+

Org-mode literate programming

+

The beauty of literate configuration with org-mode is that it allows for maintaining an Emacs config, a website, and an org-mode markup file at the same time. For example, in the header @@ -188,7 +189,7 @@

Org-mode literate programming

-Leveraging these options, I tangle (each time I save the file, refer to the org-mode hook) +Leveraging these options, I tangle (each time I save the file, refer to the org-mode hook) the source code blocks in this configuration to my Emacs init.el, while also setting up the ReadTheOrg theme utilized by the website. One nuance is the task of ensuring syntax highlighting when exporting to HTML with org-mode while using Emacs in batch mode. @@ -198,9 +199,9 @@

Org-mode literate programming

-
-

Deployment with Nix

-
+
+

Deployment with Nix

+

While it's perfectly feasible to configure Emacs with Nix, my preference leans towards the Elisp configuration. Nonetheless, I've incorporated the following overlay in conjunction with Cachix to access the latest commits @@ -253,11 +254,11 @@

Deployment with Nix

-
-

General configuration

-
+
+

General configuration

+

-To comply with the Emacs conventions for libraries, the tangled init.el must have the following header and footer: +To comply with the Emacs conventions for libraries, the tangled init.el must have the following header and footer:

@@ -277,9 +278,9 @@

General configuration

-
-

Setting up a package manager

-
+
+

Setting up a package manager

+

One of the cornerstones of any Emacs distribution is the package manager. Previously, I was mostly a happy user of use-package with the package.el backend. However, I did find myself in the need of using a more recent @@ -360,9 +361,9 @@

Setting up a package manager

-
-

Dirty hacks

-
+
+

Dirty hacks

+

The typical caveat of using bleeding-edge software is the occasional need for manual fixes. Here, I introduce (hopefully) temporary workarounds to address issues in broken packages. @@ -396,9 +397,9 @@

Dirty hacks

-
-

One editor to rule them all, one editor to find them

-
+
+

One editor to rule them all, one editor to find them

+

Here I use the use-package macro to keep all Emacs internal settings organized in one single block. The variables have self-explanatory names, but I have added a few comments for the sake of clarity. @@ -464,9 +465,9 @@

One editor to rule them all, one editor to find them

-
-

Safeguarding configuration file from unwanted custom interference

-
+
+

Safeguarding configuration file from unwanted custom interference

+

This piece of code serves to reduce clutter and boost the reproducibility of the configuration.

@@ -483,9 +484,9 @@

Safeguarding configuration file from unwanted custom

-
-

Precision line highlighting

-
+
+

Precision line highlighting

+

This code ensures line highlighting is applied selectively, focusing solely on programming and text buffers.

@@ -501,9 +502,9 @@

Precision line highlighting

-
-

Old habits die hard

-
+
+

Old habits die hard

+

Discarding years of honed Vim muscle memory is not an option for me. Yet, I'm beginning to find that Emacs keybindings are starting to resonate, and in some major modes, employing Evil @@ -533,9 +534,9 @@

Old habits die hard

-
-

Streamlining the undo system

-
+
+

Streamlining the undo system

+

Embracing Emacs comes with its quirks, and the default undo system stands out as one that puzzles me. Perhaps one day, I'll unlock its full potential. For the time being, I opt for a linear approach. @@ -555,9 +556,9 @@

Streamlining the undo system

-
-

Themes

-
+
+

Themes

+

As Nietzsche said, the voice of beauty speaks softly; it creeps only into the most fully awakened souls. Ergo the importance of a visually pleasant editor. These are my top three themes: @@ -608,9 +609,9 @@

Themes

-
-

Handle very long lines

-
+
+

Handle very long lines

+

Another well-known issue of Emacs, although it rarely affects me.

@@ -625,9 +626,9 @@

Handle very long lines

-
-

Improved parentheses

-
+
+

Improved parentheses

+

This helps a lot when lisping.

@@ -641,9 +642,9 @@

Improved parentheses

-
-

Highlight parentheses with different color

-
+
+

Highlight parentheses with different color

+

Another eye candy. Parenthesis of different colors are very helpful in Lisp though.

@@ -657,9 +658,9 @@

Highlight parentheses with different color

-
-

Minimap

-
+
+

Minimap

+

This package emulates the minimap feature found in Sublime Text within the realm of Emacs. Although I'm moderately content with this configuration, I haven't fully embraced its @@ -681,9 +682,9 @@

Minimap

-
-

An elegant mode line

-
+
+

An elegant mode line

+

A precious contribution from the Doom Emacs community, boasting the finest mode line I've encountered for Emacs. The supplementary package all-the-icons augments this experience, @@ -710,9 +711,9 @@

An elegant mode line

-
-

Multiple cursors support

-
+
+

Multiple cursors support

+

This intriguing package offers functionality for handling multiple cursors, although its ergonomics could, in my opinion, use some improvement. @@ -735,9 +736,9 @@

Multiple cursors support

-
-

Tabs-bar-mode

-
+
+

Tabs-bar-mode

+

Tabs are not traditionally a part of the standard Emacs workflow, preferring buffer-switching instead. The following is a simple configuration @@ -758,9 +759,9 @@

Tabs-bar-mode

-
-

Enhanced HTML exports

-
+
+

Enhanced HTML exports

+

This package ensures that some org-mode babel exports have proper syntax highlighting.

@@ -774,13 +775,13 @@

Enhanced HTML exports

-
-

IDE features and documentation

-
+
+

IDE features and documentation

+
-
-

Incremental search and completion with Ivy

-
+
+

Incremental search and completion with Ivy

+

The integration of Ivy and its auxiliary tools, Swiper and Counsel, greatly enhances my Emacs experience by providing an advanced incremental completion system. @@ -853,9 +854,9 @@

Incremental search and completion with Ivy

-
-

Jump anywhere in Emacs with avy

-
+
+

Jump anywhere in Emacs with avy

+

This powerful package comes with tons of features for jumping to visible text using a char-based decision tree. I have a minimal configuration, as avy-goto-char-timer @@ -871,9 +872,9 @@

Jump anywhere in Emacs with avy

-
-

Crafting command combos and menus with Hydra

-
+
+

Crafting command combos and menus with Hydra

+

Hydra is a package that simplifies the creation of keybinding combinations using a shared prefix. As a bonus, it also generates a menu displaying all potential commands: @@ -925,9 +926,9 @@

Crafting command combos and menus with Hydra

-
-

Exploring command options with which-key

-
+
+

Exploring command options with which-key

+

Which-key is an indispensable tool for charting the turbulent waters of Emacs' packages keybindings. These suggestions prove incredibly useful when venturing into the realm of a new package. @@ -947,9 +948,9 @@

Exploring command options with which-key

-
-

Enhanced help systems with Helpful

-
+
+

Enhanced help systems with Helpful

+

While the default Emacs help system is commendable, Helpful elevates it to another level, introducing features such as syntax highlighting and source code exploration for a more intuitive and enriching experience. @@ -971,9 +972,9 @@

Enhanced help systems with Helpful

-
-

Code tags

-
+
+

Code tags

+

When navigating through large codebases, such as electronic structure packages, employing code tags can save your fingers from the wear and tear induced by continuous grep commands. @@ -1004,9 +1005,9 @@

Code tags

-
-

Tree-sitter

-
+
+

Tree-sitter

+

Emacs package to use the incremental parsing library tree-sitter.

@@ -1023,9 +1024,9 @@

Tree-sitter

-
-

Completion with company

-
+
+

Completion with company

+

Source code completions. An all-time classic.

@@ -1045,9 +1046,9 @@

Completion with company

-
-

Language server protocol

-
+
+

Language server protocol

+

Microsoft's Language Server Protocol (LSP) is a great tool to provide IDE features to Emacs. I use two major-modes for managing the lsp servers, namely lsp-mode and eglot. @@ -1126,9 +1127,9 @@

Language server protocol

-
-

Debuggers

-
+
+

Debuggers

+

The realgut debugger is a complete rewriting of the Emacs GUD. It has support for several debuggers and has seamless integration with GDB and PDB. @@ -1152,9 +1153,9 @@

Debuggers

-
-

Spell checking with FlySpell

-
+
+

Spell checking with FlySpell

+

FlySpell does a lot out of the box, therefore I have a very basic config.

@@ -1172,9 +1173,9 @@

Spell checking with FlySpell

-
-

Grammar checking with LanguageTool

-
+
+

Grammar checking with LanguageTool

+

This is a free and open-source multilingual grammar checker that supports more than thirty languages. A must-have if you write papers in LaTeX or org-mode. For the Emacs package to work one needs to install @@ -1209,9 +1210,9 @@

Grammar checking with LanguageTool

-
-

Translator

-
+
+

Translator

+

This package provides a potent translation tool integrated seamlessly with Emacs. It extends support to numerous translation engines including Google, Bing, and DeepL. My preference leans towards using pop-ups @@ -1244,9 +1245,9 @@

Translator

-
-

Syntax checking with Flycheck

-
+
+

Syntax checking with Flycheck

+

Flycheck is indeed a valuable asset in the toolkit, despite certain constraints. For instance, the persistent checking might negatively affect performance, @@ -1269,9 +1270,9 @@

Syntax checking with Flycheck

-
-

Snippets

-
+
+

Snippets

+

Yasnippet offers a comprehensive collection of snippets complemented by an incredibly intuitive syntax. Its notable shortcoming, however, is the conspicuous absence of Scheme snippets. I've crafted custom snippets @@ -1335,9 +1336,9 @@

Snippets

-
-

Better ediff configuration

-
+
+

Better ediff configuration

+

Emacs built-in ediff is more powerful than vimdiff IMHO. However, the default configuration can be improved a bit: @@ -1365,9 +1366,9 @@

Better ediff configuration

-
-

ChatGPT

-
+
+

ChatGPT

+

For the times they are a-changin'. Large language models are here to stay, and as cliche as it might sound, they are the future. It comes then natural to have a nice Emacs package to query ChatGPT. @@ -1389,13 +1390,13 @@

ChatGPT

-
-

File browsing, terminal emulators, and web browsing

-
+
+

File browsing, terminal emulators, and web browsing

+
-
-

Terminal support with Vterm

-
+
+

Terminal support with Vterm

+

This package uses a C library instead of Lisp to emulate the terminals. It is my favorite emulator currently. @@ -1488,9 +1489,9 @@

Terminal support with Vterm

-
-

Terminal support with Eshell

-
+
+

Terminal support with Eshell

+

This is a command shell written purely in Emacs Lisp. While not being POSIX compliant, it is still a powerful tool for remote editing due to its native TRAMP support. Here I define @@ -1561,9 +1562,9 @@

Terminal support with Eshell

-
-

TRAMP: Remote file editing made easy

-
+
+

TRAMP: Remote file editing made easy

+

TRAMP (Transparent Remote Access, Multiple Protocols) is an essential package in Emacs that simplifies remote file editing and management. Paired with Dired, TRAMP enables seamless editing of files on remote machines, saving you from the hassle of configuring your editor @@ -1594,9 +1595,9 @@

TRAMP: Remote file editing made easy

-
-

File browsers

-
+
+

File browsers

+

After trying a couple of file browsers I understood that all I needed was already there: dired.

@@ -1657,9 +1658,9 @@

File browsers

-
-

Web browsers

-
+
+

Web browsers

+

And because in the Emacs operating system we can do just about anything, I have added the shr-tag-pre-highlight and shrface packages, so eww gets an org-mode look and feel. This comes handy when comparing programming languages in Rosetta Code. @@ -1749,9 +1750,9 @@

Web browsers

-
-

IRC and Matrix

-
+
+

IRC and Matrix

+

Software tinkerers tend to hang out on IRCs a lot, so this configuration is very useful to get help on those channels, and keeping in touch with friends. @@ -1767,9 +1768,9 @@

IRC and Matrix

-
-

PDF support

-
+
+

PDF support

+

Another C Library, it works better than the default Emacs PDF viewer, for instance it allows hyperlinks.

@@ -1792,9 +1793,9 @@

PDF support

-
-

Multimedia player

-
+
+

Multimedia player

+

For multimedia content I use emms, a lightweight player written in Emacs Lisp, that integrates perfectly with mpv. @@ -1834,27 +1835,27 @@

Multimedia player

-
-

Programming

-
+
+

Programming

+

Here you can find my configuration for different programming languages. I will introduce it in a laconic manner, because this section is rather opinionated.

-
-

Lisp

-
+
+

Lisp

+

The language that gave birth to the "Maxwell equations of software". Lisp dialects are my favorite programming languages. Below I add a vague description of some of the things I like from them.

-
-

General

-
+
+

General

+

Enhance the overall lisp experience in Emacs with Lispy, and its evil friend Lispyville.

@@ -1874,9 +1875,9 @@

General

-
-

Common Lisp

-
+
+

Common Lisp

+

Powerful compiler, great libraries and OOP features.

@@ -1896,9 +1897,9 @@

Common Lisp

-
-

Scheme and Racket

-
+
+

Scheme and Racket

+

Minimalism and elegant syntax, the purest. Hygienic macros. Racket has a great documentation, and scribble!

@@ -1923,9 +1924,9 @@

Scheme and Racket

-
-

Clojure

-
+
+

Clojure

+

Largest library ecosystem thanks to JVM, vectors and maps. Strong focus on functional programming.

@@ -1946,9 +1947,9 @@

Clojure

-
-

Hy

-
+
+

Hy

+

The youngest in this list, similar in spirit to Clojure, but translates to Python's AST.

@@ -1984,9 +1985,41 @@

Hy

-
-

My Emacs Lisp packages

-
+
+

Iversonian array languages

+
+

+APL means A Program Language, start setting your conclusions. An absolute joy to program +in them. Tacit, less is more. Terse, go to the point: +

+
+ +
+

BQN

+
+

+An APL for your flying saucer: +

+ +
+
(use-package bqn-mode
+  :straight t
+  :bind (:map bqn-mode-map
+              ("C-c C-e" . bqn-comint-send-buffer)
+              ("C-x C-e" . bqn-comint-send-dwin))
+  :hook (bqn-mode . bqn-comint-buffer)
+  :config
+  (require 'bqn-keymap-mode)
+  (require 'bqn-glyph-mode))
+
+
+
+
+
+ +
+

My Emacs Lisp packages

+

Here I plan to add small packages I write from time to time, mainly for non-trivial editing tasks that I stumble against at work. @@ -2062,9 +2095,9 @@

My Emacs Lisp packages

-
-

Fortran

-
+
+

Fortran

+

Fortran is a major component of my job as a physicist, this package provides all I need.

@@ -2080,9 +2113,9 @@

Fortran

-
-

IRPF90

-
+
+

IRPF90

+

IRPF90 is an environment that allows for efficient functional programming in FORTRAN using the Implicit Reference to Parameters (IRP) method. I have developed a derived @@ -2149,9 +2182,9 @@

IRPF90

-
-

C and C++

-
+
+

C and C++

+
(use-package ccls
   :straight t
@@ -2163,9 +2196,9 @@ 

C and C++

-
-

Rust

-
+
+

Rust

+
(use-package rust-mode
   :straight t)
@@ -2174,9 +2207,9 @@ 

Rust

-
-

Makefile

-
+
+

Makefile

+

Here it is important to mention that the following use-package declaration exists solely for aesthetic and organizational purposes. If we macrostep-expand it, we can convince ourselves: @@ -2220,9 +2253,9 @@

Makefile

-
-

Cmake

-
+
+

Cmake

+
(use-package cmake-mode
   :mode ("CMakeLists\\.txt\\'" "\\.cmake\(.in\)?\\'")
@@ -2248,9 +2281,9 @@ 

Cmake

-
-

Cuda

-
+
+

Cuda

+
(use-package cuda-mode
   :mode "\\.cu\\'")
@@ -2259,9 +2292,9 @@ 

Cuda

-
-

Python

-
+
+

Python

+
(use-package python
   :straight nil
@@ -2310,9 +2343,9 @@ 

Python

-
-

Julia

-
+
+

Julia

+
(use-package julia-mode
   :straight t
@@ -2334,13 +2367,13 @@ 

Julia

-
-

Computer algebra systems

-
+
+

Computer algebra systems

+
-
-

Maxima

-
+
+

Maxima

+

Maxima is a CAS written in Common Lisp that has been around for quite some time. It provides capabilities for symbolic and numerical computations. The following package enhances the default @@ -2362,9 +2395,9 @@

Maxima

-
-

SageMath

-
+
+

SageMath

+

SageMath is a comprehensive alternative to Mathematica, occasionally surpassing it in performance. However, it's written in Python, which lacks the advanced functional programming capabilities that @@ -2385,9 +2418,9 @@

SageMath

-
-

Graph visualization

-
+
+

Graph visualization

+

This package provides support for Graphviz's dot command line tool.

@@ -2402,13 +2435,13 @@

Graph visualization

-
-

Alternative shells

-
+
+

Alternative shells

+
-
-

Nushell

-
+
+

Nushell

+

This shell draws a lot of inspiration from functional languages:

@@ -2421,9 +2454,9 @@

Nushell

-
-

Xonsh

-
+
+

Xonsh

+

The best of Python and Bash, in a single shell:

@@ -2437,9 +2470,9 @@

Xonsh

-
-

Haskell

-
+
+

Haskell

+
(use-package haskell-mode
   :straight t
@@ -2458,9 +2491,9 @@ 

Haskell

-
-

Perl

-
+
+

Perl

+
(use-package cperl-mode
   :straight nil
@@ -2470,9 +2503,9 @@ 

Perl

-
-

Raku

-
+
+

Raku

+
(use-package raku-mode
   :straight t
@@ -2483,9 +2516,9 @@ 

Raku

-
-

Lua

-
+
+

Lua

+
(use-package lua-mode
   :straight t)
@@ -2494,11 +2527,11 @@ 

Lua

-
-

Org-mode

-
+
+

Org-mode

+

- +

@@ -2664,9 +2697,9 @@

Org-mode

-
-

LaTeX

-
+
+

LaTeX

+

Auctex provides all you will ever need to work with LaTeX, and more.

@@ -2692,9 +2725,9 @@

LaTeX

-
-

Web

-
+
+

Web

+
(use-package php-mode
   :mode ("\\.php\\'"))
@@ -2749,9 +2782,9 @@ 

Web

-
-

YAML

-
+
+

YAML

+
(use-package yaml-mode
   :straight t
@@ -2761,9 +2794,9 @@ 

YAML

-
-

Markdown

-
+
+

Markdown

+
(use-package markdown-mode
   :straight t
@@ -2774,9 +2807,9 @@ 

Markdown

-
-

reStructuredText

-
+
+

reStructuredText

+
(use-package rst
   :straight nil
@@ -2791,9 +2824,9 @@ 

reStructuredText

-
-

AsciiDoc

-
+
+

AsciiDoc

+
(use-package adoc-mode
   :straight t)
@@ -2802,9 +2835,9 @@ 

AsciiDoc

-
-

JSON

-
+
+

JSON

+
(use-package json-mode
   :mode "\\.json\\'")
@@ -2816,9 +2849,9 @@ 

JSON

-
-

Git

-
+
+

Git

+

A porcelain as glorious as the one from Meißen:

@@ -2841,9 +2874,9 @@

Git

-
-

GitLab CI

-
+
+

GitLab CI

+

This package comes very handy when writing GitLab pipelines:

@@ -2864,9 +2897,9 @@

GitLab CI

-
-

The heretic Vimscript

-
+
+

The heretic Vimscript

+
(use-package vimrc-mode
   :straight t)
@@ -2875,9 +2908,9 @@ 

The heretic Vimscript

-
-

Nix expressions language

-
+
+

Nix expressions language

+

Syntax highlighting for Nix expression's language files

@@ -2891,9 +2924,9 @@

Nix expressions language

-
-

GNU Guix package manager

-
+
+

GNU Guix package manager

+

Guix is a functional package manager inspired by Nix, but using Guile scheme instead of the Nix expression's language. This package offers an Emacs interface to it. @@ -2908,11 +2941,11 @@

GNU Guix package manager

-
-

Footer of the Emacs package

-
+
+

Footer of the Emacs package

+

- +