Harmonia Settings

Harmonia-Mode uses the standard XEmacs "Customize" interface for user-level configuration. To get started, select either "Customize Harmonia-language" or "Customize Harmonia" from the Harmonia-Mode menu:

For example, selecting "Customize Harmonia" will bring you to a screen like this:

The XEmacs customization system is not described in detail here. To learn more about how to use it, see the XEmacs User's Manual.


Customization Groups

Harmonia-Mode's settings are divided into the following groups:

Group Name Description
harmonia General options
harmonia-faces Fonts, sizes, colors, etc. used in Harmonia-Mode
harmonia-java-mode-faces A collection of faces for Harmonia Java mode (Only appears after a Java file has been loaded)
harmonia-titanium-mode-faces A collection of faces for Harmonia Titanium mode (Only appears after a Titanium file has been loaded)
harmonia-c-mode-faces A collection of faces for Harmonia C mode (Only appears after a C file has been loaded)
harmonia-cool-mode-faces A collection of faces for Harmonia Cool mode (Only appears after a Cool file has been loaded)
harmonia-scheme-mode-faces A collection of faces for Harmonia Scheme mode (Only appears after a Scheme file has been loaded)
harmonia-languages Contains links to the groups for each language.
harmonia-java Options specific to the Java language
harmonia-titanium Options specific to the Titanium language
harmonia-c Options specific to the C language
harmonia-cool Options specific to the Cool language
harmonia-scheme Options specific to the Scheme language

The rest of this section describes each group's settings.

Group: Harmonia

The Harmonia group contains general options, as well as hyperlinks to the other, more specific, customization groups.

Option Default Summary
Lexer Delay Time 0.001 The length of idle time that Harmonia-Mode waits before running the Lexer after a text edit
Parser Delay Time 0.5 The length of idle time that Harmonia-Mode waits between running the Lexer and the Parser
Sematics Delay Time 0.4 The length of idle time that Harmonia-Mode waits between running the Parser and Semantics
Line Move Ignore Invisible Off (XEmacs Option) Non-nil means down and up arrow ignore invisible lines
Clean Up On Exit On Whether or not to erase all formatting when switching out of harmonia-mode to a different major mode
Auto-Recenter Buffer During Structural Movement Off Whether or not the screen should be forced to recenter after structural movement commands
Persistent I-Search Structural Filters Off Whether or not structural filters should be reset between I-search sessions
Margin Width 1 The width of the left margin (for error-triangles) in Harmonia-Mode buffers.
Warning Messages Enabled On Display warnings about source code detected by semantic analysis

Group: Harmonia Faces

A collection of faces used to highlight various sections of `harmonia-mode' buffers. Many of these are prefixed with `font-lock', for consistent access in the "edit faces" screen.

Option Summary
Harmonia Nav Structure Face Harmonia-Mode face used to highlight the currently navigated structure.
Harmonia Error Face Harmonia-Mode face used to highlight errors.
Harmonia Error Icon Face Harmonia-Mode face used to color the triangle in the margin that indicates program errors.
Harmonia Warning Face Harmonia-Mode face used to highlight warnings.
Harmonia Warning Icon Face Harmonia-Mode face used to color the exclamation point in the margin that indicates program warnings.
Harmonia Preprocessor Face Harmonia-Mode face used to highlight preprocessed includes in the buffer (only for C mode).
Harmonia Java Mode Faces (Sub-Group) A collection of faces for Harmonia Java mode
Harmonia Titanium Mode Faces (Sub-Group) A collection of faces for Harmonia Titanium mode
Harmonia C Mode Faces (Sub-Group) A collection of faces for Harmonia C mode
Harmonia Cool Mode Faces (Sub-Group) A collection of faces for Harmonia Cool mode
Harmonia Scheme Mode Faces (Sub-Group) A collection of faces for Harmonia Scheme mode

Group: Harmonia Java Faces

A collection of faces used to highlight various sections of `harmonia-java-mode' buffers. Many of these are prefixed with `font-lock', for consistent access in the "edit faces" screen.

