libt3highlight
General information

Location of Highlighting Description Files

The highlighting description files that come with libt3highlight are stored in libt3highlight data directory. This is usually /usr/share/libt3highlight-VERSION or /usr/local/share/libt3highlight-VERSION (where VERSION should be replaced by the version number of the installed version of libt3highlight).

Furthermore, libt3highlight also searches the libt3highlight directory in the XDG DATA HOME directory (if the XDG_DATA_HOME environment variable is not set, this defaults to ~/.local/share/libt3highlight). This allows users to easily develop their own highlighting description files.

The Map File

To associate the correct syntax highlighting description file with a source file, libt3highlight uses a special map file named lang.map. This file must be located in the libt3highlight data directory. A per-user map file may also be stored in the libt3highlight directory of the XDG DATA HOME directory (which defaults to ~/.local/share/libt3highlight if the XDG_DATA_HOME environment variable is not set). This per-user map is read before the system-wide map, allowing a user to override the system-wide definitions.

The map file must include the format number (format = 1) and a list of %lang sections. Each %lang section must include a name and a lang-file. Optionally it may include a name-regex, that will be used to look up a language by name, and a file-regex, that will be used to look up a language for a given file name.

Below is an extract of the system-wide lang.map file distributed with libt3highlight:

format = 1

%lang {
	name = "C++"
	name-regex = "^(?i)(?:c\+\+|cpp)$"
	# We treat .h files as if they are C++ files, because many C++ header files
	# use the .h suffix. There is little harm in treating a C file as a C++ file.
	file-regex = "\.(?:cpp|C|cxx|cc|hpp|hxx|H|h)$"
	lang-file = "cpp.lang"
}
%lang {
	name = "C"
	name-regex = "^(?i)c$"
	file-regex = '\.[ch]$'
	lang-file = "c.lang"
}
%lang {
	name = "Shell"
	name-regex = "^(?i)(?:ba)?sh$"
	file-regex = "(?i)\.sh$"
	lang-file = "sh.lang"
}
%lang {
	name = "T3 Highlight Language Definition"
	name-regex = "^(?i)lang$"
	file-regex = "\.lang$"
	lang-file = "lang.lang"
}
 All Data Structures Variables