# Septum 0.2.0 released

**URL:** https://forum.ada-lang.io/t/septum-0-2-0-released/4394
**Category:** Releases
**Tags:** ada
**Created:** [May 6, 2026, 3:09am UTC](https://forum.ada-lang.io/t/septum-0-2-0-released/4394 "2026-05-06T03:09:18Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![pyj](https://forum.ada-lang.io/user_avatar/forum.ada-lang.io/pyj/32/5_2.png) [@pyj](https://forum.ada-lang.io/u/pyj)
#### Post date: [May 6, 2026, 3:09am UTC](https://forum.ada-lang.io/t/septum-0-2-0-released/4394/1 "2026-05-06T03:09:18Z")

</div>

[Septum](https://github.com/pyjarrett/septum) provides local, command line interactive text search.

[Septum 0.2.0 is released](https://github.com/pyjarrett/septum/releases/tag/0.2.0). Alire release is pending, you can get a Windows prebuilt exe or [build from GitHub](https://github.com/pyjarrett/septum).

[ripgrep](https://github.com/burntsushi/ripgrep) and similar tools are great for finding matching lines in projects. Sometimes I don’t know _entirely_ exactly for what I’m searching, or the order of terms, or the term is used in a variety of contexts I need to sift through, which is what Septum does. In the 4+ years since I wrote this, I haven’t found another good tool for this.

Septum searches for groups of lines up a specific width with all the terms you want, and none that you don’t want.

The idea is simple:

1. Load all the files into memory.
2. Look for groups of consecutive lines which match the “find-\*” filters, and don’t have anything in a “exclude-\*” filter.

The search tool stays active as you `find-text`, `exclude-text`, `drop`, `reorder` filters and such. This makes it easier to find examples where there are multiple terms for which I’m looking, and I can whittle down the search space with `exclude-*` filters. Normally `match-contexts` or `enable-auto-search` are used to display results, but with the new path filters, `match-files` can be used with `find-path` and `exclude-path` to find and cut out parts of the search tree interfering with your search.

This all runs locally, with minimum dependencies and no built search indices. It sounds too simple, but in practice works really well. I can load my entire personal project directory of ~29 million lines of code (my own, dependencies, and various open source projects) and text (like the AARM) on my Linux box and iteratively search in ~2 seconds (i5-10400 CPU, 12 cores). Sure, it uses 3.8 GB, but you can dump the cache with `unload` if needed temporarily and use the usual `reload` to bring it back. Not elegant, but sometimes you need to chisel searches out a bit at a time.

To get started, set up a directory for search. The config this creates simply contains septum commands, like `add-dir .`. If you have global options you want to use, you can use `%LOCALAPPDATA%/septum/config` (Windows), `~/Library/Application Support/septum/config` (Mac) or `$XDG_CONFIG_HOME/septum/config` or `$HOME/.config/septum/config` (Linux).

```ada
septum init

```

Then run it to start searching, if you need help, type “help”:

```ada
septum

```

It’s been a while since I’ve talked about this project, so here’s the changes since 0.0.7 in 2022. There’s still quite a few features I want to add in the future, but maybe this project will be as useful to others as I have found.

## [0.2.0]

- ✅ Added `run` command to match command line `run`.
- ✅ Added `add-files` command to add specific files to the search.
- ✅ Added `clear-files` command to remove custom added files to search.
- ✅ Added `find-path` command to only search paths with a term.
- ✅ Added `exclude-path` command to exclude files with a term from the search.
- ✅ Added `clear-path-filters` command to clear path filters.
- ⚠ Deprecated the `source` commmand. Use `run` instead.
- 🚀 Optimized search by fixing a bug which pinned all but one search task.
- 🚀 Optimized search by eliminating some data copies.
- 🛠 Fixed list-file edge case not causing the command to fail.
- 🔄 **BREAKING CHANGE!** Linux top-level configs checked using XDG conventions (default: `~/.config/septum/config`)
- 🔄 **BREAKING CHANGE!** Windows top-level configs now in `%LOCALAPPDATA%/septum/config`
- 🔄 **BREAKING CHANGE!** Fixed home config location on Windows to use `USERPROFILE`.
- ✅ Added GNATformat options to build to enforce coding standards.
- ⭐ Upgraded AnsiAda to 0.1.1.
- ⭐ Upgraded progress\_indicators to 0.0.2.
- ⭐ Upgraded trendy\_terminal to 0.0.6.

## [0.1.1]

- ✅ Added support for `unload` command to drop directories.
- ✅ Added `list-files` command to list a number or all files.
- ✅ Added loading of all “text-like” files, not just known extensions.
- 🛠 `Fixed` slow printing on large files.

## [0.1.0]

- 🔄 Set `enable-auto-search` by default in `septum init`.
- 🛠 `drop` with filter numbers now runs auto-search when enabled.
- 🛠 Fixed problem where `run` command doesn’t verify the terminal environment is set up properly.
- ✅ Added support for ‘#’ comments and empty lines in scripts.
- 🚀 Optimized small loads by using a stop token instead of a wait.
