summaryrefslogtreecommitdiff
path: root/README.org
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2023-08-19 02:01:51 +0200
committerThomas Voss <mail@thomasvoss.com> 2023-08-19 02:01:51 +0200
commitb468962a0d8e4e49b8ba2aee7a6b40c764643f08 (patch)
tree65e439f535b85b7a67f34582105234d8e5999eaf /README.org
Genesis commit
Diffstat (limited to 'README.org')
-rw-r--r--README.org105
1 files changed, 105 insertions, 0 deletions
diff --git a/README.org b/README.org
new file mode 100644
index 0000000..a4b9c1b
--- /dev/null
+++ b/README.org
@@ -0,0 +1,105 @@
+#+TITLE: iota.el
+#+AUTHOR: Thomas Voss
+#+DESCRIPTION: Simple- and easy Emacs enumerations
+
+Iota is a very simple Emacs package that allows you to easily perform
+enumerations. It makes use of the ~iota-regexp~ variable to match substrings
+within a region. These substrings are then replaced with incrementing integers,
+although more complex enumeration is also possible.
+
+* Installation
+
+Iota is available through MELPA:
+
+#+BEGIN_SRC elisp
+
+ (use-package iota)
+
+#+END_SRC
+
+It’s recommended however that you bind the Iota functions to keybindings for
+easy access:
+
+#+BEGIN_SRC elisp
+
+ (use-package iota
+ :bind (("C-c i" . #'iota)
+ ("C-c I" . #'iota-complex)))
+
+#+END_SRC
+
+* Usage
+
+One important part of Iota is the ~iota-regexp~ variable. By default
+~iota-regexp~ is set to ~"\\<N\\>"~, so to create an ordered-list you could
+execute ~iota~ on the following region:
+
+#+BEGIN_EXAMPLE
+
+Before calling ‘iota’:
+
+ N. List item
+ N. Another list item
+ N. Final list item
+
+After calling ‘iota’:
+
+ 1. List item
+ 2. Another list item
+ 3. Final list item
+
+#+END_EXAMPLE
+
+By default the ~iota~ function replaces all matches with an incrementing number
+beginning with 1, however you can begin at any point by specifying the universal
+argument. For example, to begin the list above at 4, you could run =C-u 4 M-x
+iota RET=.
+
+If for whatever reason however you want something that isn’t increments by 1,
+then you can make use of the ~iota-complex~ function. ~iota-complex~ works
+mostly the same as ~iota~ except you get prompted for two values. The first
+value is the initial value to start at. The second and perhaps more interesting
+value is the function to use to generate the next numerical value. You can
+provide any valid emacs-lisp expression so long as it evaluates to a function
+that takes one numerical parameter and returns an integer:
+
+#+BEGIN_EXAMPLE
+
+Before calling ‘iota-complex’:
+
+ #define BIT1 N
+ #define BIT2 N
+ #define BIT3 N
+ #define BIT4 N
+ #define BIT5 N
+ #define BIT6 N
+ #define BIT7 N
+ #define BIT8 N
+
+After calling ‘iota-complex’ with ‘initial’ as 1 and ‘function’ as
+‘(lambda (x) (* 2 x))’:
+
+ #define BIT1 1
+ #define BIT2 2
+ #define BIT3 4
+ #define BIT4 8
+ #define BIT5 16
+ #define BIT6 32
+ #define BIT7 64
+ #define BIT8 128
+
+#+END_EXAMPLE
+
+Or perhaps if you want to enumerate in the negative direction:
+
+#+BEGIN_EXAMPLE
+
+Before calling ‘iota-complex’:
+
+ It started at N and then dropped to N!
+
+After calling ‘iota-complex’ with ‘initial’ as ‘-3’ and ‘function’ as ‘1-’:
+
+ It started at -3 and then dropped to -4!
+
+#+END_EXAMPLE