Option Summary
Harmonia Java Method Name Face Harmonia-Java-Mode face for method names.
Defaults to 'font-lock-function-name-face
Harmonia Java Variable Name Face Harmonia-Java-Mode face for variable names.
Defaults to 'font-lock-variable-name-face
Harmonia Java Type Face Harmonia-Java-Mode face for type names.
Defaults to 'font-lock-type-face
Harmonia Java Comment Face Harmonia-Java-Mode face for comments.
Defaults to 'font-lock-comment-face
Harmonia Java String Face Harmonia-Java-Mode face for strings.
Defaults to 'font-lock-string-face
Harmonia Java Special Literal Face Harmonia-Java-Mode face for special literals (null, true, false).
Defaults to 'font-lock-keyword-face
Harmonia Java Special Var Face Harmonia-Java-Mode face for special variables (this, super).
Defaults to 'font-lock-reference-face
Harmonia Java Control Face Harmonia-Java-Mode face for control constructs (for, while, etc.).
Defaults to 'font-lock-keyword-face
Harmonia Java Declarator Face Harmonia-Java-Mode face for declarators (class, interface, etc.).
Defaults to 'font-lock-keyword-face
Harmonia Java Modifier Face Harmonia-Java-Mode face for type modifiers (abstract, final, etc.).
Defaults to 'font-lock-type-face
Harmonia Java Pragma Face Harmonia-Java-Mode face for compilation pragmas (import, package).
Defaults to 'font-lock-preprocessor-face
Harmonia Java Public Access Face Harmonia-Java-Mode face for 'public' modifier.
Defaults to 'font-lock-reference-face
Harmonia Java Protected Access Face Harmonia-Java-Mode face for 'protected' modifier.
Defaults to 'font-lock-preprocessor-face
Harmonia Java Private Access Face Harmonia-Java-Mode face for 'private' modifier.
Defaults to 'font-lock-string-face

Group: Harmonia Titanium Faces

A collection of faces used to highlight various sections of `harmonia-titanium-mode' buffers. Many of these are prefixed with `font-lock', for consistent access in the "edit faces" screen.

Option Summary
Harmonia Titanium Method Name Face Harmonia-Titanium-Mode face for method names.
Defaults to 'font-lock-function-name-face
Harmonia Titanium Variable Name Face Harmonia-Titanium-Mode face for variable names.
Defaults to 'font-lock-variable-name-face
Harmonia Titanium Type Face Harmonia-Titanium-Mode face for type names.
Defaults to 'font-lock-type-face
Harmonia Titanium Comment Face Harmonia-Titanium-Mode face for comments.
Defaults to 'font-lock-comment-face
Harmonia Titanium String Face Harmonia-Titanium-Mode face for strings.
Defaults to 'font-lock-string-face
Harmonia Titanium Special Literal Face Harmonia-Titanium-Mode face for special literals (null, true, false).
Defaults to 'font-lock-keyword-face
Harmonia Titanium Special Var Face Harmonia-Titanium-Mode face for special variables (this, super).
Defaults to 'font-lock-reference-face
Harmonia Titanium Control Face Harmonia-Titanium-Mode face for control constructs (for, while, etc.).
Defaults to 'font-lock-keyword-face
Harmonia Titanium Declarator Face Harmonia-Titanium-Mode face for declarators (class, interface, etc.).
Defaults to 'font-lock-keyword-face
Harmonia Titanium Modifier Face Harmonia-Titanium-Mode face for type modifiers (abstract, final, etc.).
Defaults to 'font-lock-type-face
Harmonia Titanium Pragma Face Harmonia-Titanium-Mode face for compilation pragmas (import, package).
Defaults to 'font-lock-preprocessor-face
Harmonia Titanium Public Access Face Harmonia-Titanium-Mode face for 'public' modifier.
Defaults to 'font-lock-reference-face
Harmonia Titanium Protected Access Face Harmonia-Titanium-Mode face for 'protected' modifier.
Defaults to 'font-lock-preprocessor-face
Harmonia Titanium Private Access Face Harmonia-Titanium-Mode face for 'private' modifier.
Defaults to 'font-lock-string-face

