navigel
navigel copied to clipboard
Emacs library to facilitate the creation of tabulated-list based UIs
-
navigel
#+BEGIN_HTML
<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-2023 Damien Cassou.