* Add Nim filetype
Add support for the Nim programming language using the Python lexer.
Nim website: https://nim-lang.org/
* Correct file name
* Add filetypes.Nim.conf to Makefile.am
As requested by b4n
* Remove unneeded lexer_properties and indentation width
As requested by b4n
* Fix run_cmd
* Improved keywords
The new styles are for "diff of a diff", e.g. lines starting with `++`,
`+-`, `-+` and `--`. Those are currently mapped conservatively keeping
the previous display behavior, until we have good style matches for
them.
Before, **boldface** or *italics* (also _italics_) would not generally show as that, definitely not with the default color scheme. After this change, they appear with the same color as normal text but with that typography, in all color schemes.
* Improve GTK+3 theme loading
- Merge geany-3.0.css into geany.css
- Load geany-3.20.css to override if runtime version dictates
- Load geany.css from app->configdir if it exists.
* Add initial documentation for GTK+ CSS theming
* Add geany.css file to the `Tools->Configuration Files` menu
Also mark such config files as changed if they don't already exist to
force the user to save or discard any newly created config files.
* Allow customizing message window using GTK+ themes
* Improve GTK+3 CSS docs a bit
State which classes are meant to be overridden by themes.
* Go back to conditionally loading geany-3.0.css
It can't be merged into geany.css since GTK+ CSS parser doesn't ignore
invalid properties when prefixed with vendor extension (ie. -Gtk).
* Don't mark unedited config files as changed
They probably should be marked as changed since they don't exist on
disk yet, but for the time being leave it how it was.
* Fix misuse of CSS ID vs class in manual
* Minor colour value tweaks
Based on feedback from @b4n
Add the same note about applying indentation settings on currently open
documents in the project preferences as there already is in the main
preferences dialog.
* snippets: Allow keybinding overloading of snippet-next-cursor.
This allows to use the same key as for inserting snippets, or plugins to
map something to the same keybinding (e.g. if they implement a similar facility).
* snippets: Remove cursor position at the end of constructs.
This is not consistently done for all languages, and hard to get right
e.g. for python. It's probably not terribly useful either.
* snippets: Use Scintilla indicators for cursor posititons
* api: Increment API version.
* snippets: restore behavior of cursor-less snippets
* snippts: use ascii character for the placeholder.
Do not require documents to be UTF-8 for using snippets.
* snippets: fix start/end detection, when searching for the next cursor
Tested @vfaronov
Add parfor to Matlab keyword list
Add `parfor` to the list of keywords to be highlighted in Matlab script sources. `parfor` is a Matlab keyword that can be used in place of `for` to achieve parallel processing.
Instead of having a handler on 2 separate objects, use :select and
:deselect on the same one. Those signals are appropriate, as the
documentation mentions that submenus are popped up on :select.
Mark the associated menu items sensitive when the menu is hidden, so
that GTK's accelerator handling can trigger them. This works around
incorrect handling in Geany's code of keybindings coming from multiple
layouts for cut/copy/delete actions.
Partial workaround for #998, #1286 and #1368.
Expect [1] scripts filenames generally end in .exp, although the code
itself is actually in Tcl. I find my self manually selecting Tcl quite
often, so I think it would be nice if Geany would recognize it direcly
as Tcl.
[1] http://expect.sourceforge.net/
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
`lexer.cpp.track.preprocessor` lexer properties affects which styles
are used, and we don't set those, so no filetype inheriting C styles
should set it to 1.
Similarly, some properties like `styling.within.preprocessor` are
mostly general settings rather than selecting syntax details, so they
should probably match in all filetypes for consistency.
So, inherit the C lexer_properties everywhere C styles are used, and
only override specific properties in the inheriting filetype.
We don't set the styles for inactive preprocessor sections, so we
should make sure they aren't used. Also, Haxe has different
preprocessor directives than C does, which confuses LexCPP tracking
anyway.
Fixes#936.