When you open a document, CotEditor detects the document type and automatically applies the appropriate syntax.
CotEditor determines which syntax to apply based on the File Mapping rules defined in each syntax definition.
CotEditor detects the appropriate syntax in the following order:
Filename:
CotEditor first tries to determine the syntax from the entire filename. Case is generally ignored; however, case-matching filenames are prioritized when multiple syntaxes are found.
.htaccess → Apache
Makefile → Makefile
File extension:
If no syntax is found from the filename, CotEditor then tries to determine the syntax from the file extension. Case is generally ignored; however, case-matching extensions are prioritized when multiple syntaxes are found.
For example:
.html → HTML
.hTmL → HTML
.py → Python
The #! header of the document:
If no syntax is found based on the file extension or filename, and the first line of the document starts with a #! (shebang) header, CotEditor tries to determine the syntax from the interpreter specified in the header. The interpreter can be either the last path component following #! or the argument that follows the path when env is used.
For example:
#!/usr/bin/perl → Perl (interpreter: perl)
#!/usr/bin/env python3 → Python (interpreter: python3)
XML declaration:
If no corresponding syntax is found up to this point but the file content starts with an XML declaration, CotEditor automatically applies the XML syntax.
For example:
<?xml version="1.0" encoding="utf-8"?> → XML
None:
If no appropriate syntax can be found, the “None” syntax is applied.
If multiple syntaxes match at the same level, custom syntaxes take precedence over built-in syntaxes. If multiple matches still remain, CotEditor uses the syntax that appears first at that priority.
To define rules for mapping files to a syntax, select File Mapping from the list on the left side of the syntax editor, then add file extensions, filenames, or interpreters to the lists on the right. See Define a syntax to learn how to open the syntax editor.
There are no conflicts among the built-in syntaxes. However, if you add custom syntaxes or modify built-in syntaxes, file mappings can conflict. You can check for mapping conflicts by choosing Show File Mapping Conflicts from the Action pop-up menu in the available syntaxes list in Format settings. If the menu item is dimmed, there are no conflicts.
You can leave file mapping conflicts unresolved as long as documents open with the expected syntax. This doesn’t cause any issues.