This repository contains `clojure-mode`, an Emacs major mode for editing Clojure, ClojureScript, and related languages. The system provides syntax highlighting (font-lock), indentation, navigation, and a suite of refactoring commands directly in the editor. The architecture is a single large Emacs Lisp file (`clojure-mode.el`) with an additional extra font-locking package. It defines a base `clojure-mode` derived from `prog-mode`, plus derived modes for ClojureScript, ClojureC, ClojureDart, Joker, Jank, and EDN data files. Key entry points are the mode activation functions and interactive commands like `clojure-align`, `clojure-thread`, `clojure-cycle-privacy`, etc. The indentation engine uses a backtracking algorithm that walks up the sexp tree to apply contextual indent specs (shared with `clojure-ts-mode`). Font-locking is regex-based and extensible, with special handling for docstrings, discard macros, and character literals. The package depends only on standard Emacs libraries (`cl-lib`, `imenu`, `align`, `subr-x`) and requires Emacs 27.1+.
Org-fc is a spaced repetition system implemented as an Emacs package for org-mode. It allows users to mark org-mode headlines as flashcards and review them using spaced repetition algorithms (SM2 or FSRS). The system features multiple card types (normal, double, text-input, cloze, vocab), efficient indexing via AWK scripts with caching, a dashboard for statistics, and optional extensions like audio playback and key-binding hints. The architecture is modular with clear separation between core functionality, review logic, card types, spacing algorithms, and utilities.
Ebib is a BibTeX database manager for GNU Emacs that provides a standalone interface for managing bibliographic references without editing raw .bib files. It features a two-window layout (index and entry buffers) and supports both BibTeX and biblatex formats. The system enables entry creation/editing, search/filtering, citation insertion into text buffers, external resource linking (files/URLs/DOIs), notes management (Org/Markdown), reading list tracking, and keyword handling. Built entirely in Emacs Lisp, it integrates with Emacs ecosystem tools like Ivy/Helm for completion, Org mode for notes/reading lists, and external utilities for DOI resolution and file viewing. The architecture is modular with separate modules for database logic, utilities, filters, notes, reading lists, and keywords, demonstrating good separation of concerns.
quickrun.el is an Emacs Lisp package that provides a quick and convenient way to execute the current buffer's content using the appropriate interpreter or compiler. It automatically detects the programming language based on file extension or major mode, then runs the corresponding command (e.g., python, gcc, node) with the buffer content as input. The package supports a wide range of languages, including compiled languages (C, C++, Java, Go), scripting languages (Python, Ruby, Perl), and markup languages (Markdown, HAML). It offers multiple execution modes: standard run, compile-only, shell (for interactive programs), region execution, and argument passing. Output can be directed to a dedicated *quickrun* buffer with ANSI color support, or to files, variables, browsers, or multiple destinations via a pluggable outputter system. The architecture is monolithic, with all functionality contained in a single Emacs Lisp file, but it provides a clean extension API via `quickrun-add-command` and `quickrun-set-default` for adding custom language support. The package is well-maintained, with active development and CI testing across multiple Emacs versions and platforms.
This repository provides an Emacs package that implements bash completion within Emacs shell buffers and command prompts. It works by spawning or reusing a bash process to generate completions via `compgen`, respecting the user's bash configuration including aliases, functions, and programmable completion. The package handles edge cases like quoted strings, redirections, and colon-separated variables, and works with TRAMP for remote shells. The architecture is centered around a single Emacs Lisp file that defines functions for parsing shell commands, communicating with bash processes, and formatting completion results. Key entry points include `bash-completion-setup` for initialization and `bash-completion-dynamic-complete` for integration with Emacs' completion system.