{
  "id": 4139220,
  "title": "e is a customizable self-aware Emacs-like editor written in Chez Scheme",
  "url": "https://urgent.news/2026/08/29/e-is-a-customizable-self-aware-emacs-like-editor-written-in-chez",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-29T06:35:28.000Z",
  "source": {
    "name": "Hacker News",
    "slug": "hacker-news",
    "url": "https://github.com/paveluv/e"
  },
  "original_language": "en",
  "account": "e is an adaptable self-aware editor modeled after Emacs, created using Chez Scheme programming language. It encompasses various features like buffers, windows, a kill ring, incremental search, and a Scheme top-level environment, yet it does not replicate Emacs entirely. Drawing inspiration from key concepts, it maintains simplicity as its philosophy. The editor is designed to be self-contained with each installation utilizing solely the files in the lib/ directory, which is stored next to the script itself. The compiled objects are kept locally in eo/, and the source code recompiles automatically whenever changes occur in the source files or their dependencies.\n\nThe editor automatically detects the terminal size through ioctl and maintains this information across window resizes. In the absence of this functionality, users can set the LINES and COLUMNS variables. For FreeBSD users, the Chez Scheme interpreter might have a different name; in such cases, the shebang should be modified accordingly or the interpreter can be invoked directly. Every window has its unique status line, point, and scroll position, allowing multiple windows to display the same buffer simultaneously. Buffers carry their history and marks, while windows have independent point, scrolling, wrapping, and status.\n\nA default right-side scrollbar is present; pressing C-x l toggles a buffer-specific line-number gutter. Comprehensive documentation is available on buffers, file integrity, terminal windows, mouse behavior, scrollbars, wrapping, splits, and the public API. Users can customize keyboard commands in the config.e file, which overrides built-in and module defaults. The key binding configuration provides a detailed description of key syntax, context maps, available actions, precedence, unbinding, and module defaults.\n\nIncremental search can be initiated with C-s, allowing users to extend the search term, navigate through matches, accept the search results, or cancel the search. The search functionality respects the case of the search term, ignoring it when it consists of lowercase letters but becoming exact when a capital letter is introduced. The author has implemented specific indentation rules, ensuring that lines within a buffer maintain consistent spacing and avoiding the merging or splitting of lines. The editor supports various indentation methods, including TAB for indentation and modes that register indenters. Scheme-mode, for instance, adheres to Emacs-like indentation rules.\n\nAdditionally, the editor offers formatting capabilities, including format-region! and format-buffer!, which adjust tabs, trim trailing whitespace, remove trailing blank lines, and apply bracket conventions. Modules enable users to define indentation and formatting rules for specific modes. The Scheme engine used by e is the pure scheme-format library, which also powers the scheme-format tool, allowing users to format Scheme files using the command line or by redirecting input and output. The editor automatically formats Scheme buffers upon saving, providing a consistent coding style across projects.",
  "summary": null,
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}