Group: Harmonia C Faces

A collection of faces used to highlight various sections of `harmonia-c-mode' buffers. Many of these are prefixed with `font-lock', for consistent access in the "edit faces" screen.

Option Summary
Harmonia C Function Name Face Harmonia-C-Mode face for function names.
Defaults to 'font-lock-function-name-face
Harmonia C Function Call Face Harmonia-C-Mode face for function calls.
Defaults to 'font-lock-variable-name-face
Harmonia C Variable Name Face Harmonia-C-Mode face for variable names.
Defaults to 'font-lock-variable-name-face
Harmonia C Type Face Harmonia-C-Mode face for type names.
Defaults to 'font-lock-type-face
Harmonia C Comment Face Harmonia-C-Mode face for comments.
Defaults to 'font-lock-comment-face
Harmonia C String Face Harmonia-C-Mode face for strings.
Defaults to 'font-lock-string-face
Harmonia C Control Face Harmonia-C-Mode face for control constructs (for, while, etc.).
Defaults to 'font-lock-keyword-name-face
Harmonia C Declarator Face Harmonia-C-Mode face for declarators (struct, enum, etc.).
Defaults to 'font-lock-keyword-name-face
Harmonia C Modifier Face Harmonia-C-Mode face for type modifiers (register, static, etc.).
Defaults to 'font-lock-type-face
Harmonia C Preproc Face Harmonia-C-Mode face for preprocessor directives.
Defaults to 'font-lock-preprocessor-name-face

Group: Harmonia Cool Faces

A collection of faces used to highlight various sections of `harmonia-cool-mode' buffers. Many of these are prefixed with `font-lock', for consistent access in the "edit faces" screen.

Option Summary
Harmonia Cool Method Name Face Harmonia-Cool-Mode face for method names.
Defaults to 'font-lock-function-name-face
Harmonia Cool Variable Name Face Harmonia-Cool-Mode face for variable names.
Defaults to 'font-lock-variable-name-face
Harmonia Cool Type Face Harmonia-Cool-Mode face for type names.
Defaults to 'font-lock-type-face
Harmonia Cool Comment Face Harmonia-Cool-Mode face for comments.
Defaults to 'font-lock-comment-face
Harmonia Cool String Face Harmonia-Cool-Mode face for strings.
Defaults to 'font-lock-string-face
Harmonia Cool Special Literal Face Harmonia-C-Mode face for special literals (null, true, false).
Defaults to 'font-lock-keyword-face
Harmonia Cool Control Face Harmonia-Cool-Mode face for control constructs (if, while, loop, etc.).
Defaults to 'font-lock-keyword-face
Harmonia Cool Declarator Face Harmonia-Cool-Mode face for declarators (class, inherits).
Defaults to 'font-lock-keyword-face

Group: Harmonia Scheme Faces

A collection of faces used to highlight various sections of `harmonia-scheme-mode' buffers. Many of these are prefixed with `font-lock', for consistent access in the "edit faces" screen.

Option Summary
Harmonia Scheme Function Def Name Face Harmonia-Scheme-Mode face for function names in definitions.
Defaults to 'font-lock-function-name-face
Harmonia Scheme Variable Def Name Call Face Harmonia-Scheme-Mode face for variable names in definitions.
Defaults to 'font-lock-variable-name-face
Harmonia Scheme Special Forms Face Harmonia-Scheme-Mode face for special form keywords.
Defaults to 'font-lock-keyword-name-face
Harmonia Scheme Comment Face Harmonia-Scheme-Mode face for comments.
Defaults to 'font-lock-comment-face
Harmonia Scheme String Face Harmonia-Scheme-Mode face for characters and strings.
Defaults to 'font-lock-string-face
Harmonia Scheme Id Face Harmonia-Scheme-Mode face for identifiers.
Defaults to 'font-lock-keyword-name-face
Harmonia Scheme Literal Face Harmonia-Scheme-Mode face for number and boolean literals.
Defaults to 'font-lock-reference-name-face

Group: Harmonia Languages

All Harmonia languages

