GNU Software

1. Emacs   emacs

properties ID: 5fc53135-1b6c-4260-b264-66be7a2b8ff0
CREATED: <2025-01-18 Sat 20:47>
edges

GNU Emacs
Online Manuals
<< Elisp
– [BROKEN LINK: man:emacs]
>> IDE


1.1. Releases

properties CUSTOM_ID: releases
ID: cfe9d1b9-f6f4-4866-8291-d125fc8b3eb6

For sanity checking, it's helpful to have access to older versions of Emacs. We can download and verify a version like this:

#aria2c https://ftp.gnu.org/gnu/gnu-keyring.gpg -d /tmp/
#gpg --import /tmp/gnu-keyring.gpg
VERSION=24.2
aria2c https://ftp.gnu.org/gnu/emacs/emacs-${VERSION}.tar.xz.sig -d /tmp/
gpg --verify /tmp/emacs-${VERSION}.tar.xz.sig
aria2c https://ftp.gnu.org/gnu/emacs/emacs-${VERSION}.tar.xz -d /tmp/
tar -xf emacs-${VERSION}.tar.xz

1.2. Building from Source

properties CUSTOM_ID: building_from_source
ID: 31710a0d-bd27-4549-894e-62bb8ceaa015

First, clone the repo:

git clone https://git.savannah.gnu.org/git/emacs.git /tmp/emacs

Once the source is in hand, I strongly recommend making a separate build directory and calling the configure script from there.

mkdir /tmp/emacs-build && cd /tmp/emacs-build
../emacs/configure --with-mailutils --with-imagemagick --with-x-toolkit=athena --without-pop --without-sound --with-json --enable-link-time-optimization --with-native-compilation --with-modules
NATIVE_FULL_AOT=1 make -j8
# test the build with './src/emacs' (location of output binary)
# install emacs binaries on current system
make install

The configure script takes a bunch of different flags that customize the build, and generate a build-specific Makefile.

The next line compiles the source. Install with make install and you're done! A custom Emacs binary with all the fixings has just been installed for your current user. :)

Here are some of the other configuration flags worth investigating:

  • –without-all
  • –with-x-toolkit=no
  • –without-x
  • –without-dbus –without-gconf –without-gsettings

1.3. Diary

properties ID: f344abcc-1a23-43cf-83fb-4a95b54c51ed
CREATED: <2026-06-02 Tue 20:18>
edges

info


1.4. Remember

properties ID: 7a0c9956-16ee-4302-a152-c3c5f0f0bdbf
CREATED: <2026-06-02 Tue 20:18>
  • textmodes/remember.el

Hyperbole, as a data presentation tool, always struck me as being very powerful, but it seemed to require a lot of "front-end" work before that data was really available. The problem with BBDB, or keeping up a Bibl-mode file, is that you have to use different functions to record the data, and it always takes time to stop what you're doing, format the data in the manner expected by that particular data interface, and then resume your work.

