General editing

Editing a cell

Cells can be edited by simply clicking on them. The usually keys are available to alter content and move around. Some special features are available:


Switch to the previous autocompletion item


Switch to the next autocompletion item


Alter all adjacent cells of the same column to the new value when the current value is the same as from this cell.

Cell editing offers colun based autocompletion. The autocompletion facility suggests a completion by providing it selected directly in the cell. To accept it you must simply press return. Autocompletion contains formulars, specific for the current column and general content for the current column. This autocompletion is taken from previously entered content in the same session. The autocompletion suggestion is not stored on disc for the next session. Additionally column specific completion is provided. This contains ID3V1 Tag genres and artist information queried from Musicbrainz.

Content feedback

The content of a cell may have four different correctness states. The default state is “no evidence”: Texel has no idea about correctness of the content. At least no error could be detected. The default state is not indicated with any visual feedback. The second state is the “correct state”. A cell which is considered as correct was checked against a reliable source. Currently this state is only used for artists for are found in Musicbrainz. The correctness is indicated with a small green check in the right bottom corner. The “warning state” indicates that something may be wrong with the cell content. The user should check. It is indicated with an amber wavy underline. The last state is the “error state” which indicates that the content of the cell is considered as errounous. It will lead to further failures in the processing. Errors are described better in the tooltip of the cell when you hover with the mouse over the cell. Errors are indicated with a red wavy underline.

Undo / Redo facilities

Altered cells are stored in a undo list. This does also include deletion of rows. Undone changes can be redone using the button in the toolbar. When longer pressing the undo button a menu appears which shows the undoable commands in the software. Selecting an item here will undo this change as well as all previously done changes.


Texel provides a powerful mechanism to refer other cells and to break up the filename into its naming parts. The following sections describe these mechanisms in depth. As the column "searchpattern" has a slightly different understanding of variables these is an extra section just for this column. The difference comes from the idea of the searchpattern column. Its used to parse fragments of the filename into variables which can then in turn accessed by the other columns. Other columns cannot define variables, but just use them!

Column "searchpatterns"


A cell may contain a formular instead of text. A formular does start (as in a typical spreadsheet) with a equal sign (=). If you want to have a text starting with a '=' in a cell you may write ="=text".

the formular is evaluated and the cell content replaced with the result of the formular.


Variables start either with a dollar sign ($) or a percent sign (%). It follows the name of the variable. The name consist out of unicode letters and numbers and starts with a letter. However, when the name is enclosed in curly braces it may also contain spaces.

Texel offers predefined variables which are called like the column names. If you are using a localized (non English) version the column names may be English or the names of the localized version. Variable names may contain all unicode letters and are not only limited to ASCII characters. In case the name contains a space you may wrap the variable with braces:

=${CD Nr}


When a variable refers to a column name the first character ($ or %) defines the content of it. A dollar sign referes to the current content of the cell, a percent sign to the original (disk persistent) content of the tag the cell belongs to.

If a variable is not found in the current context the global context is looked up. This is either a predefined global variable or as a last resort environment variables from the operating system. A local defined variable does never overwrite global variables, these are rather hidden. The might be visible again in the next row.

Please note that environment variables do not show up in the suggestions for a misspelled name. This would only pollute the suggestions and would offer little benefit - environment variables are typically rarely used.


Functions to always start with an Ampersand (&). Then the function name follows and in brackets the arguments. A function is executed after reaching the closing bracket. Optionally one may add a rangeset which limits the output just to the selected characters by the rangeset.

The most simple function is the empty function where you skip the function name (and the leading ampersand) and start right with the brackets. Thats an identity function and returns the content of the brackets as is. The result can than be processed by a range.

Example 2.1. Some functions

Some examples how functions look like:


Returns the content of the Artist field with removed leading and tailing spaces.


Returns a path expression with Artists grouped by their first character (converted into an upper character. When the field Artist would contain "The Beatles" the result would be "T/The Beatles".


Removes all leading and tailing whitespaces in the given string. Replaces tabs with spaces and replace repeated whitespace with a single one. A good use for this function would be to simplify a filename after removing unallowed characters for the filesystem.

Additional arguments are considered as an error.


Evaluates the given string as a subexpression. Useful either allow variables containing other variables or defining global variables with reusable expressions (libraries).

Additional arguments are considered as an error.


is equal to


substitute(string, from_char_list, to_char_list )

Substitutes in the given string string each character found in the from_char_list with the corresponding character in the to_char_list.

This function returns an error when the from_char_list and the to_char_list have not equal length.


Returns the string in uppercase.


Returns the string in lowercase.


Returns the string with all first characters of a word capitalized.

filter(string, char_filter_list)

Returns all characters from string when they are included in the char_filter_list.

remove(string, char_filter_list)

Filters out of string all characters which are in char_filter_list. If char_filter_list is omitted the forbidden characters in FAT filenames are used: “/ : ; * ? " < > |

prefix(string, prefix)

When string is not empty the function returns prefixstring, otherwise nothing.

extract(string, regexp, replacement)

Uses regexp to split the input string and do replace with replacement. Within the regexp you may surround parts with escaped brackets “\(” and “\)”. In replacement you can then refer to these parts by numbering them with “\1” until “\n”.

This function uses the powerful regular expressions from Qt. A complete description can be found at the Qt website


The result of a function may be mapped again by usig only subsets of the result. Tis can be done with the range operator. A rangeset is surrounded by square brackets and may contain several ranges separated by commas. A range is either a single character position or a character range n-m where n and m are character positions.

The following rules apply to a range:

  • When n < m the characters n to m are copied to the output.

  • When m < n the characters n to m are copied to the output. The characters are reversed.

  • When a number is negativ its considered as the offset from the end of the string.

  • When m is ommitted the range goes until the end of the string.

  • The first letter of a string is 1.

The range [1] returns the first letter of a string. [-2--1] returns the two last characters of a string. [1,3-] returns the complete string except the second letter.