INDEXES

Indexes allow you to quickly access files by their name without using a standard open/save dialog, and without having to type the filepath and file extension every time. Every file in an index must have a unique name, even if they are in different directories within a directory structure.

There are three types of indexes in Shule (with more planned):
• Custom indexes
• File indexes
• Directory indexes

Indexes can be compared to dictionaries. A word in a diction has a definition. Similarly, a key in an index has an associated file. You access the file with the key. The key is actually just the filename, but conveniently, you optionally don't need to enter the file extension every single time (unless you want to).

Each index (no matter the kind) has what is known as a base directory. This is the directory that contains the index. Any number of subdirectories may exist within the base directory.
• Custom indexes have a custom base directory that you arbitrarily and manually decide upon. You can access the active custom index all the time, once you've set it up.
• Each file indexes has an automated base directory. It is a folder created in the same directory as the file that it corresponds to: This base directory should look something like `myFilename.myExt.file_index`.
• Each directory index has an automated base directory, which is a folder inside the directory that it corresponds to. This base directory is called `directory_index`.

You can quickly access and create files within the entire base directory structure (it searches the directory recursively), thus allowing you to be highly productive quickly without using a file manager, and without using an open/save file dialog.

When you attempt to open or create an index key, then if the key doesn't exist, you will be prompted to specify/accept a directory path within the base directory structure wherein it will be created. The directory of the last key to be opened (or the base directory if none has been opened) will be filled in by default.

The indexes are designed to be portable. They are also designed for longevity.

The keys are just regular plaintext files. There's nothing particularly special about them that means you shouldn't touch them. You do not need Shule to browse and modify them, but Shule is designed to make this task convenient. The three types of indexes are the same in structure and contents. You could even use a file/directory index's base directory as a custom index base directory (if you really wanted to, but you would have to rename the directory so Shule wouldn't think it was a file/directory index). You don't need to worry about the index getting corrupted just because you renamed a file, deleted a file, edited a file or something. The indexes aren't dependent on Shule. Shule is rather a tool to edit them. You could create the same indexes without Shule and then continue using them in Shule.

Even though Shule is just for Linux, these indexes are cross-platform (they are just plaintext files in directories).

The indexes do not allow you to make programmatic aliases like they used to. Just be organized and reference things. It's not the end of the world. You have a lot of design flexibility.

Not all features of indexes are currently documented. More features may be added in time.

KEYBOARD/MOUSE SHORTCUTS:
• Ctrl+k: open/create custom index key
• Ctrl+y: open/create file index key
• Ctrl+Shift+y: open/create directory index key
• Right-click word or selection: same as Ctrl+k: open/create custom index key (yes, clicking on a filename with its extension catches the extension, too)

When creating new keys, you need to realize that it will ask you to input a directory to put it in. This directory must be somewhere within your base directory structure. It will not ask for this directory when accessing files that already exist. It will not allow you to choose a directory path outside of the base directory.

Shule keeps track of the last directory of the last key you accessed, as well as the last key entered.

Each index (not merely each type of index) has unique persistent data. This allows you to have a different default file extension for each of many different indexes, for instance (as well as a different last key, and a different last key directory).

Every custom index must be named.

The file names of index base directories are actually important. So, don't rename those if you want Shule to recognize them.


THE FOLLOWING FEATURES MAY BE OF INTEREST TO YOU IF YOU LIKE INDEXES:

OPEN/CREATE DIRECTORY FILE (Ctrl+m; Alt+left-click; Menu+dfe)

This allows you to very easily create and open files in the same directory as the filepath pertaining to the current tab (if it is a saved file). Menu+dfe let's you choose a default file extension. Ctrl+m is for both accessing and opening files. It doesn't overwrite files that already exist (it opens them instead; if they're already open, ideally, it would take you to them).

Note that Alt+left-click on a word is the same as having the word highlighted and pressing control+m (which is the same as pressing control+m and typing the word in). You can do very convenient links in plaintext this way! You do not have to highlight a word to click it (but you can do that, too).

PLAINTEXT WEB BROWSING

This is essentially like open/create directory, without the create part, except that it is online. Control+left-click on a word or selection to use this feature. This feature is not finished (nor is it polished), yet, but it technically works if you know how to use it. You need to remember that if you want it to switch to a new website, you actually have to type the full URL of it the first time you use the new website (I mean, select it and ctrl+left-click on it).

WIKIWEB

Wikiweb isn't an index system per se, but it has a lot in common with them in that it is a system used to store, retrieve, and add data, but unlike the indexes, it is interconnected via flexible data structures. The indexes don't have nodes (unless you count the plaintext files as nodes) and they arent interconnected, per se, but Wikiweb nodes are very interconnected.

For the documentation see <shule/wikiweb/documentation.txt>, which explains how to format the text-only data entry. Here's one example it gives, and what it actually means (in brackets):


*tomato||includes|is a [This is a command that lets you relate the tomato node to other nodes (and create them if they don't exist) via the `include`/`is a` context pair. Additionally, the asterisk places the word `tomato` into the actual name, so you don't have to type it every time. There are lots of commands that do lots of different things. Turn word wrap off to make it easier to visually filter out my comments in brackets. This command also creates the context pair. Only the appropriate side of the context pair is needed in this command if the context pair already exists.]

Camp Joy|Chadwick's Cherry [Using the command above, this creates a node called `Camp Joy tomato` and an alias for it called `Chadwick's Cherry tomato`]
Early Girl F1 [This creates a node called `Early Girl F1 tomato`]
Roma [And so on. You can type lots of them really fast because there are no prompts between them and no need to click on anything. You submit it all at once.]
Husky Cherry Red F1
North Dakota Earliana


OPEN/CREATE PATH (Ctrl+Shift+i)

(Ctrl+shift+i lets you open or create a specified file or directory by its path. Add a slash to the end to show that it is a directory rather than a file, if you want to create a new one.) This is also a useful feature to help you copy the filepath of the current tab (if a tab is an open file and you use this, it will autofill with the current tab's filepath). It remembers the last thing you entered in even if you open other files in the meantime other ways. 

THE `FAVORITES` FEATURE (Ctrl+d; Ctrl+Shift+d; …)


SEE ALSO

You may also be interested in the command-line app known as Ki, which I also programmed. It essentially lets you use something like Shule's custom indexes on the command-line. Ki is not under active development anymore (at least not the current instantiation of it).