Group Description
harmonia-cool Options specific to the Cool language
harmonia-java Options specific to the Java language
harmonia-titanium Options specific to the Titanium language
harmonia-c Options specific to the C language
harmonia-scheme Options specific to the Scheme language

Group: Harmonia Cool Mode

Options for Harmonia Cool Mode

Setting Description
Harmonia-Cool-Mode Enabled Automatically starts harmonia-cool-mode when opening a file with a matching filename. This adds the Cool language to `auto-mode-alist'. Note that this can usually be overridden with a "-*- mode: some mode -*-" line at the beginning of a file.
Harmonia-Cool-Mode File Extensions A list of Cool file extensions that trigger XEmacs to invoke Harmonia-Cool-Mode.
Defaults to *.cl
Harmonia-Cool-Mode Max File-Size If a Cool file is smaller than this limit (in bytes), Harmonia-Cool-Mode will automatically be invoked. If the file is bigger, Harmonia-Cool-Mode will not be started.
Defaults to 200,000 bytes.

Group: Harmonia Java Mode

Options for Harmonia Java Mode

Setting Description
Harmonia-Java-Mode Enabled Automatically starts harmonia-java-mode when opening a file with a matching filename. This adds the Java language to `auto-mode-alist'. Note that this can usually be overridden with a "-*- mode: some mode -*-" line at the beginning of a file.
Harmonia-Java-Mode File Extensions A list of java file extensions that trigger XEmacs to invoke Harmonia-Java-Mode.
Defaults to *.java
Harmonia-Java-Mode Max File-Size If a Java file is smaller than this limit (in bytes), Harmonia-Java-Mode will automatically be invoked. If the file is bigger, Harmonia-Java-Mode will not be started.
Defaults to 200,000 bytes.
JDK Path Path to the JDK source code.
Harmonia-Java's semantic analyses need the source code for a JDK to work properly. Install the source code for a JDK (any version) and set this to the path of the src/ directory in that installation. In a typical installation, you would unpack the src.jar file included with Sun's JDK and point JDK Path at that directory.
Project Path Path to current project's source code.
Harmonia-Java's semantic analyses need to know where project code is located. If your Java files import other Java files, add the paths to the imported file's directories here.
Defaults to the current directory '.'
Cache Directory Path to semantic cache directory.
Harmonia-mode for Java caches its semantic analysis results (name resolution and type checking) in your home directory, in a new subdirectory identified by this customization variable. This cache speeds analysis immensely, and only requires around 1-2 KB of data per analyzed Java class.
Defaults to ~/.harmonia_java_cache.
Read-Only Cache Directories Path to read-only semantic cache directories.
Harmonia-Java's semantic analyses can search for pre-cached data in additional directories before searching in the cache directory.
Project Files Files to always load.
In some cases, files are not always loaded when they are needed. This can occur when the filenames and the classes in them do not match up properly. These files will always be loaded for semantic analysis, but only upon creation of the symbol table. In particular, changing this variable will not load files until you restart XEmacs. These files are not cached. (This variable is temporary, and will be removed in a future release.)
Always Run Semantics Force semantics to continue even if the JDK is not correct or present. If you do not have a JDK source distribution installed, or your JDK distribution is broken in some way, but you still want semantics to run, set this to true.
Java Mode Faces A collection of face for Harmonia Java Mode

Group: Harmonia Titanium Mode

Options for Harmonia Titanium Mode

