Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/de-vri-es/weechat-autosort
Automatically keep your buffers sorted.
https://github.com/de-vri-es/weechat-autosort
autosort buffers channels irc sort weechat
Last synced: 6 days ago
JSON representation
Automatically keep your buffers sorted.
- Host: GitHub
- URL: https://github.com/de-vri-es/weechat-autosort
- Owner: de-vri-es
- License: gpl-3.0
- Created: 2014-04-08T20:31:53.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-12-29T13:18:09.000Z (11 months ago)
- Last Synced: 2024-08-02T05:11:56.218Z (3 months ago)
- Topics: autosort, buffers, channels, irc, sort, weechat
- Language: Python
- Homepage:
- Size: 108 KB
- Stars: 76
- Watchers: 6
- Forks: 8
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Autosort
## Introduction
Autosort is a weechat script to automatically or manually keep your buffers sorted.
The sort order can be customized by defining your own sort rules,
but the default should be sane enough for most people.
It can also group IRC channel/private buffers under their server buffer if you like.Autosort uses a stable sorting algorithm, meaning that you can manually move buffers
to change their relative order, if they sort equal with your rule set.## Sort rules
Autosort evaluates a list of eval expressions (see /help eval) and sorts the buffers based on evaluated result.
Earlier rules will be considered first.
Only if earlier rules produced identical results is the result of the next rule considered for sorting purposes.You can debug your sort rules with the `/autosort debug` command, which will print the evaluation results of each rule for each buffer.
NOTE: The sort rules for version 3 are not compatible with version 2 or vice versa.
You will have to manually port your old rules to version 3 if you have any.## Helper variables
You may define helper variables for the main sort rules to keep your rules readable.
They can be used in the main sort rules as variables.
For example, a helper variable named `foo` can be accessed in a main rule with the string `${foo}`.## Automatic or manual sorting
By default, autosort will automatically sort your buffer list whenever a buffer is opened, merged, unmerged or renamed.
This should keep your buffers sorted in almost all situations.
However, you may wish to change the list of signals that cause your buffer list to be sorted.
Simply edit the `autosort.sorting.signals` option to add or remove any signal you like.
If you remove all signals you can still sort your buffers manually with the `/autosort sort` command.
To prevent all automatic sorting, `autosort.sorting.sort_on_config_change` should also be set to off.## Recommended settings
For the best visual effect, consider setting the following options:
```
/set irc.look.server_buffer independent
```This setting allows server buffers to be sorted independently,
which is needed to create a hierarchical tree view of the server and channel buffers.If you are using the buflist plugin you can (ab)use Unicode to draw a tree
structure with the following setting (modify to suit your need):
```
/set buflist.format.indent "${color:237}${if:${buffer.next_buffer.local_variables.type}=~^(channel|private)$?├─:└─}"
```## Commands
### Miscellaneous
```
/autosort sort
```
Manually trigger the buffer sorting.```
/autosort debug
```
Show the evaluation results of the sort rules for each buffer.### Sorting rules
```
/autosort rules list
```
Print the list of sort rules.```
/autosort rules add
```
Add a new rule at the end of the list.```
/autosort rules insert
```
Insert a new rule at the given index in the list.```
/autosort rules update
```
Update a rule in the list with a new expression.```
/autosort rules delete
```
Delete a rule from the list.```
/autosort rules move
```
Move a rule from one position in the list to another.```
/autosort rules swap
```
Swap two rules in the list### Helper variables
```
/autosort helpers list
```
Print the list of helpers variables.```
/autosort helpers set
```
Add or update a helper variable.```
/autosort helpers delete
```
Delete a helper variable.```
/autosort helpers rename
```
Rename a helper variable.```
/autosort helpers swap
```
Swap the expressions of two helper variables in the list.## Info hooks
Autosort comes with a number of info hooks to add some extra functionality to regular weechat eval strings.
Info hooks can be used in eval strings in the form of `${info:some_hook,arguments}`.Commas and backslashes in arguments to autosort info hooks (except for `${info:autosort_escape}`) must be escaped with a backslash.
```
${info:autosort_replace,pattern,replacement,source}
```
Replace all occurrences of `pattern` with `replacement` in the string `source`.
Can be used to ignore certain strings when sorting by replacing them with an empty string.For example: `${info:autosort_replace,cat,dog,the dog is meowing}` expands to "`the cat is meowing`".
```
${info:autosort_order,value,option0,option1,option2,...}
```
Generate a zero-padded number that corresponds to the index of `value` in the list of options.
If one of the options is the special value `*`, then any value not explicitly mentioned will be sorted at that position.
Otherwise, any value that does not match an option is assigned the highest number available.
Can be used to easily sort buffers based on a manual sequence.For example: `${info:autosort_order,${server},freenode,oftc,efnet}` will sort freenode before oftc, followed by efnet and then any remaining servers.
Alternatively, `${info:autosort_order,${server},freenode,oftc,*,efnet}` will sort any unlisted servers after freenode and oftc, but before efnet.```
${info:autosort_escape,text}
```
Escape commas and backslashes in `text` by prepending them with a backslash.
This is mainly useful to pass arbitrary eval strings as arguments to other autosort info hooks.
Otherwise, an eval string that expands to something with a comma would be interpreted as multiple arguments.For example, it can be used to safely pass buffer names to `${info:autosort_replace}` like so:
`${info:autosort_replace,##,#,${info:autosort_escape,${buffer.name}}}`.