Navigel
Emacs library to facilitate the creation of tabulated-list based UIs
Install / Use
/learn @DamienCassou/NavigelREADME
-
navigel
#+BEGIN_HTML <p> <a href="https://stable.melpa.org/#/navigel"> <img alt="MELPA Stable" src="https://stable.melpa.org/packages/navigel-badge.svg"/> </a>
<a href="https://melpa.org/#/navigel"> <img alt="MELPA" src="https://melpa.org/packages/navigel-badge.svg"/> </a> <a href="https://github.com/DamienCassou/navigel/actions/workflows/test.yml"> <img alt="pipeline status" src="https://github.com/DamienCassou/navigel/actions/workflows/test.yml/badge.svg" /> </a> </p>#+END_HTML
** Summary
The navigel package is a library that makes it simpler for Emacs Lisp developers to define user-interfaces based on tablists (also known as tabulated-lists). Overriding a few (CL) methods and calling `navigel-open' is all that's required to get a nice UI to navigate your domain objects (files, music library, database, etc.).
Navigel displays "entities" in a tablist. An "entity" is whatever you want that has a name. If an entity defines some "children", then pressing ~RET~ on the entity will list its children in another tablist.
Some features of navigel include:
- pressing ~RET~ on an entity lists the entity's children in another tablist;
- pressing ~^~ opens the parent of the current entity;
- pressing ~m~ marks the entity at point;
- pressing ~d~ deletes the marked entities.
Navigel automatically adds support for [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Bookmarks.html#Bookmarks][bookmarks]] and [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Imenu.html#Imenu][imenu]].
This package depends on [[https://github.com/politza/tablist][tablist]] to get support for marking, deletion and more. On top of the tablist package, navigel provides an easy way to specify the content of your tabulated lists: through entities specified with method overrides. This makes it a breath to have tablist-based navigation within domain objects.
** Usage
This code is a library and is meant for Emacs Lisp developers. The source code is well documented and organized in sections. Please have a look at it.
Please have a look at the [[file:examples/navigel-ex-fs.el][examples/navigel-ex-fs.el]] file for an example on how to use the library. This file guides the reader through an implementation of a tablist-based directory navigator with support for marking and deleting:
[[file:media/files.png]]
** License
See [[file:COPYING][COPYING]]. Copyright (c) 2019-2025 Damien Cassou.
#+BEGIN_HTML <a href="https://liberapay.com/DamienCassou/donate"> <img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"> </a> #+END_HTML
LocalWords: navigel tablist tablists
Related Skills
node-connect
347.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