Setting Description
Harmonia-Titanium-Mode Enabled Automatically starts harmonia-titanium-mode when opening a file with a matching filename. This adds the Titanium language to `auto-mode-alist'. Note that this can usually be overridden with a "-*- mode: some mode -*-" line at the beginning of a file.
Harmonia-Titanium-Mode File Extensions A list of java file extensions that trigger XEmacs to invoke Harmonia-Titanium-Mode.
Defaults to *.ti
Harmonia-Titanium-Mode Max File-Size If a Titanium file is smaller than this limit (in bytes), Harmonia-Titanium-Mode will automatically be invoked. If the file is bigger, Harmonia-Titanium-Mode will not be started.
Defaults to 200,000 bytes.
TDK Path Path to the TDK source code.
Harmonia-Titanium's semantic analyses need the source code for a TDK to work properly. Install the source code for a TDK (any version) and set this to the path of the src/ directory in that installation. In a typical installation, you copy the tlib directory from the Titanium compiler distribution and point JDK Path at that directory. The default Harmonia installation provides this for you.
Defaults to the default install location for the TDK
Project Path Path to current project's source code.
Harmonia-Titanium's semantic analyses need to know where project code is located. If your Titanium files import other Titanium or Java files, add the paths to the imported file's directories here.
Defaults to the current directory '.'
Cache Directory Path to semantic cache directory.
Harmonia-mode for Titanium caches its semantic analysis results (name resolution and type checking) in your home directory, in a new subdirectory identified by this customization variable. This cache speeds analysis immensely, and only requires around 1-2 KB of data per analyzed Titanium class.
Defaults to ~/.harmonia_titanium_cache.
Read-Only Cache Directories Path to read-only semantic cache directories.
Harmonia-Titanium's semantic analyses can search for pre-cached data in additional directories before searching in the cache directory.
Project Files Files to always load.
In some cases, files are not always loaded when they are needed. This can occur when the filenames and the classes in them do not match up properly. These files will always be loaded for semantic analysis, but only upon creation of the symbol table. In particular, changing this variable will not load files until you restart XEmacs. These files are not cached. (This variable is temporary, and will be removed in a future release.)
Always Run Semantics Force semantics to continue even if the TDK is not correct or present. If you do not have a TDK source distribution installed, or your TDK distribution is broken in some way, but you still want semantics to run, set this to true.
Titanium Mode Faces A collection of face for Harmonia Titanium Mode

Group: Harmonia C Mode

Options for Harmonia C Mode

Setting Description
Harmonia-C-Mode Enabled Automatically starts harmonia-c-mode when opening a file with a matching filename. This adds the C language to `auto-mode-alist'. Note that this can usually be overridden with a "-*- mode: some mode -*-" line at the beginning of a file.
Harmonia-C-Mode File Extensions A list of C file extensions that trigger XEmacs to invoke Harmonia-C-Mode.
Defaults to *.c and *.h
Harmonia-C-Mode Max File-Size If a C file is smaller than this limit (in bytes), Harmonia-C-Mode will automatically be invoked. If the file is bigger, Harmonia-C-Mode will not be started.
Defaults to 200,000 bytes.
GCC CPP Pathname to the C preprocessor binary.
Defaults to /usr/bin/gcc.
GCC CPP Flags Options for the C preprocessor.
Defaults to -E -C -dD -dI
These flags are required to make the C preprocessor work with gcc - do not change them unless you are using a different compiler.
GCC version 3.0+ users can add -P to get rid of the #line directives.
GCC CPP Include Path Include path for the C preprocessor (e.g. -I/my/project/dir -I/her/project/dir)
Harmonia Preprocessor Shell Path to shell used by the Harmonia preprocessor facility (must include option to run shell with commands given on the the rest of the command line).
Defaults to /bin/bash -c
Harmonia Preprocessor Temporary Directory Path to temporary directory where the preprocessor can create, read, write and delete files.
Defaults to /tmp.

Group: Harmonia Scheme Mode

Options for Harmonia Scheme Mode

Setting Description
Harmonia-Scheme-Mode Enabled Automatically starts harmonia-scheme-mode when opening a file with a matching filename. This adds the Scheme language to `auto-mode-alist'. Note that this can usually be overridden with a "-*- mode: some mode -*-" line at the beginning of a file.
Harmonia-Scheme-Mode File Extensions A list of Scheme file extensions that trigger XEmacs to invoke Harmonia-Scheme-Mode.
Defaults to *.scm
Harmonia-Scheme-Mode Max File-Size If a Scheme file is smaller than this limit (in bytes), Harmonia-Scheme-Mode will automatically be invoked. If the file is bigger, Harmonia-Scheme-Mode will not be started.
Defaults to 200,000 bytes.