[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ilist d03de0ea64 02/24: README
From: |
ELPA Syncer |
Subject: |
[elpa] externals/ilist d03de0ea64 02/24: README |
Date: |
Tue, 28 Dec 2021 16:58:12 -0500 (EST) |
branch: externals/ilist
commit d03de0ea640c2abb16c548f6e3066818dbf93d7d
Author: JSDurand <mmemmew@gmail.com>
Commit: JSDurand <mmemmew@gmail.com>
README
---
README.org | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 114 insertions(+)
diff --git a/README.org b/README.org
new file mode 100644
index 0000000000..cb060d07f0
--- /dev/null
+++ b/README.org
@@ -0,0 +1,114 @@
+#+TITLE: IList
+#+AUTHOR: Durand
+#+DATE: <2021-09-12 Dim 11:00>
+
+* About
+
+This is a little library package that can "display a list in an
+ibuffer fashion". The core functionality it provides is a function
+that can accept a list, and produce a string showing the contents of
+the list according to the specifications of columns and groups.
+
+* Entry point
+
+The one main function this package provides is =ilist-string=. It is
+called as follows.
+
+#+begin_src emacs-lisp :eval no :exports code
+(ilist-string LIST COLUMNS GROUPS DISCARD-EMPTY-P)
+#+end_src
+
+Here the LIST is the list that the user wants to display.
+
+And DISCARD-EMPTY-P determines whether to display empty groups or not.
+
+** Columns
+
+Like in ibuffer, the user can specify columns to display. Each column
+comprises the following specifications:
+
+- NAME: The name to display in the header.
+- FUN: A function that will be given the elements of the list (one at
+ a time) that should return a string as the representation of that
+ element in this column.
+- MIN: The minimal number of width this column takes.
+- MAX
+- ALIGN: Either :left, :right, or :center. How the contents of the
+ column are aligned.
+- ELIDE: If the content of an element takes more space than the MAX,
+ whether to substitute the last few characters of that content by a
+ fixed "eliding string". If this ELIDE is not a string, then it
+ means not to elide, but to truncate the contents.
+
+** GROUPS
+
+*** Fixed groups
+
+Like in ibuffer, we can group elements together in the display. One
+difference with ibuffer is that elements that are not in any group are
+ignored. If one wants a "default" group, specify that explicitly.
+The specifications of GROUPS are as follows.
+
+- NAME: The name of the group. This will be enclosed in square
+ brackets and displayed on a separate line.
+- FUN: A function with one argument. If the function returns non-nil,
+ then that element is considered to pertain to the group.
+
+So a default group just uses a function that always returns t, and is
+put at the end of the list GROUPS.
+
+Empty groups might or might not be displayed, depending on the value
+of DISCARD-EMPTY-P.
+
+*** Automatic groups (planned)
+
+I plan to add support for automatic groups. This means that, instead
+of providing a list of groups, one provides a function with one
+argument. That argument will be fed the list of elements. Then the
+function is supposed to return a list of the following form:
+
+#+begin_src emacs-lisp :eval no :exports code
+ (list
+ (NAME
+ (INDEX1 . ELEMENT1)
+ (INDEX2 . ELEMENT2)
+ ...)
+ ...)
+#+end_src
+
+That is, it should return cons cells of indices and elements, where
+the indices mean the indices of the corresponding element, in the
+original list.
+
+Then the user can provide functions to automatically group elements
+based on the criteria that fit the domain of application.
+
+* Mapping over lines
+
+For the convenience of package-users, this package also provides some
+auxiliary functions to operate on the displayed list. One is
+=ilist-map-lines=. It is called as follows.
+
+#+begin_src emacs-lisp :eval no :exports code
+ (ilist-map-lines FUN PREDICATE START END)
+#+end_src
+
+- FUN: The function to execute on each matching line.
+- PREDICATE: This should be a function with no arguments. It will be
+ executed on each line. If it returns non-nil, that line is
+ considered to be matched.
+- START and END limit the range of the mapping.
+
+* Moving
+
+It might be desired to move between the displayed list items in a
+/cyclic/ manner, that is, assuming the top of the buffer is identified
+with the bottom of the buffer. So the package provides four functions
+for moving.
+
+- =ilist-backward-line=
+- =ilist-forward-line=: Move between lines. One can control whether
+ to skip group headers or to move cyclicly, through the function
+ parameters.
+- =ilist-backward-group-header=
+- =ilist-forward-group-header=: Move between group headers.
- [elpa] branch externals/ilist created (now b2bf67c5d8), ELPA Syncer, 2021/12/28
- [elpa] externals/ilist 3265864faf 01/24: Initial working version, ELPA Syncer, 2021/12/28
- [elpa] externals/ilist d03de0ea64 02/24: README,
ELPA Syncer <=
- [elpa] externals/ilist 5ba04b79bd 03/24: * ilist.el (ilist-string): Add support for sorting., ELPA Syncer, 2021/12/28
- [elpa] externals/ilist 457f0b0d87 06/24: no trailing whitespaces if demanded, ELPA Syncer, 2021/12/28
- [elpa] externals/ilist 4fb5695fe1 09/24: Add manuals and update README, ELPA Syncer, 2021/12/28
- [elpa] externals/ilist 95bcbf4b00 12/24: ilist: leave new lines when hiding groups, ELPA Syncer, 2021/12/28
- [elpa] externals/ilist 8b5d5f382f 22/24: Update docs, ELPA Syncer, 2021/12/28
- [elpa] externals/ilist f021d7d8ab 20/24: fix: account for an invisible beginning, ELPA Syncer, 2021/12/28
- [elpa] externals/ilist 282f60c93a 21/24: I forgot to byte-compile again. Silly me!, ELPA Syncer, 2021/12/28
- [elpa] externals/ilist c3f0e61360 13/24: fix missing parameter, ELPA Syncer, 2021/12/28
- [elpa] externals/ilist b2bf67c5d8 24/24: Add changelog, and update documentation, ELPA Syncer, 2021/12/28
- [elpa] externals/ilist ed18678569 05/24: new: get group and marks, ELPA Syncer, 2021/12/28