With "remember", you just hit `M-x remember' (you'd probably want to bind this to an easily accessible keystroke, like C-x M-r), slam in your text however you like, and then hit C-c C-c. It will file the data away for later retrieval, and possibly indexing.

Indexing is to data what "studying" is in the real world. What you do when you study (or lucubrate, for some of us) is to realize certain relationships implicit in the data, so that you can make use of those relationships. Expressing that a certain quote you remembered was a religious quote, and that you want the ability to pull up all quotes of a religious nature, is what studying does. This is a more labor intensive task than the original remembering of the data, and it's typical in real life to set aside a special period of time for doing this work.

"Remember" works in the same way. When you enter data, either by typing it into a buffer, or using the contents of the selected region, it will store that data – unindexed, uninterpreted – in a data pool. It will also try to remember as much context information as possible (any text properties that were set, where you copied it from, when, how, etc). Later, you can walk through your accumulated set of data (both organized, and unorganized) and easily begin moving things around, and making annotations that will express the full meaning of that data, as far as you know it.

Obviously this latter stage is more user-interface intensive, and it would be nice if "remember" could do it as elegantly as possible, rather than requiring a billion keystrokes to reorganize your hierarchy. Well, as the future arrives, hopefully experience and user feedback will help to make this as intuitive a tool as possible.

1.5. Change Logs

properties ID: cf1cdbeb-5042-453d-a80b-f40e07cd7959
CREATED: <2026-06-03 Wed 19:29>
edges

info


1.6. Eww   browser

properties ID: 21adcc1c-67ee-4f50-9049-12794824b2c7
CREATED: <2025-03-01 Sat 13:35>
edges

EmacsWiki: eww


the Emacs Web Wowser, a browser written in elisp based on shr.el.

eww() {
 emacsclient -a '' -t -e '(eww-browse-url "'"$1"'")'
}

1.7. Pages

properties ID: ce9a92b0-ad75-4ca1-8653-cad020514c66
CREATED: <2026-06-05 Fri 20:52>
edges

info


1.8. Speedbar

properties ID: 2cebd8b2-615e-44b2-afd4-2e302f836dd3
CREATED: <2025-03-03 Mon 13:43>
edges

info


1.9. ERC   irc

properties ID: a42c2aaa-8dda-40ca-b455-7511f0cb084a
CREATED: <2025-03-03 Mon 16:45>
edges

info
>> IRC


1.10. EUDC

properties ID: b72f96f7-4040-4548-8da2-e619d26c4887
CREATED: <2025-03-03 Mon 16:47>
edges

info


Emacs Unified Directory Client

1.10.1. BBDB   bbdb

properties ID: db8e43f4-78ec-4fb1-93e7-11ac7ee87799
CREATED: <2025-03-03 Mon 17:46>
edges

info
Insidious Big Brother Database - Summary [Savannah]​


1.11. SLIME   lisp cl

properties ID: f499c680-9a01-4a11-bc69-81861fd864d0
CREATED: <2025-03-03 Mon 17:45>
edges

info
<- Swank


1.12. Eshell

properties ID: 86dbf792-301b-405e-806b-3df7e9531279
CREATED: <2025-03-03 Mon 19:57>
edges

info
Mastering Eshell - Mastering Emacs
howardabrams/dot-files/emacs-eshell.org
Why use EShell?
EmacsWiki: Category Eshell
Don't be afraid of eshell


1.13. Eglot

properties ID: 8b1452eb-fc57-4026-8587-91ff8ebccba6
CREATED: <2025-03-03 Mon 19:57>
edges

info


Eglot is the Emacs client for the “Language Server Protocol” (LSP). The name "Eglot" is an acronym that stands for "Emacs polyGLOT". (1) Eglot provides infrastructure and a set of commands for enriching the source code editing capabilities of Emacs via LSP. LSP is a standardized communications protocol between source code editors (such as Emacs) and language servers–programs external to Emacs which analyze the source code on behalf of Emacs. The protocol allows Emacs to receive various source code services from the server, such as description and location of function calls, types of variables, class definitions, syntactic errors, etc. This way, Emacs doesn't need to implement the language-specific parsing and analysis capabilities in its own code, but is still capable of providing sophisticated editing features that rely on such capabilities, such as automatic code completion, go-to definition of function/class, documentation of symbol at-point, refactoring, on-the-fly diagnostics, and more.

Eglot itself is completely language-agnostic, but it can support any programming language for which there is a language server and an Emacs major mode.

  • eglot-server-programs
    • alist of (major-mode . server)
  • eglot#Advanced server configuration
  • Featues

    • At-point documentation: when point is near a symbol or an identifier, information about the identifier's significance in the program (its function or method signature, its type, its custom documentation string, etc.) is made available via the ElDoc package (*note (emacs)Programming Language Doc::).

    • On-the-fly diagnostic annotations, via the Flymake package (*note (Flymake)Top::). Eglot's Flymake backend replaces other Flymake backends while it is managing a buffer, and enhances diagnostics with interactive server-suggested fixes (so-called “code actions”, *note Eglot Commands::).

    • Finding definitions and uses of identifiers, via Xref (*note (emacs)Xref::). Eglot provides a backend for the Xref capabilities which uses the language server's understanding of the program source. In particular, it eliminates the need to generate tags tables (*note (emacs)Tags tables::) for languages which are only supported by the ‘etags’ backend.

    • Buffer navigation by name of function, class, method, etc., via Imenu (*note (emacs)Imenu::). Eglot provides its own variant of ‘imenu-create-index-function’, which generates the index for the buffer based on the language server's program source analysis.

    • Enhanced completion of symbol at point by the ‘completion-at-point’ command (*note (emacs)Symbol Completion::). This uses the language server's parser data for the completion candidates.

    • Server-suggested code refactorings. The ElDoc package is also leveraged to retrieve so-called “code actions” nearby point. When such suggestions are available they are annotated with a special indication and can be easily invoked by the user with the ‘eglot-code-action’ command (*note Eglot Commands::).

    • On-the-fly succinct informative annotations, so-called “inlay hints”. Eglot adds special intangible text nearby certain identifiers, be it the type of a variable, or the name of a formal parameter in a function call. *Note Eglot Commands::, and the ‘eglot-inlay-hints-mode’ minor mode.

    • Enhanced source code fontification via LSP “semantic tokens”. Eglot can leverage the language server's understanding of the role and meaning of identifiers in the code to provide more accurate syntax highlighting. *Note Eglot Commands::, and the ‘eglot-semantic-tokens-mode’ minor mode.

    • Display of function call and type hierarchies via the ‘eglot-show-call-hierarchy’ and ‘eglot-show-type-hierarchy’ commands (*note Eglot Commands::).

    • Code reformatting via the ‘eglot-format’ and related commands (*note Eglot Commands::). Automatic reformatting of source code is also supported and is activated automatically as you type.

    • Eglot enhances symbol completion front-ends by providing completion candidates based on the language server's understanding of the source code (*note (emacs)Symbol Completion::). The Company package, installable from GNU ELPA, is a popular package known to work well with Eglot.

    • If YASnippet, a popular third-party package for automatic insertion of code templates (snippets), is installed, and the language server supports snippet completion candidates, Eglot arranges for the completion package to instantiate these snippets using YASnippet. (YASnippet can be installed from GNU ELPA.)

    • When the server provides at-point documentation formatted as Markdown in addition to plain text, Eglot arranges for the ElDoc package to enrich this text with fontifications, hyperlinks and other nice formatting before displaying it to the user. This makes the documentation shown by ElDoc look nicer on display.

    • In addition to enabling and enhancing other features and packages, Eglot also provides a number of user commands based on the capabilities of language servers. Examples include renaming symbols with ‘eglot-rename’ and asking to automatically correct problems with ‘eglot-code-actions’. *Note Eglot Commands::.

  • eglot is optimistic by default - to opt out of features use eglot-ignored-server-capabilities and eglot-managed-mode-hook
  • autostart: (add-hook 'foo-mode-hook 'eglot-ensure)
    • on first connection: eglot-connect-hook
  • some multiserver scenarios not supported by Eglot's architecture, better off building a LSP server multiplexer (hint hint)
  • extension documentation recommends just read the source
  • performance opts: eglot-events-buffer-config

1.14. Calc

properties ID: 92ad7518-cf81-4aca-9940-bd40fb02f5dd
CREATED: <2025-06-09 Mon 17:00>
edges

info
-> CAS
EmacsWiki: Calc
Fun with Emacs Calc - Mastering Emacs
calc cheatsheet


24
3
'/
8
fsolve(x*2+x=4,x)
x = 1.33333333333
fsolve([x + y = a, x - y = b],[x,y])
[x = a + (b - a) / 2, y = (a - b) / 2]

1.15. dictionary

properties ID: c344fc40-d6d8-4553-885b-fe8c55d6aa98
CREATED: <2025-10-11 Sat 22:36>

1.16. SES

properties ID: c40383a3-c717-43c6-8188-e2a564a641a1
CREATED: <2025-03-03 Mon 19:58>
edges

info


Simple Emacs Spreadsheet

1.17. Packages

properties ID: 8b2930be-e877-4e6b-aea4-372be3c8340c
CREATED: <2025-03-09 Sun 19:05>

1.17.1. Org-roam   org

properties ID: 3bb08e71-1ce9-46ed-844a-31305162645e
CREATED: <2025-03-03 Mon 19:46>
edges

Org-roam
-> Knowledge System


A plain-text personal knowledge management system.

  • Popular extension which uses a sqlite backend to persist a Roam-like graph of Org-mode nodes.
  • Our own graph.el implementation in core/emacs is inspired by org-roam

1.17.2. emacs-scrum   org

properties ID: 947597c2-8f17-4ba8-8af7-6d5784219b0c
CREATED: <2025-03-15 Sat 16:56>
edges

src


dynamic scrum report generation for org-mode buffers

1.17.3. vertico

properties ID: b1c1d365-1983-4e63-8cf6-c032932ff1b9
CREATED: <2025-06-09 Mon 17:08>
edges

src


1.17.4. corfu

properties ID: 371ff3e8-d0e0-4260-bc41-4ba53d635ce5
CREATED: <2025-06-09 Mon 17:09>
edges

src


Completion in Region Function

1.17.5. cape

properties ID: c69f7d77-7ec1-4d7e-b70d-23e54cdced4b
CREATED: <2025-06-09 Mon 17:10>
edges

src


1.17.6. kanban.el   org

properties ID: 5ff7407e-32a0-463b-bf59-9519875da655
CREATED: <2025-03-15 Sat 16:57>
edges

src


Parse org-todo headlines to use org-tables as Kanban tables

1.18. Apps

properties ID: 1bbc8529-d207-4a7e-a72a-b231316c90e6
CREATED: <2025-03-03 Mon 15:54>

1.18.1. Cloudmacs

properties ID: defa663e-3522-475c-ad44-615b64edabf1
CREATED: <2025-03-03 Mon 15:54>
edges

Cloudmacs: Emacs in your web browser | beepb00p


1.19. Blogs

properties ID: 4d72736e-f3c1-4b6f-839d-474710771d78
CREATED: <2025-10-11 Sat 22:33>

1.19.1. Mastering Emacs

properties ID: cf98496a-d864-4878-8401-ffaa73aa7d04
CREATED: <2025-10-11 Sat 22:33>
edges

Mastering Emacs


1.19.2. Sacha Chua

properties ID: c6d79f1d-e5bd-479e-82fa-20df7e5dd83f
CREATED: <2025-10-11 Sat 22:34>
edges

Home :: Sacha Chua


2. GNU Radio

properties ID: c92b3830-3836-41b0-a502-f04b44cd3292
CREATED: <2025-02-14 Fri 22:22>
edges

GNU Radio
What Is GNU Radio - GNU Radio


2.1. GRC   gui

properties ID: c272a3f2-b0b0-4784-aeaf-4c677cbbd708
CREATED: <2025-03-03 Mon 16:32>
edges

– [BROKEN LINK: man:gnuradio-companion]


GNU Radio Companion

  • GUI tool for creating signal flowgraphs

3. Stow

properties ID: 0b60eedf-686b-4f9a-bc2b-7cee2be7e828
CREATED: <2026-04-18 Sat 20:46>
edges

Stow - GNU Project - Free Software Foundation


GNU Stow is a symlink farm manager which takes distinct packages of software and/or data located in separate directories on the filesystem, and makes them appear to be installed in the same place. For example, /usr/local/bin could contain symlinks to files within /usr/local/stow/emacs/bin, /usr/local/stow/perl/bin etc., and likewise recursively for any other subdirectories such as .../share, .../man, and so on.