Compare commits

..

No commits in common. "e53661861d51f1ab4267180ca2dca53a96949747" and "6e2450847cae3a57794d95e6a3f9bd3df5c9b114" have entirely different histories.

390 changed files with 50686 additions and 13144 deletions

15
.editorconfig Normal file
View File

@ -0,0 +1,15 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.{yml,yaml,xml,xml.in}]
indent_size = 2

4
.flake8 Normal file
View File

@ -0,0 +1,4 @@
[flake8]
builtins = _
max-line-length = 100
show-source = true

2
.gitattributes vendored
View File

@ -1,2 +0,0 @@
# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf

72
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,72 @@
name: CI
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the default branch
push:
branches: [ main ]
pull_request:
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.8'
- name: Install dependencies
run: |
sudo apt-get -y install libgirepository1.0-dev
pip install -r requirements.dev.txt
pip list
- name: Flake8
run: |
flake8 --version
flake8 src/ po/
- name: MyPy
run: |
mypy --version
mypy src/ po/
meson-build-test:
runs-on: ubuntu-latest
container:
# Use Ubuntu 23.04 in order to have appstreamcli v0.16 instead of 0.15.
image: ubuntu:23.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.8'
# Extra installation since we are not using ubuntu-latest
- run: apt-get update && apt-get -y install libglib2.0-dev-bin
- run: apt-get -y install meson appstream desktop-file-utils gettext
- run: meson setup build
- run: meson compile -C build
- run: meson test --print-errorlogs -C build
flatpak-build-test:
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:gnome-45
options: --privileged
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.8'
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: "diffuse.flatpak"
manifest-path: "io.github.mightycreak.Diffuse.yml"
cache-key: flatpak-builder-${{ github.sha }}
run-tests: "true"

153
.gitignore vendored
View File

@ -1,9 +1,148 @@
#
# Source: https://github.com/github/gitignore/blob/main/Python.gitignore
#
# Godot-specific ignores # Byte-compiled / optimized / DLL files
.import/ __pycache__/
godot/.godot/ *.py[cod]
# Mono-specific ignores *$py.class
.mono/
data_*/
godot/.build/ # C extensions
*.so
# Distribution / packaging
.Python
build/
build-flatpak/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
.flatpak-builder/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# static files generated from Django application using `collectstatic`
media
static

6
.markdownlint.json Normal file
View File

@ -0,0 +1,6 @@
{
"default": true,
"no-duplicate-heading": false,
"no-inline-html": false,
"no-emphasis-as-heading": false
}

4
.mypy.ini Normal file
View File

@ -0,0 +1,4 @@
[mypy]
warn_unused_ignores = True
disallow_incomplete_defs = True
disable_error_code = annotation-unchecked

8
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,8 @@
{
"recommendations": [
"davidanson.vscode-markdownlint",
"mesonbuild.mesonbuild",
"ms-python.python",
"redhat.vscode-yaml"
]
}

28
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,28 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Debug",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/main.py",
"console": "integratedTerminal",
// "env": {
// "PYTHONPATH": "."
// }
},
{
"name": "Python: Remote Attach",
"type": "python",
"request": "attach",
"port": 5678,
"host": "localhost",
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "."
}
]
}
]
}

24
AUTHORS Normal file
View File

@ -0,0 +1,24 @@
Programming
-----------
Derrick Moser <derrick_moser@yahoo.com>
Romain Failliot <romain.failliot@foolstep.com>
Translators
-----------
Akom Chotiphantawanon <knight2000@gmail.com> (Thai)
Chi Ming <tw.chi.ming@gmail.com> (Traditional Chinese)
Cristian Marchi <cri.penta@gmail.com> (Italian)
Derrick Moser <derrick_moser@yahoo.com> (Japanese)
David Màrin <davefx@gmail.com> (Spanish)
Henri Menke <henrimenke4@aim.com> (German, Spanish)
Jindřich Šesták <khagaroth@gmail.com> (Czech)
Kang Bundo <kangbundo@gmail.com> (Korean)
Liu Hao <jarryson@gmail.com> (Simplified Chinese)
Miś Uszatek <adres.email@ymail.com> (Polish)
Oleg Pakhtusov <oupakhtusov@gmail.com> (Russian)
Pedro Albuquerque <pmra@gmx.com> (Portuguese)
Wei-Lun Chao <bluebat@member.fsf.org> (Traditional Chinese)
Contributors
------------
Guillaume Hoffmann <guillaumh@gmail.com>

589
CHANGELOG.md Normal file
View File

@ -0,0 +1,589 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Changed
- Translation: update Italian translation (@albanobattistella)
## 0.9.0 - 2024-01-13
### Changed
- Update from GNOME 44 to 45 (@sabriunal)
- Flatpak manifest now runs the tests (@sabriunal)
- Use `appstreamcli` instead of the deprecated `appstream-util` to validate
appdata (@sabriunal)
- Update appdata: add translation tag, vcs-browser and translate URLs (@sabriunal)
- Translation: mark the developer name and release descriptions as
untranslatable (@sabriunal)
- Translation: update Turkish translation (@sabriunal)
### Removed
- Remove support for the SVK CVS (@MightyCreak)
### Fixed
- Fix compatibility with Python 3.12: remove use of `distutils` (@MightyCreak)
- Fix new errors raised by Flake8 (@MightyCreak)
- Fix the error with the CICD due to the use of `appstreamcli` (@MightyCreak)
## 0.8.2 - 2023-04-16
### Added
- Add link to the Matrix room in the README (@MightyCreak)
- Dutch translation (@Vistaus)
### Changed
- Replace `_` by `-` in the action names to be compatible with GTK action names (@MightyCreak)
- The About dialog is now transient for the main window (@oscfdezdz)
- Remove deprecated STOCK constants and use more modern, symbolic icons (@oscfdezdz)
### Fixed
- Some signals weren't properly renamed from the previous GTK3 migration (@MightyCreak)
- The syntax menu wasn't working anymore (@MightyCreak)
- Properly handles SIGINT (i.e. Ctrl+C) now (@MightyCreak)
- Add back `save_state()` to remember window's width and height (@MightyCreak)
## 0.8.1 - 2023-04-07
### Changed
- Remove log function calls from the stack trace when calling `logDebug` or
`logError` (@MightyCreak)
- Log functions used to log only on stderr, now `logDebug` logs on stdout and
`logError` logs on stderr (@MightyCreak)
- Change Git default branch from `master` to `main` (@MightyCreak)
### Fixed
- Shortcuts were not working since the move to Gtk.Application
(issue [#188](https://github.com/MightyCreak/diffuse/issues/188)) (@MightyCreak)
## 0.8.0 - 2023-04-03
### Added
- Language: initial support for Rust language (@alopatindev)
- Translation: added Turkish translation (@libreajans)
- Translation: added Georgian translation (@NorwayFun)
### Changed
- Translation: updated Swedish translation (@eson57)
- Dialog: prompt only once if several files needs to be reloaded (@yuriiz)
- Use GTK3's Gtk.Application/Gtk.ApplicationWindow (@yuriiz)
- Split `DiffuseApplication` and `DiffuseWindow` classes in their own files (@MightyCreak)
- Use new Meson (from 0.50 to 0.55) and fixed deprecation warnings (@MightyCreak)
- Update from GNOME 42 to GNOME 44 (@MightyCreak)
- Use GitHub Pages to generate the new website (@MightyCreak)
- Mac: fix the shortcut for first/previous/next/last differences, now uses ⌘
instead of Ctrl (@krlmlr)
### Fixed
- "Go to line..." dialog didn't show up (@MightyCreak)
- Tech debt: use `transient_for` instead of the deprecated `parent` when creating
a `Gtk.Widget` (@MightyCreak)
- Documentation: prefer `pip3` over `pip` to ensure it works everywhere (@krlmlr)
- Flatpak: add missing `--filesystem=xdg-run/gvfsd` privilege (@MightyCreak)
## 0.7.7 - 2022-10-23
### Changed
- Translation: updated Spanish translation (@oscfdezdz)
- Translation: updated POT file
- Translation: fixed issue with commented string that still needs translation
## 0.7.6 - 2022-10-23
### Added
- Port to Mac OS (@hugoholgersson)
### Changed
- Documentation: added dev setup for MacOS
- Documentation: updated the dependencies
- CI/CD: GitHub actions warnings
### Fixed
- Fixed MyPy errors
## 0.7.5 - 2022-04-15
### Added
- Documentation: added release process instructions
- Translation: added French translation
### Fixed
- Fixed #156: Preferences cannot be saved in latest release
- Cleanups: use constructors instead of `new()` whenever possible in GTK
classes
## 0.7.4 - 2022-04-03
### Added
- Added a `--remove-obsolete` option for the update-translation.py script
- Added links to VCSs in README.md
- New keyword in config file: "option"
- Added instructions to install and run from a custom directory
### Changed
- Updated the translation files
- Renamed POTFILES.in to POTFILES
- Renamed io.github.mightycreak.Diffuse.metadata.xml.in to
io.github.mightycreak.Diffuse.appdata.xml.in
- Leaner README.md
- Moved the documentation to docs/
- Renamed application name from "Diffuse Merge Tool" to "Diffuse"
- Linters can be run sooner (before installation)
- Better messages when an error occurs while parsing the config file
- Start converting the code to static types
- Add more information about the dependencies in the documentation
- Upgrade Flatpak GNOME's runtime to 42
### Fixed
- Removed the lasting lint errors (i.e. in main.py)
- Fix Flatpak runtime version in documentation
## 0.7.3 - 2021-11-22
### Added
- Added linters (flake8 and mypy) and fixed some errors
- Added lint jobs for both in the CI
- Added a flatpak job in the CI
- Created a requirements.dev.txt just for the developers
### Changed
- main.py slimmed down by about 5000 lines
- The new widgets.py is a bit fat though (~4000 lines)
### Fixed
- The intense code cleaning seems to have fixed a bug with the `-c` argument
(#120)
## 0.7.2 - 2021-11-18
### Added
- New options: log_print_output and log_print_stack, to print the log messages
on the output and code stack
- New log function: utils.logErrorAndDialog, to both log and show a dialog
message
### Changed
- Modularized the VCSs (reducing main.py by around 1300 lines)
- Bump GNOME runtime version from 3.38 to 41
### Fixed
- Fixed 'APP_NAME' error when opening non existing file
- Fixed the Portuguese Brazilian (pt_BR) translation
## 0.7.1 - 2021-11-17
### Fixed
- Fixed #103: the flatpak app can now call binaries on the host, such as `git`,
`svn`, etc. (PR #105)
## 0.7.0 - 2021-11-16
### Added
- Added MetaInfo file
- New SVG icon (thanks @creepertron95, @jimmac and @freddii)
- Started modularizing the code
### Changed
- Changed AppID to io.github.mightycreak.Diffuse (as explained in
[Flatpak documentation](https://docs.flatpak.org/en/latest/conventions.html#application-ids))
- Renamed `translations/` to `po/`
- Now uses POTFILES.in to list the files to translate
- Translation strings are no longer sorted alphabetically, this will help when
there will be several files in POTFILES.in
- Updated the documentation and script in the `po/` directory
- Add .desktop translations in .po files
### Fixed
- Fixed some GTK deprecation warnings
## 0.6.0 - 2020-11-29
### Added
- New Flatpak package, published on Flathub: com.github.mightycreak.Diffuse
### Changed
- Replace old install.py with the more standard Meson
- Remove `u` string prefixes since Python 3 is in UTF-8 by default
- Replaced some interpolation operators (`%`) for the `f` string prefix
- Use the window scale factor for the icons generation
## 0.5.0 - 2020-07-18
### Added
- added Pedro Albuquerque's Portuguese translation
- added Åke Engelbrektson's Swedish translation
- added Guillaume Hoffmann's Darcs support improvements
- added support for Git submodules
- added Akom Chotiphantawanon's Thai translation
- added a preference and command line option to specify the version control
system search order
- added .editorconfig file
- added .gitignore file
- added message when removing files during uninstallation
- added Python script to update all the translation files at once
### Changed
- convert to Python 3
- convert to GTK 3
- updated Python highlighting for Python 3 grammar
- updated copyrights years and authors
- improve Spanish translation
- convert translation README to MarkDown
- updated all the translation files
### Fixed
- fixed wrong icons directory for gtk-update-icon-cache
- fixed missing directories when uninstalling
- fixed bug introduced by r420 with RCS VCS
- fixed broken drag'n'drop since migration to Python3/GTK3
- fixed error when using '-m' in an SVN repo
## 0.4.8 - 2014-07-18
### Added
- updated use of gtk.SpinButton and gtk.Entry to avoid quirks seen on some platforms
- updated C/C++ syntax highlighting to recognise C11/C++11 keywords
- improved image quality of icons
- added Chi Ming and Wei-Lun Chao's Traditional Chinese translation
### Fixed
- fixed a bug that prevented Diffuse from reviewing large git merge conflicts
- fixed a bug that prevented drag-and-drop of file paths with non-ASCII characters
## 0.4.7 - 2013-05-13
### Added
- added Jindřich Šesták's Czech translation
- improved character editing to allow easy indenting and moving the cursor by
whole words
- added Miś Uszatek's Polish translation
- improved auto-detection of utf_16 and utf_32
- added "New N-Way File Merge..." menu item
- added syntax highlighting for Erlang and OpenCL files
## 0.4.6 - 2011-11-02
### Added
- added support for Subversion 1.7
- added "Open Commit..." menu item
- "-c" option now works for all supported version control systems
- Git support distinguishes between staged and unstaged files
- added syntax highlighting for R files
### Fixed
- fixed a bug that caused the wrong revision to be shown when working on a
branch in Mercurial
## 0.4.5 - 2011-07-13
### Added
- added syntax highlighting for JSON files
- added menu items and keyboard shortcuts for "First Tab" and "Last Tab"
- added "--line" command line option
- Diffuse now uses a patience diff-based algorithm to align lines
- added command line option to specify a label to display instead of the file name
- added preference to display the right margin
- added Cristian Marchi's Italian translation
### Changed
- state information is now stored in ~/.local/share/diffuse
### Fixed
- fixed a bug in CVS and Subversion support that prevented Diffuse from
displaying some removed files
- fixed a bug that caused deleted files to be ignored when using the '-m' option
- fixed a bug that incorrectly encoded pasted text if utf_8 was not specified in
the Region Settings preferences
- fixed a bug that could cause "Save As..." to fail with some user specified encodings
## 0.4.4 - 2010-10-21
### Added
- Git support now recognises conflicts when re-applying the stash
- search dialog is now automatically populated with the currently selected text
- added Oleg Pakhtusov's Russian translation
- added Kang Bundo's Korean translation
- pane headers tooltips
- Shift-ScrollWheel can now be used to scroll horizontally
### Fixed
- double clicking on text can now select full words with non-English characters
- fixed a bug that prevented opening files with non-ASCII characters in their path
## 0.4.3 - 2010-04-15
### Fixed
- fixed a bug that prevented the "-m" option from opening a 3-way merge for
Subversion and Bazaar conflicts
## 0.4.2 - 2010-04-13
### Added
- support for detached Git repositories
- better removal of unnecessary spacer lines
- added support for horizontal mouse scrolling
- renamed some resources to more user friendly names
- RCS support
- added Henri Menke's Spanish translation
- "#!" interpreter lines are now used to select proper highlighting rules
### Changed
- syntax highlighting is now indicated by radio menu items
## 0.4.1 - 2009-10-12
### Added
- added Japanese translation
- added Liu Hao's simplified Chinese translation
- added a 'Dismiss All Edits' menu item
- localised manuals are now supported on Windows
- new command line option for specifying blank file comparison panes
- new preference to enable/disable line numbers
- added "Undo Close Tab" menu item
- added new menu items and buttons for copying lines between panes
### Changed
- personal configuration files are now stored in ~/.config/diffuse/ (the README
file describes how to migrate old settings)
- Diffuse now quits if no viewers were created with the -m option
- replaced "Closing last tab quits Diffuse" preference with a "Warn me when
closing a tab will quit Diffuse" preference
- MMB on a notebook tab now closes the tab
- RMB on a notebook tab creates a popup menu to set the current page
- changed the default hotkeys for merging to reflect the direction text "moves"
## 0.4.0 - 2009-08-17
### Added
- added format menu with new items for changing case, sorting, and manipulating
white space
- optimised redraws when only the cursor position has changed
- input methods that use pre-editing can now be used when editing text
- dead keys can now be used when editing text
- updated Monotone support to use 'mtn automate inventory'
- Git support now handles files flagged as 'unmerged'
- added version control section to the manual
### Changed
- replaced 'Hide end of line characters' preference with 'Show white space characters'
- errors are now reported in a dialogue instead of printing to stderr
### Fixed
- graceful handling of non-zero exit codes from 'git status'
- minor bug fixes
## 0.3.4 - 2009-07-03
### Added
- syntax highlighting for .plist, GLSL, SConscript, and SConstruct files
- status bar now explains how to navigate between modes
- added labels to indicate syntax highlighting rules, encoding, and format
- Subversion 1.6 support
- added Henri Menke's German translation
- added '--examplesdir=' and '--mandir=' options to install.py
- renamed the '--python-interpreter=' installer option to '--pythonbin='
### Fixed
- minor bug fixes
## 0.3.3 - 2009-04-13
### Fixed
- fixed a bug handling the backspace key with the cursor in the first column
## 0.3.2 - 2009-04-13
### Added
- POSIX installer with `--destdir=` and `--files-only` options for packagers
- vi-like keybindings for line mode
- `-m` option to open modified files in separate tabs
- 'Merge From Left Then Right' and 'Merge From Right Then Left' menu items
- drag-n-drop support
- preferences for behaviour of tabs
- files with edits now tagged with '*'
- auto indent
- 'Open File In New Tab...' and 'Open Modified Files...' menu items
- 'Save All' menu item
- mac-style line ending support
### Changed
- new end of line display behaviour
- improved organisation of menu items
- errors are now reported on stderr
### Fixed
- button bar no longer grabs keyboard focus
- minor bug fixes
### Removed
- removed dependence on urllib module
- removed TODO list
## 0.3.1 - 2009-03-05
### Fixed
- fixed a typo that broke the 'Find...' dialogue
## 0.3.0 - 2009-03-03
### Added
- new Windows installer
- notification on focus change when files change on disk
- menu items for adjusting indentation
- syntax highlighting for Objective-C++
- `-c` option now works with CVS-style revision numbers
- window title now describes current tab
- search settings now persist across sessions
### Fixed
- minor bug fixes
## 0.2.15 - 2008-12-03
### Added
- smoother scrolling
- panes and tabs can now be manually re-organised
- preferences for tab key behaviour
- 'go to line' menu item
- '-c' option for viewing the changes of a particular commit
- home/end keys can now be used in line mode
- confirmation requested before overriding changed files
- position of window now saved
- syntax files for more file types
- reading /etc/diffuserc now optional when using a personal configuration file
### Fixed
- minor bug fixes
## 0.2.14 - 2008-10-20
### Added
- svk support
- syntax files for more file types
- DOS / Unix line endings now respected in edit operations
- improved difference map
- more robust launching of help browsers
- man page
- command line display options
- file revisions can now be specified in the open file dialogue
### Changed
- moved some resources to the preferences dialogue
### Fixed
- minor bug fixes
## 0.2.13 - 2008-05-16
### Added
- bazaar, darcs, and monotone support
- configurable key bindings
- persistent preference settings
- optimisations
### Fixed
- minor bug fixes
## 0.2.12 - 2008-05-06
### Added
- alternate codecs for reading and writing files
- more search options
- editor support for primary selection
### Fixed
- minor bug fixes
## 0.2.11 - 2008-04-27
### Added
- cvs, subversion, git, mercurial support
- python re-write
- syntax highlighting
- search and replace
- customisable through configuration files
- tabbed viewer panes
## 0.1.14 - 2006-01-28
### Added
- initial public release

339
COPYING Normal file
View File

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

21
LICENSE
View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2022 miguel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

159
README.md
View File

@ -1,115 +1,76 @@
![godot-gamejam](logo.png) <h1 align="center">
<img
src="./data/icons/hicolor/scalable/apps/io.github.mightycreak.Diffuse.svg"
alt="Diffuse"
width="192"
height="192"/><br/>
</h1>
**🤖 Godot Engine 4.0 template to better get started for gamejams with your game!** <p align="center" style="margin-top: 2em">
<a href="https://flathub.org/apps/details/io.github.mightycreak.Diffuse">
<img width="200" alt="Download on Flathub" src="https://flathub.org/assets/badges/flathub-badge-en.png"/>
</a>
</p>
![](https://img.shields.io/badge/Godot%20Compatible-4.0%2B-%234385B5) [![](https://img.shields.io/discord/785246324793540608.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.com/invite/CKBuE5djXe) <p align="center">
<a href="https://github.com/MightyCreak/diffuse/actions/workflows/ci.yml">
<img
src="https://github.com/MightyCreak/diffuse/actions/workflows/ci.yml/badge.svg"
alt="CI status"/>
</a>
<a href="https://repology.org/project/diffuse/versions">
<img src="https://repology.org/badge/tiny-repos/diffuse.svg" alt="Packaging status">
</a>
</p>
# 🧪 Features Diffuse is a graphical tool for merging and comparing text files. Diffuse is
able to compare an arbitrary number of files side-by-side and gives users the
ability to manually adjust line matching and directly edit files. Diffuse can
also retrieve revisions of files from several VCSs for comparison and merging.
### 🌌 **Game Settings** Some key features of Diffuse:
This template project comes with game settings out of the box: * Ability to compare and merge an arbitrary number of files side-by-side (n-way
merges)
* Line matching can be manually corrected by the user
* Ability to directly edit files
* Syntax highlighting
* Supports several VCS: [Bazaar][bzr], [CVS][cvs], [Darcs][darcs], [Git][git],
[Mercurial][hg], [Monotone][mtn], [RCS][rcs] and [Subversion][svn]
* Unicode support
* Unlimited undo
* Easy keyboard navigation
- **Audio volume** (Master, Sound, Music) [bzr]: https://bazaar.canonical.com
- **Game Language** (English only by default) [cvs]: https://cvs.nongnu.org
[darcs]: http://darcs.net
[git]: https://git-scm.com
[hg]: https://www.mercurial-scm.org
[mtn]: https://www.monotone.ca
[rcs]: https://www.gnu.org/software/rcs/
[svn]: https://subversion.apache.org
### ✨ **Bootsplash scene support** ## Documentation
Either use the default Godot bootsplash or define your own logo bootsplashes! For a more detailed documentation for users, translators and developers, see
the [documentation](docs/).
### 🎩 Basic menu flow (main menu, settings, pause) ## Contact
This project comes with basic menu navigation that allows you to navigate between ingame, settings and quitting the game. Discuss with us on Matrix at [#diffuse:matrix.org](https://matrix.to/#/#diffuse:matrix.org).
### 💾 Save Game Integration ## Licenses
Automatically saves the state of the game on exit. Starting a new game overrides the existing save game. Any game object that needs to be saved has to be part of the "Persist" group. Diffuse is under the [GPLv2](COPYING).
### 🌎 Translation support (i18n) The file [io.github.mightycreak.Diffuse.appdata.xml.in](data/io.github.mightycreak.Diffuse.appdata.xml.in)
is licensed under the [FSF-AP](https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html)
license.
Comes with pre-defined translations that can be extended. Copyright (C) 2006-2019 Derrick Moser <derrick_moser@yahoo.com>
Copyright (C) 2015-2023 Romain Failliot <romain.failliot@foolstep.com>
### ⏸ Pause Menu Icon made by [@jimmac](https://github.com/jimmac).
The `IngameScene` supports a pause menu to temporarily pause the game. This repository is a fork of the original project on SourceForge, which doesn't
seem to be maintained anymore: <https://sourceforge.net/projects/diffuse/>.
### _🚀 Automatic [itch.io](https://itch.io) deployment_
This templates comes with automatic deployment to itch.io for MacOS, Windows, Linux and HTML5 (Web). Delete `.github/workflows/godot-ci.yml` in case you are not interested in deploying to itch.io!
1. generate new API key in your itch.io settings and setup your `BUTLER_API_KEY` secret - [learn more](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions)
2. create a new game on itch.io
3. setup `ITCHIO_GAME` and `ITCHIO_USERNAME` secrets in Github and assign them to your itch.io username and game name
[See working example here](https://github.com/bitbrain/ggj-2023/blob/main/.github/workflows/godot-ci.yml)
# 🎮 Getting started!
1. Click `Use this template` in Github ([learn more about Template Repositories](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template))
2. Open the project in Godot Engine 4
3. Customize it to your needs (see [🧱 Customization](#-customization))
4. Open the `IngameScene` and start building your game!
# 🔌 Compatible Gamejams
> **Not all gamejams allow project templates!** Please make sure to carefully read the gamejam rules before using this project, otherwise you might **risk being disqualified**!
Down below is a list of some compatible gamejam formats that permit using this repository as a template:
- [GoGodotJam](https://gogodotjam.com/the-jam/)
- [Ludum Dare](https://ldjam.com/events/ludum-dare/rules)
- [GMTK Game Jam](https://itch.io/jam/gmtk-jam-2022)
- [Brackeys Gamejam](https://itch.io/jam/brackeys-7)
- [Global Game Jam](https://globalgamejam.org/news/be-cool-rules)
- [GameDevLondon Summer Jam](https://itch.io/jam/game-dev-london-summer-jam-2021)
- [Godot Wild Jam](https://itch.io/jam/godot-wild-jam-49)
# 🧱 Customization
This project is built to be as generic as possible and it can be fully adjusted to your needs.
## Defining custom UI theme
Search for the file `theme.tres` and open it. The [Godot theme editor](https://docs.godotengine.org/en/stable/tutorials/ui/gui_using_theme_editor.html) should appear. Feel free to customise the UI to your needs. Any `Control` node will use this theme by default:
![custom-theme](docs/custom-theme.png)
## Choosing 2D vs 3D
This toolkit is not limited to either 2D or 3D. It has been kept vague on purpose so feel free to build 2D or 3D scenes with it!
## Custom boot splash
Within Godot Engine, head to `scenes/boot` to access boot splash scenes. You can create your custom bootsplash by either modifying `GodotBootsplashScene` or creating a new node of type `Control`. Add `BootsplashScene` as a child and configure its properties as follows:
- `Fade Duration` - the amount of time in milliseconds to fade in/out the bootsplash.
- `Stay Duration` - the amount of time in milliseconds the bootsplash should stay.
- `Node` - the node/scene that should be displayed during the bootsplash.
- `Next Scene` - the next scene that should be loaded after the bootsplash has finished.
- `Interruptable ` - wether the bootsplash is interruptable or not.
## Add new translation
You will find a translation file in `i18n/translation.csv`. Feel free to extend it to your needs. Godot will automatically pickup the translations if you use them inside your control nodes like `Button` or `Label`. In case you need to manually translate something in a script, call the `tr()` function.
In case you want to add a new language, add a new column to the `translation.csv` file.
## Game Settings
The game settings are managed in `UserSettings.gd`. You can change the defaults by updating `USER_SETTING_DEFAULTS`. You can also add additional properties to extend them.
The `GameSettings` node and the `GameSettings.gd` script connects to the `UserSettings` by setting it/loading from it.
## Save game configuration
By default, save games are enabled. You can toggle support for save games inside `SaveGame.gd` by changing the `ENABLED` property.
The save game saves any node inside the `IngameScene` that is part of the `Persist` group ([learn more about groups in Godot](https://docs.godotengine.org/en/stable/tutorials/scripting/groups.html)). The save game system will save existing nodes but also nodes that were dynamically added to the scene at runtime!
Currently, the game will only save the scene when exiting the game via the pause menu.
# 🍻 Contributing
Feel free to raise a pull request or suggest any changes or improvements you would like to see!
> 🐱‍💻 **PLEASE NOTE:** this project is a template and any contribution should only introduce/extend features that are template related. If something can be its own addon (e.g. movement controller or specific 2D/3D stuff) it probably should be its own (separate) addon.

2
_config.yml Normal file
View File

@ -0,0 +1,2 @@
remote_theme: pages-themes/cayman@v0.2.0
title: Diffuse

View File

@ -0,0 +1,19 @@
#!/usr/bin/env python3
from os import environ, path
from subprocess import call
prefix = environ.get('MESON_INSTALL_PREFIX', '/usr/local')
datadir = path.join(prefix, 'share')
destdir = environ.get('DESTDIR', '')
# Package managers set this so we don't need to run
if not destdir:
print('Updating icon cache...')
call(['gtk-update-icon-cache', '-qtf', path.join(datadir, 'icons', 'hicolor')])
print('Updating desktop database...')
call(['update-desktop-database', '-q', path.join(datadir, 'applications')])
print('Compiling GSettings schemas...')
call(['glib-compile-schemas', path.join(datadir, 'glib-2.0', 'schemas')])

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/io/github/mightycreak/Diffuse/icons/scalable/actions">
<file preprocess="xml-stripblanks" alias="new-2way-merge-symbolic.svg">icons/hicolor/scalable/actions/new-2way-merge-symbolic.svg</file>
<file preprocess="xml-stripblanks" alias="new-3way-merge-symbolic.svg">icons/hicolor/scalable/actions/new-3way-merge-symbolic.svg</file>
<file preprocess="xml-stripblanks" alias="copy-selection-left-symbolic.svg">icons/hicolor/scalable/actions/copy-selection-left-symbolic.svg</file>
<file preprocess="xml-stripblanks" alias="copy-selection-right-symbolic.svg">icons/hicolor/scalable/actions/copy-selection-right-symbolic.svg</file>
<file preprocess="xml-stripblanks" alias="copy-left-into-selection-symbolic.svg">icons/hicolor/scalable/actions/copy-left-into-selection-symbolic.svg</file>
<file preprocess="xml-stripblanks" alias="copy-right-into-selection-symbolic.svg">icons/hicolor/scalable/actions/copy-right-into-selection-symbolic.svg</file>
</gresource>
</gresources>

7
data/diffuserc.in Normal file
View File

@ -0,0 +1,7 @@
# System-wide initialization file for Diffuse
option log_print_output @LOG_PRINT_OUTPUT@
option log_print_stack @LOG_PRINT_STACK@
option use_flatpak @USE_FLATPAK@
import @PKGDATADIR@/syntax/*.syntax

BIN
data/icons/diffuse.icns Normal file

Binary file not shown.

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="M11 14a1 1 0 0 0 .707-.293l4-4a1 1 0 0 0 0-1.414l-4-4a1 1 0 1 0-1.414 1.414L13.586 9l-3.293 3.293A1 1 0 0 0 11 14zm-4 0a1 1 0 0 0 .707-.293l4-4a1 1 0 0 0 0-1.414l-4-4a1 1 0 1 0-1.414 1.414L8.586 8H4c-1.117 0-2-.883-2-2V3c0-.55-.45-1-1-1s-1 .45-1 1v3c0 .023 0 .047.004.07A4.01 4.01 0 0 0 4 10h4.586l-2.293 2.293A1 1 0 0 0 7 14zm0 0" fill="#2e3436"/></svg>

After

Width:  |  Height:  |  Size: 466 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="M5 14a1 1 0 0 1-.707-.293l-4-4a1 1 0 0 1 0-1.414l4-4a1 1 0 1 1 1.414 1.414L2.414 9l3.293 3.293A1 1 0 0 1 5 14zm4 0a1 1 0 0 1-.707-.293l-4-4a1 1 0 0 1 0-1.414l4-4a1 1 0 1 1 1.414 1.414L7.414 8H12c1.117 0 2-.883 2-2V3c0-.55.45-1 1-1s1 .45 1 1v3c0 .023 0 .047-.004.07A4.01 4.01 0 0 1 12 10H7.414l2.293 2.293A1 1 0 0 1 9 14zm0 0" fill="#2e3436"/></svg>

After

Width:  |  Height:  |  Size: 460 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#2e3436"><path d="m 9 2.933594 c 4.042969 0 5.890625 3.613281 5.890625 3.613281 l -1.785156 0.902344 s -1.246094 -2.515625 -4.105469 -2.515625 c -2.054688 0 -3.097656 1.394531 -3.484375 2.074218 h 0.910156 c 1.332031 0 1.574219 1.253907 1.574219 2.035157 l -6 -0.046875 l -0.046875 -6 c 1.046875 0 2.035156 0.523437 2.035156 1.667968 v 0.929688 l 0.0625 0.0625 c 0.757813 -1.089844 2.3125 -2.722656 4.949219 -2.722656 z m 0 0"/><path d="m 13.617188 8.996094 c 0.683593 0 1.265624 0.582031 1.265624 1.265625 v 3.46875 c 0 0.683593 -0.582031 1.265625 -1.265624 1.265625 h -3.46875 c -0.683594 0 -1.265626 -0.582032 -1.265626 -1.265625 v -3.46875 c 0 -0.683594 0.582032 -1.265625 1.265626 -1.265625 z m -0.734376 2 h -2 v 2 h 2 z m 0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 881 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#2e3436"><path d="m 7 2.933594 c -4.042969 0 -5.894531 3.613281 -5.894531 3.613281 l 1.785156 0.902344 s 1.25 -2.515625 4.109375 -2.515625 c 2.054688 0 3.097656 1.394531 3.484375 2.074218 h -0.910156 c -1.332031 0 -1.574219 1.253907 -1.574219 2.035157 l 6 -0.046875 l 0.042969 -6 c -1.042969 0 -2.03125 0.523437 -2.03125 1.667968 v 0.929688 l -0.0625 0.0625 c -0.757813 -1.089844 -2.316407 -2.722656 -4.949219 -2.722656 z m 0 0"/><path d="m 2.382812 8.996094 c -0.683593 0 -1.265624 0.582031 -1.265624 1.265625 v 3.46875 c 0 0.683593 0.582031 1.265625 1.265624 1.265625 h 3.46875 c 0.683594 0 1.265626 -0.582032 1.265626 -1.265625 v -3.46875 c 0 -0.683594 -0.582032 -1.265625 -1.265626 -1.265625 z m 0.734376 2 h 2 v 2 h -2 z m 0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 880 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="M3.094.25A2.45 2.45 0 0 0 .656 2.688v8.124c0 1.324 1.18 2.416 2.5 2.436v.064a2.45 2.45 0 0 0 2.438 2.438H8.03a.814.814 0 0 0 0-1.625H5.594a.794.794 0 0 1-.813-.813V5.187c0-.463.35-.812.813-.812h4.539l2.773 2.773v.477a.814.814 0 0 0 1.625 0v-.813a.812.812 0 0 0-.238-.574l-3.102-3.101-.148-.149-2.5-2.5A.812.812 0 0 0 7.969.25zm0 1.625H7.63l.875.875H5.594a2.45 2.45 0 0 0-2.438 2.438v6.433c-.45-.018-.875-.358-.875-.809V2.688c0-.464.35-.813.813-.813zM11.28 9.25v2.438H8.844v1.624h2.437v2.438h1.625v-2.438h2.438v-1.624h-2.438V9.25z" fill="#2e3436"/></svg>

After

Width:  |  Height:  |  Size: 665 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="M2.656.25C1.526.25.594 1.182.594 2.313v6.874c0 1.094 1.151 1.999 2.25 2.057v.193c0 1.127 1.123 2.057 2.25 2.063v.187c0 1.131.932 2.063 2.062 2.063H9.22a.689.689 0 0 0 0-1.375H7.156a.672.672 0 0 1-.687-.688V6.812c0-.392.295-.687.687-.687h3.84l2.348 2.348v.402a.688.688 0 0 0 1.375 0v-.688a.687.687 0 0 0-.201-.486l-2.65-2.65-.1-.1-2.15-2.15L7.267.45a.687.687 0 0 0-.487-.2zm0 1.375h3.84l.875.875H4.906c-1.13 0-2.062.932-2.062 2.063v5.302c-.384-.047-.875-.32-.875-.677V2.311c0-.392.295-.687.687-.687zm2.25 2.25h3.84l.875.875H7.156c-1.13 0-2.062.932-2.062 2.063v5.31c-.39-.006-.875-.297-.875-.685V4.561c0-.392.295-.687.687-.687zm7.063 6.375v2.063H9.906v1.374h2.063v2.063h1.375v-2.063h2.062v-1.374h-2.062V10.25z" fill="#2e3436"/></svg>

After

Width:  |  Height:  |  Size: 843 B

View File

@ -0,0 +1,387 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<linearGradient id="a" gradientUnits="userSpaceOnUse" x1="12.000011" x2="116.000015" y1="116.000069" y2="116.000069">
<stop offset="0" stop-color="#c0bfbc"/>
<stop offset="0.0357143" stop-color="#f6f5f4"/>
<stop offset="0.0713653" stop-color="#c0bfbc"/>
<stop offset="0.928571" stop-color="#deddda"/>
<stop offset="0.964286" stop-color="#c0bfbc"/>
<stop offset="1" stop-color="#c0bfbc"/>
</linearGradient>
<clipPath id="b">
<path d="m 12 12 h 104 v 100 h -104 z m 0 0"/>
</clipPath>
<clipPath id="c">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<linearGradient id="d" gradientUnits="userSpaceOnUse" x1="12" x2="116" y1="62" y2="62">
<stop offset="0" stop-color="#ffffff"/>
<stop offset="0.419312" stop-color="#deddda"/>
<stop offset="0.500451" stop-color="#c0bfbc"/>
<stop offset="0.500451" stop-color="#ffffff"/>
<stop offset="0.575083" stop-color="#deddda"/>
<stop offset="1" stop-color="#ffffff"/>
</linearGradient>
<clipPath id="e">
<path d="m 64 12 h 16 v 100 h -16 z m 0 0"/>
</clipPath>
<clipPath id="f">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="g">
<path d="m 48 12 h 16 v 100 h -16 z m 0 0"/>
</clipPath>
<clipPath id="h">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="i">
<path d="m 68 20 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="j">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="k">
<path d="m 68 82 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="l">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="m">
<path d="m 68 90 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="n">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="o">
<path d="m 56 20 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="p">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="q">
<path d="m 56 90 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="r">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="s">
<path d="m 12 60 h 104 v 24 h -104 z m 0 0"/>
</clipPath>
<clipPath id="t">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="u">
<path d="m 12 28 h 104 v 30 h -104 z m 0 0"/>
</clipPath>
<clipPath id="v">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="w">
<path d="m 15 55 h 41 v 42 h -41 z m 0 0"/>
</clipPath>
<clipPath id="x">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="y">
<path d="m 22 62 h 27 v 28 h -27 z m 0 0"/>
</clipPath>
<clipPath id="z">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="A">
<path d="m 72 15 h 40 v 41 h -40 z m 0 0"/>
</clipPath>
<clipPath id="B">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="C">
<path d="m 79 22 h 26 v 27 h -26 z m 0 0"/>
</clipPath>
<clipPath id="D">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="E">
<path d="m 56 27.136719 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="F">
<path d="m 20 -42.863281 h 36.265625 c 4.558594 0 7.578125 3.964843 7.578125 8 c 0 -4.007813 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433593 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566407 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="G">
<path d="m 12 12 h 104 v 100 h -104 z m 0 0"/>
</clipPath>
<clipPath id="H">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="I">
<path d="m 64 12 h 16 v 100 h -16 z m 0 0"/>
</clipPath>
<clipPath id="J">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="K">
<path d="m 48 12 h 16 v 100 h -16 z m 0 0"/>
</clipPath>
<clipPath id="L">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="M">
<path d="m 68 20 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="N">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="O">
<path d="m 68 82 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="P">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="Q">
<path d="m 68 90 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="R">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="S">
<path d="m 56 20 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="T">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="U">
<path d="m 56 90 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="V">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="W">
<path d="m 12 60 h 104 v 24 h -104 z m 0 0"/>
</clipPath>
<clipPath id="X">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="Y">
<path d="m 12 28 h 104 v 30 h -104 z m 0 0"/>
</clipPath>
<clipPath id="Z">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="aa">
<path d="m 15 55 h 41 v 42 h -41 z m 0 0"/>
</clipPath>
<clipPath id="ab">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="ac">
<path d="m 22 62 h 27 v 28 h -27 z m 0 0"/>
</clipPath>
<clipPath id="ad">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="ae">
<path d="m 72 15 h 40 v 41 h -40 z m 0 0"/>
</clipPath>
<clipPath id="af">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="ag">
<path d="m 79 22 h 26 v 27 h -26 z m 0 0"/>
</clipPath>
<clipPath id="ah">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="ai">
<path d="m 56 27.136719 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="aj">
<path d="m 20 -42.863281 h 36.265625 c 4.558594 0 7.578125 3.964843 7.578125 8 c 0 -4.007813 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433593 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566407 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="ak">
<rect height="128" width="128"/>
</clipPath>
<clipPath id="al">
<rect height="128" width="128"/>
</clipPath>
<filter id="am" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<mask id="an">
<g clip-path="url(#al)" filter="url(#am)">
<g clip-path="url(#ak)">
<path d="m 20 40 h 88 c 4.417969 0 8 3.582031 8 8 v 60 c 0 4.417969 -3.582031 8 -8 8 h -88 c -4.417969 0 -8 -3.582031 -8 -8 v -60 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#a)"/>
<g clip-path="url(#G)">
<g clip-path="url(#H)">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0" fill="url(#d)"/>
</g>
</g>
<g clip-path="url(#I)">
<g clip-path="url(#J)">
<path d="m 65 0 h 14 c 0.550781 0 1 0.449219 1 1 v 110 c 0 0.550781 -0.449219 1 -1 1 h -14 c -0.550781 0 -1 -0.449219 -1 -1 v -110 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0" fill="#77767b" fill-opacity="0.226754"/>
</g>
</g>
<g clip-path="url(#K)">
<g clip-path="url(#L)">
<path d="m 49 0 h 14 c 0.550781 0 1 0.449219 1 1 v 110 c 0 0.550781 -0.449219 1 -1 1 h -14 c -0.550781 0 -1 -0.449219 -1 -1 v -110 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0" fill="#77767b" fill-opacity="0.226754"/>
</g>
</g>
<g clip-path="url(#M)">
<g clip-path="url(#N)">
<path d="m 70 20 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#O)">
<g clip-path="url(#P)">
<path d="m 70 82 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#Q)">
<g clip-path="url(#R)">
<path d="m 70 90 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#S)">
<g clip-path="url(#T)">
<path d="m 58 20 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#U)">
<g clip-path="url(#V)">
<path d="m 58 90 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#W)">
<g clip-path="url(#X)">
<path d="m 62.027344 64.976562 l -2.589844 2.160157 c -2.222656 1.851562 -5.019531 2.863281 -7.910156 2.863281 h -41.527344 v 14 h 41.652344 c 2.777344 0 4.957031 -0.175781 8.921875 -3.28125 l 2.511719 -1.972656 c 2.652343 -3.027344 6.933593 -5.609375 11.976562 -5.722656 h 43.9375 v -13.023438 h -43.226562 c -5.023438 0 -9.886719 1.761719 -13.746094 4.976562 z m 0 0" fill="#554400" fill-opacity="0.7"/>
</g>
</g>
<g clip-path="url(#Y)">
<g clip-path="url(#Z)">
<path d="m 65.171875 30.828125 l -3.515625 3.515625 c -3.621094 3.621094 -8.535156 5.65625 -13.65625 5.65625 h -38 v 18 h 38 c 4.902344 0 11.007812 -1.589844 14.460938 -5.074219 l 3.492187 -3.523437 c 1.726563 -1.738282 4.386719 -2.550782 6.839844 -2.550782 h 47.207031 v -18.851562 h -48 c -2.5625 0 -5.015625 1.015625 -6.828125 2.828125 z m 0 0" fill="#ffcc00" fill-opacity="0.7"/>
</g>
</g>
<g clip-path="url(#aa)">
<g clip-path="url(#ab)">
<path d="m 56 76.050781 c 0 11.085938 -8.988281 20.074219 -20.078125 20.074219 c -11.085937 0 -20.074219 -8.988281 -20.074219 -20.074219 c 0 -11.089843 8.988282 -20.078125 20.074219 -20.078125 c 11.089844 0 20.078125 8.988282 20.078125 20.078125 z m 0 0" fill="#aa8800"/>
</g>
</g>
<g clip-path="url(#ac)">
<g clip-path="url(#ad)">
<path d="m 34.085938 62.957031 c 0.65625 0.023438 1.28125 0.300781 1.75 0.765625 l 10.414062 10.421875 c 0.046875 0.039063 0.089844 0.082031 0.132812 0.125 l 1.777344 1.78125 l -1.796875 1.792969 c -0.039062 0.042969 -0.082031 0.085938 -0.125 0.128906 l -10.402343 10.402344 c -1.023438 1.023438 -2.683594 1.023438 -3.703126 0 c -1.023437 -1.019531 -1.023437 -2.679688 0 -3.703125 l 6.003907 -6.003906 h -12.882813 c -1.445312 0 -2.617187 -1.171875 -2.617187 -2.617188 c 0 -1.449219 1.171875 -2.621093 2.617187 -2.621093 h 12.882813 l -6.003907 -6.003907 c -1.023437 -1.023437 -1.023437 -2.679687 0 -3.703125 c 0.46875 -0.472656 1.105469 -0.746094 1.773438 -0.765625 c 0.058594 -0.003906 0.117188 -0.003906 0.179688 0 z m 0 0" fill="#ffffff"/>
</g>
</g>
<g clip-path="url(#ae)">
<g clip-path="url(#af)">
<path d="m 112 35.875 c 0 11.046875 -8.953125 20 -20 20 s -20 -8.953125 -20 -20 s 8.953125 -20 20 -20 s 20 8.953125 20 20 z m 0 0" fill="#f1e86b"/>
</g>
</g>
<g clip-path="url(#ag)">
<g clip-path="url(#ah)">
<path d="m 93.097656 22.832031 c -0.65625 0.027344 -1.277344 0.300781 -1.742187 0.765625 l -10.378907 10.378906 c -0.042968 0.039063 -0.085937 0.082032 -0.128906 0.125 l -1.773437 1.773438 l 1.792969 1.789062 c 0.039062 0.042969 0.082031 0.085938 0.125 0.128907 l 10.363281 10.363281 c 1.019531 1.015625 2.667969 1.015625 3.6875 0 c 1.019531 -1.019531 1.019531 -2.671875 0 -3.691406 l -5.980469 -5.980469 h 12.832031 c 1.441407 0 2.609375 -1.167969 2.609375 -2.609375 s -1.167968 -2.609375 -2.609375 -2.609375 h -12.832031 l 5.980469 -5.980469 c 1.019531 -1.019531 1.019531 -2.671875 0 -3.6875 c -0.46875 -0.472656 -1.101563 -0.746094 -1.765625 -0.765625 c -0.058594 0 -0.121094 0 -0.179688 0 z m 0 0" fill="#554400"/>
</g>
</g>
<g clip-path="url(#ai)">
<g clip-path="url(#aj)">
<path d="m 58 27.136719 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
</g>
</g>
</mask>
<mask id="ao">
<g filter="url(#am)">
<rect fill-opacity="0.8" height="128" width="128"/>
</g>
</mask>
<linearGradient id="ap" gradientTransform="matrix(0 0.37 -0.98462 0 295.38501 -30.360001)" gradientUnits="userSpaceOnUse" x1="300" x2="428" y1="235" y2="235">
<stop offset="0" stop-color="#f9f06b"/>
<stop offset="1" stop-color="#f5c211"/>
</linearGradient>
<clipPath id="aq">
<rect height="128" width="128"/>
</clipPath>
<clipPath id="ar">
<rect height="128" width="128"/>
</clipPath>
<path d="m 20 40 h 88 c 4.417969 0 8 3.582031 8 8 v 60 c 0 4.417969 -3.582031 8 -8 8 h -88 c -4.417969 0 -8 -3.582031 -8 -8 v -60 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#a)"/>
<g clip-path="url(#b)">
<g clip-path="url(#c)">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0" fill="url(#d)"/>
</g>
</g>
<g clip-path="url(#e)">
<g clip-path="url(#f)">
<path d="m 65 0 h 14 c 0.550781 0 1 0.449219 1 1 v 110 c 0 0.550781 -0.449219 1 -1 1 h -14 c -0.550781 0 -1 -0.449219 -1 -1 v -110 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0" fill="#77767b" fill-opacity="0.226754"/>
</g>
</g>
<g clip-path="url(#g)">
<g clip-path="url(#h)">
<path d="m 49 0 h 14 c 0.550781 0 1 0.449219 1 1 v 110 c 0 0.550781 -0.449219 1 -1 1 h -14 c -0.550781 0 -1 -0.449219 -1 -1 v -110 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0" fill="#77767b" fill-opacity="0.226754"/>
</g>
</g>
<g clip-path="url(#i)">
<g clip-path="url(#j)">
<path d="m 70 20 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#k)">
<g clip-path="url(#l)">
<path d="m 70 82 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#m)">
<g clip-path="url(#n)">
<path d="m 70 90 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#o)">
<g clip-path="url(#p)">
<path d="m 58 20 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#q)">
<g clip-path="url(#r)">
<path d="m 58 90 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#s)">
<g clip-path="url(#t)">
<path d="m 62.027344 64.976562 l -2.589844 2.160157 c -2.222656 1.851562 -5.019531 2.863281 -7.910156 2.863281 h -41.527344 v 14 h 41.652344 c 2.777344 0 4.957031 -0.175781 8.921875 -3.28125 l 2.511719 -1.972656 c 2.652343 -3.027344 6.933593 -5.609375 11.976562 -5.722656 h 43.9375 v -13.023438 h -43.226562 c -5.023438 0 -9.886719 1.761719 -13.746094 4.976562 z m 0 0" fill="#554400" fill-opacity="0.7"/>
</g>
</g>
<g clip-path="url(#u)">
<g clip-path="url(#v)">
<path d="m 65.171875 30.828125 l -3.515625 3.515625 c -3.621094 3.621094 -8.535156 5.65625 -13.65625 5.65625 h -38 v 18 h 38 c 4.902344 0 11.007812 -1.589844 14.460938 -5.074219 l 3.492187 -3.523437 c 1.726563 -1.738282 4.386719 -2.550782 6.839844 -2.550782 h 47.207031 v -18.851562 h -48 c -2.5625 0 -5.015625 1.015625 -6.828125 2.828125 z m 0 0" fill="#ffcc00" fill-opacity="0.7"/>
</g>
</g>
<g clip-path="url(#w)">
<g clip-path="url(#x)">
<path d="m 56 76.050781 c 0 11.085938 -8.988281 20.074219 -20.078125 20.074219 c -11.085937 0 -20.074219 -8.988281 -20.074219 -20.074219 c 0 -11.089843 8.988282 -20.078125 20.074219 -20.078125 c 11.089844 0 20.078125 8.988282 20.078125 20.078125 z m 0 0" fill="#aa8800"/>
</g>
</g>
<g clip-path="url(#y)">
<g clip-path="url(#z)">
<path d="m 34.085938 62.957031 c 0.65625 0.023438 1.28125 0.300781 1.75 0.765625 l 10.414062 10.421875 c 0.046875 0.039063 0.089844 0.082031 0.132812 0.125 l 1.777344 1.78125 l -1.796875 1.792969 c -0.039062 0.042969 -0.082031 0.085938 -0.125 0.128906 l -10.402343 10.402344 c -1.023438 1.023438 -2.683594 1.023438 -3.703126 0 c -1.023437 -1.019531 -1.023437 -2.679688 0 -3.703125 l 6.003907 -6.003906 h -12.882813 c -1.445312 0 -2.617187 -1.171875 -2.617187 -2.617188 c 0 -1.449219 1.171875 -2.621093 2.617187 -2.621093 h 12.882813 l -6.003907 -6.003907 c -1.023437 -1.023437 -1.023437 -2.679687 0 -3.703125 c 0.46875 -0.472656 1.105469 -0.746094 1.773438 -0.765625 c 0.058594 -0.003906 0.117188 -0.003906 0.179688 0 z m 0 0" fill="#ffffff"/>
</g>
</g>
<g clip-path="url(#A)">
<g clip-path="url(#B)">
<path d="m 112 35.875 c 0 11.046875 -8.953125 20 -20 20 s -20 -8.953125 -20 -20 s 8.953125 -20 20 -20 s 20 8.953125 20 20 z m 0 0" fill="#f1e86b"/>
</g>
</g>
<g clip-path="url(#C)">
<g clip-path="url(#D)">
<path d="m 93.097656 22.832031 c -0.65625 0.027344 -1.277344 0.300781 -1.742187 0.765625 l -10.378907 10.378906 c -0.042968 0.039063 -0.085937 0.082032 -0.128906 0.125 l -1.773437 1.773438 l 1.792969 1.789062 c 0.039062 0.042969 0.082031 0.085938 0.125 0.128907 l 10.363281 10.363281 c 1.019531 1.015625 2.667969 1.015625 3.6875 0 c 1.019531 -1.019531 1.019531 -2.671875 0 -3.691406 l -5.980469 -5.980469 h 12.832031 c 1.441407 0 2.609375 -1.167969 2.609375 -2.609375 s -1.167968 -2.609375 -2.609375 -2.609375 h -12.832031 l 5.980469 -5.980469 c 1.019531 -1.019531 1.019531 -2.671875 0 -3.6875 c -0.46875 -0.472656 -1.101563 -0.746094 -1.765625 -0.765625 c -0.058594 0 -0.121094 0 -0.179688 0 z m 0 0" fill="#554400"/>
</g>
</g>
<g clip-path="url(#E)">
<g clip-path="url(#F)">
<path d="m 58 27.136719 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#ar)" mask="url(#an)">
<g clip-path="url(#aq)" mask="url(#ao)">
<path d="m 128 80.640625 v 47.359375 h -128 v -47.359375 z m 0 0" fill="url(#ap)"/>
<path d="m 13.308594 80.640625 l 47.355468 47.359375 h 21.214844 l -47.359375 -47.359375 z m 42.421875 0 l 47.363281 47.359375 h 21.214844 l -47.363282 -47.359375 z m 42.429687 0 l 29.839844 29.839844 v -21.210938 l -8.628906 -8.628906 z m -98.160156 7.90625 v 21.214844 l 18.238281 18.238281 h 21.214844 z m 0 0"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -0,0 +1,185 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<linearGradient id="a" gradientUnits="userSpaceOnUse" x1="12.000011" x2="116.000015" y1="116.000069" y2="116.000069">
<stop offset="0" stop-color="#c0bfbc"/>
<stop offset="0.0357143" stop-color="#f6f5f4"/>
<stop offset="0.0713653" stop-color="#c0bfbc"/>
<stop offset="0.928571" stop-color="#deddda"/>
<stop offset="0.964286" stop-color="#c0bfbc"/>
<stop offset="1" stop-color="#c0bfbc"/>
</linearGradient>
<clipPath id="b">
<path d="m 12 12 h 104 v 100 h -104 z m 0 0"/>
</clipPath>
<clipPath id="c">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<linearGradient id="d" gradientUnits="userSpaceOnUse" x1="12" x2="116" y1="62" y2="62">
<stop offset="0" stop-color="#ffffff"/>
<stop offset="0.419312" stop-color="#deddda"/>
<stop offset="0.500451" stop-color="#c0bfbc"/>
<stop offset="0.500451" stop-color="#ffffff"/>
<stop offset="0.575083" stop-color="#deddda"/>
<stop offset="1" stop-color="#ffffff"/>
</linearGradient>
<clipPath id="e">
<path d="m 64 12 h 16 v 100 h -16 z m 0 0"/>
</clipPath>
<clipPath id="f">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="g">
<path d="m 48 12 h 16 v 100 h -16 z m 0 0"/>
</clipPath>
<clipPath id="h">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="i">
<path d="m 68 20 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="j">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="k">
<path d="m 68 82 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="l">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="m">
<path d="m 68 90 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="n">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="o">
<path d="m 56 20 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="p">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="q">
<path d="m 56 90 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="r">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="s">
<path d="m 12 60 h 104 v 24 h -104 z m 0 0"/>
</clipPath>
<clipPath id="t">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="u">
<path d="m 12 28 h 104 v 30 h -104 z m 0 0"/>
</clipPath>
<clipPath id="v">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="w">
<path d="m 15 55 h 41 v 42 h -41 z m 0 0"/>
</clipPath>
<clipPath id="x">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="y">
<path d="m 22 62 h 27 v 28 h -27 z m 0 0"/>
</clipPath>
<clipPath id="z">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="A">
<path d="m 72 15 h 40 v 41 h -40 z m 0 0"/>
</clipPath>
<clipPath id="B">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="C">
<path d="m 79 22 h 26 v 27 h -26 z m 0 0"/>
</clipPath>
<clipPath id="D">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<clipPath id="E">
<path d="m 56 27.136719 h 4 v 4 h -4 z m 0 0"/>
</clipPath>
<clipPath id="F">
<path d="m 20 -42.863281 h 36.265625 c 4.558594 0 7.578125 3.964843 7.578125 8 c 0 -4.007813 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433593 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566407 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0"/>
</clipPath>
<path d="m 20 40 h 88 c 4.417969 0 8 3.582031 8 8 v 60 c 0 4.417969 -3.582031 8 -8 8 h -88 c -4.417969 0 -8 -3.582031 -8 -8 v -60 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#a)"/>
<g clip-path="url(#b)">
<g clip-path="url(#c)">
<path d="m 20 12 h 36.265625 c 4.558594 0 7.578125 3.964844 7.578125 8 c 0 -4.007812 4.105469 -8 8.074219 -8 h 36.082031 c 4.433594 0 8 3.566406 8 8 v 76 c 0 4.433594 -3.566406 8 -8 8 h -35.804688 c -4.273437 0 -8.097656 3.160156 -8.097656 8 c 0 -4.828125 -3.332031 -8 -8.171875 -8 h -35.925781 c -4.433594 0 -8 -3.566406 -8 -8 v -76 c 0 -4.433594 3.566406 -8 8 -8 z m 0 0" fill="url(#d)"/>
</g>
</g>
<g clip-path="url(#e)">
<g clip-path="url(#f)">
<path d="m 65 0 h 14 c 0.550781 0 1 0.449219 1 1 v 110 c 0 0.550781 -0.449219 1 -1 1 h -14 c -0.550781 0 -1 -0.449219 -1 -1 v -110 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0" fill="#77767b" fill-opacity="0.226754"/>
</g>
</g>
<g clip-path="url(#g)">
<g clip-path="url(#h)">
<path d="m 49 0 h 14 c 0.550781 0 1 0.449219 1 1 v 110 c 0 0.550781 -0.449219 1 -1 1 h -14 c -0.550781 0 -1 -0.449219 -1 -1 v -110 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0" fill="#77767b" fill-opacity="0.226754"/>
</g>
</g>
<g clip-path="url(#i)">
<g clip-path="url(#j)">
<path d="m 70 20 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#k)">
<g clip-path="url(#l)">
<path d="m 70 82 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#m)">
<g clip-path="url(#n)">
<path d="m 70 90 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#o)">
<g clip-path="url(#p)">
<path d="m 58 20 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#q)">
<g clip-path="url(#r)">
<path d="m 58 90 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
<g clip-path="url(#s)">
<g clip-path="url(#t)">
<path d="m 62.027344 64.976562 l -2.589844 2.160157 c -2.222656 1.851562 -5.019531 2.863281 -7.910156 2.863281 h -41.527344 v 14 h 41.652344 c 2.777344 0 4.957031 -0.175781 8.921875 -3.28125 l 2.511719 -1.972656 c 2.652343 -3.027344 6.933593 -5.609375 11.976562 -5.722656 h 43.9375 v -13.023438 h -43.226562 c -5.023438 0 -9.886719 1.761719 -13.746094 4.976562 z m 0 0" fill="#554400" fill-opacity="0.7"/>
</g>
</g>
<g clip-path="url(#u)">
<g clip-path="url(#v)">
<path d="m 65.171875 30.828125 l -3.515625 3.515625 c -3.621094 3.621094 -8.535156 5.65625 -13.65625 5.65625 h -38 v 18 h 38 c 4.902344 0 11.007812 -1.589844 14.460938 -5.074219 l 3.492187 -3.523437 c 1.726563 -1.738282 4.386719 -2.550782 6.839844 -2.550782 h 47.207031 v -18.851562 h -48 c -2.5625 0 -5.015625 1.015625 -6.828125 2.828125 z m 0 0" fill="#ffcc00" fill-opacity="0.7"/>
</g>
</g>
<g clip-path="url(#w)">
<g clip-path="url(#x)">
<path d="m 56 76.050781 c 0 11.085938 -8.988281 20.074219 -20.078125 20.074219 c -11.085937 0 -20.074219 -8.988281 -20.074219 -20.074219 c 0 -11.089843 8.988282 -20.078125 20.074219 -20.078125 c 11.089844 0 20.078125 8.988282 20.078125 20.078125 z m 0 0" fill="#aa8800"/>
</g>
</g>
<g clip-path="url(#y)">
<g clip-path="url(#z)">
<path d="m 34.085938 62.957031 c 0.65625 0.023438 1.28125 0.300781 1.75 0.765625 l 10.414062 10.421875 c 0.046875 0.039063 0.089844 0.082031 0.132812 0.125 l 1.777344 1.78125 l -1.796875 1.792969 c -0.039062 0.042969 -0.082031 0.085938 -0.125 0.128906 l -10.402343 10.402344 c -1.023438 1.023438 -2.683594 1.023438 -3.703126 0 c -1.023437 -1.019531 -1.023437 -2.679688 0 -3.703125 l 6.003907 -6.003906 h -12.882813 c -1.445312 0 -2.617187 -1.171875 -2.617187 -2.617188 c 0 -1.449219 1.171875 -2.621093 2.617187 -2.621093 h 12.882813 l -6.003907 -6.003907 c -1.023437 -1.023437 -1.023437 -2.679687 0 -3.703125 c 0.46875 -0.472656 1.105469 -0.746094 1.773438 -0.765625 c 0.058594 -0.003906 0.117188 -0.003906 0.179688 0 z m 0 0" fill="#ffffff"/>
</g>
</g>
<g clip-path="url(#A)">
<g clip-path="url(#B)">
<path d="m 112 35.875 c 0 11.046875 -8.953125 20 -20 20 s -20 -8.953125 -20 -20 s 8.953125 -20 20 -20 s 20 8.953125 20 20 z m 0 0" fill="#f1e86b"/>
</g>
</g>
<g clip-path="url(#C)">
<g clip-path="url(#D)">
<path d="m 93.097656 22.832031 c -0.65625 0.027344 -1.277344 0.300781 -1.742187 0.765625 l -10.378907 10.378906 c -0.042968 0.039063 -0.085937 0.082032 -0.128906 0.125 l -1.773437 1.773438 l 1.792969 1.789062 c 0.039062 0.042969 0.082031 0.085938 0.125 0.128907 l 10.363281 10.363281 c 1.019531 1.015625 2.667969 1.015625 3.6875 0 c 1.019531 -1.019531 1.019531 -2.671875 0 -3.691406 l -5.980469 -5.980469 h 12.832031 c 1.441407 0 2.609375 -1.167969 2.609375 -2.609375 s -1.167968 -2.609375 -2.609375 -2.609375 h -12.832031 l 5.980469 -5.980469 c 1.019531 -1.019531 1.019531 -2.671875 0 -3.6875 c -0.46875 -0.472656 -1.101563 -0.746094 -1.765625 -0.765625 c -0.058594 0 -0.121094 0 -0.179688 0 z m 0 0" fill="#554400"/>
</g>
</g>
<g clip-path="url(#E)">
<g clip-path="url(#F)">
<path d="m 58 27.136719 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 s -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill="#9a9996"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 10.667969 1.03125 c -2.410157 0.007812 -4.363281 1.964844 -4.363281 4.375 c 0.003906 2.417969 1.960937 4.375 4.375 4.375 c 2.417968 0 4.375 -1.957031 4.375 -4.375 c 0.003906 -2.417969 -1.957032 -4.375 -4.375 -4.375 c -0.003907 -0.003906 -0.007813 -0.003906 -0.011719 0 z m 0.089843 1.921875 h 0.035157 c 0.144531 0.007813 0.28125 0.066406 0.382812 0.167969 c 0.21875 0.21875 0.21875 0.574218 0 0.796875 l -1 0.996093 h 2.261719 c 0.3125 0 0.5625 0.253907 0.5625 0.566407 c 0 0.308593 -0.25 0.5625 -0.5625 0.5625 h -2.261719 l 1.027344 1 c 0.21875 0.21875 0.21875 0.574219 0 0.792969 s -0.574219 0.21875 -0.796875 0 l -1.972656 -1.945313 c -0.007813 -0.007813 -0.019532 -0.015625 -0.027344 -0.027344 l -0.386719 -0.382812 l 0.386719 -0.386719 c 0.007812 -0.007812 0.015625 -0.015625 0.023438 -0.027344 l 1.949218 -1.945312 c 0.101563 -0.101563 0.234375 -0.160156 0.378906 -0.167969 z m 0 0"/>
<path d="m 4.402344 5.875 c -2.511719 0 -4.546875 2.039062 -4.546875 4.546875 c 0 2.511719 2.035156 4.546875 4.546875 4.546875 c 2.507812 0 4.542968 -2.035156 4.542968 -4.546875 c 0 -2.507813 -2.035156 -4.542969 -4.542968 -4.546875 z m 0 0.890625 c 2.019531 0 3.65625 1.636719 3.652344 3.65625 c 0 2.019531 -1.636719 3.65625 -3.652344 3.65625 c -2.019532 0 -3.65625 -1.636719 -3.65625 -3.65625 s 1.636718 -3.65625 3.65625 -3.65625 z m 0 0"/>
<path d="m 4.234375 7.765625 c 0.152344 0.007813 0.296875 0.070313 0.402344 0.179687 l 2.089843 2.089844 c 0.011719 0.007813 0.023438 0.019532 0.03125 0.027344 l 0.410157 0.410156 l -0.414063 0.414063 c -0.007812 0.011719 -0.019531 0.023437 -0.027344 0.03125 l -2.121093 2.085937 c -0.234375 0.238282 -0.617188 0.238282 -0.851563 0 c -0.238281 -0.234375 -0.238281 -0.617187 0 -0.851562 l 1.101563 -1.074219 h -2.425781 c -0.335938 0 -0.605469 -0.269531 -0.605469 -0.605469 c 0 -0.332031 0.269531 -0.601562 0.605469 -0.601562 h 2.425781 l -1.070313 -1.074219 c -0.238281 -0.234375 -0.238281 -0.617187 0 -0.851563 c 0.105469 -0.109374 0.253906 -0.175781 0.40625 -0.179687 z m 0 0"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

17
data/icons/meson.build Normal file
View File

@ -0,0 +1,17 @@
application_id = 'io.github.mightycreak.Diffuse'
scalable_dir = join_paths('hicolor', 'scalable', 'apps')
install_data(
join_paths(scalable_dir, ('@0@.svg').format(application_id)),
install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir)
)
symbolic_dir = join_paths('hicolor', 'symbolic', 'apps')
install_data(
join_paths(symbolic_dir, ('@0@-symbolic.svg').format(application_id)),
install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir)
)
if build_machine.system() == 'darwin'
install_data('diffuse.icns', install_dir: '/Applications/Diffuse.app/Contents/Resources')
endif

View File

@ -0,0 +1,418 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>io.github.mightycreak.Diffuse</id>
<name>Diffuse</name>
<summary>Graphical tool for merging and comparing text files</summary>
<description>
<p>
Diffuse is a graphical tool for comparing and merging text files. It can retrieve files for comparison from
Bazaar, CVS, Darcs, Git, Mercurial, Monotone, RCS, and Subversion repositories.
</p>
</description>
<supports>
<control>pointing</control>
<control>keyboard</control>
<control>console</control>
</supports>
<metadata_license>FSFAP</metadata_license>
<project_license>GPL-2.0-or-later</project_license>
<content_rating type="oars-1.1"/>
<launchable type="desktop-id">io.github.mightycreak.Diffuse.desktop</launchable>
<translation type="gettext">diffuse</translation>
<url type="homepage">https://mightycreak.github.io/diffuse/</url>
<url type="bugtracker">https://github.com/MightyCreak/diffuse/issues</url>
<url type="vcs-browser">https://github.com/MightyCreak/diffuse</url>
<url type="translate">https://github.com/MightyCreak/diffuse/blob/main/docs/translators.md</url>
<screenshots>
<screenshot type="default">
<image type="source">https://raw.githubusercontent.com/MightyCreak/diffuse/main/docs/images/screenshot_v0.7.7_main_window.png</image>
<caption>Main window</caption>
</screenshot>
<screenshot>
<image type="source">https://raw.githubusercontent.com/MightyCreak/diffuse/main/docs/images/screenshot_v0.7.7_about_window.png</image>
<caption>About window</caption>
</screenshot>
</screenshots>
<developer_name translatable="no">Romain Failliot</developer_name>
<update_contact>romain@foolstep.com</update_contact>
<releases>
<release version="0.9.0" date="2024-01-13">
<description>
<p>Summary: remove support for SVK, update to GNOME 45, updated Turkish translation.</p>
<p>Changed:</p>
<ul>
<li>Update from GNOME 44 to 45 (@sabriunal)</li>
<li>Flatpak manifest now runs the tests (@sabriunal)</li>
<li>Use appstreamcli instead of the deprecated appstream-util to validate appdata (@sabriunal)</li>
<li>Update appdata: add translation tag, vcs-browser and translate URLs (@sabriunal)</li>
<li>Translation: mark the developer name and release descriptions as untranslatable (@sabriunal)</li>
<li>Translation: update Turkish translation (@sabriunal)</li>
</ul>
<p>Removed:</p>
<ul>
<li>Remove support for the SVK CVS (@MightyCreak)</li>
</ul>
<p>Fixed:</p>
<ul>
<li>Fix compatibility with Python 3.12: remove use of distutils (@MightyCreak)</li>
<li>Fix new errors raised by Flake8 (@MightyCreak)</li>
<li>Fix the error with the CICD due to the use of appstreamcli (@MightyCreak)</li>
</ul>
</description>
</release>
<release version="0.8.2" date="2023-04-16">
<description translatable="no">
<p>Use more modern, symbolic icons, add Dutch translation, and a couple of small fixes.</p>
<p>Added:</p>
<ul>
<li>Add link to the Matrix room in the README (@MightyCreak)</li>
<li>Add Dutch translation (@Vistaus)</li>
</ul>
<p>Changed:</p>
<ul>
<li>Replace `_` by `-` in the action names to be compatible with GTK action names (@MightyCreak)</li>
<li>The About dialog is now transient for the main window (@oscfdezdz)</li>
<li>Remove deprecated STOCK constants and use more modern, symbolic icons (@oscfdezdz)</li>
</ul>
<p>Fixed:</p>
<ul>
<li>Some signals weren't properly renamed from the previous GTK3 migration (@MightyCreak)</li>
<li>The syntax menu wasn't working anymore (@MightyCreak)</li>
<li>Properly handles SIGINT (i.e. Ctrl+C) now (@MightyCreak)</li>
<li>Add back `save_state()` to remember window's width and height (@MightyCreak)</li>
</ul>
</description>
</release>
<release version="0.8.1" date="2023-04-07">
<description translatable="no">
<p>
Fix for the shortcuts that weren't working anymore due to migration to Gtk.Application.
</p>
<p>Changed:</p>
<ul>
<li>Remove log function calls from the stack trace when calling `logDebug` or `logError` (@MightyCreak)</li>
<li>
Log functions used to log only on stderr, now `logDebug` logs on stdout and `logError`
logs on stderr (@MightyCreak)
</li>
<li>Change Git default branch from `master` to `main` (@MightyCreak)</li>
</ul>
<p>Fixed:</p>
<ul>
<li>Shortcuts were not working since the move to Gtk.Application (issue #188) (@MightyCreak)</li>
</ul>
</description>
</release>
<release version="0.8.0" date="2023-04-03">
<description translatable="no">
<p>
Update to GNOME 44, improved GTK 3 support, initial support for Rust, added Turkish and
Georgian translations, and a couple of fixes.
</p>
<p>Added:</p>
<ul>
<li>Language: initial support for Rust language (@alopatindev)</li>
<li>Translation: added Turkish translation (@libreajans)</li>
<li>Translation: added Georgian translation (@NorwayFun)</li>
</ul>
<p>Changed:</p>
<ul>
<li>Update from GNOME 42 to GNOME 44 (@MightyCreak)</li>
<li>Translation: updated Swedish translation (@eson57)</li>
<li>Dialog: prompt only once if several files needs to be reloaded (@yuriiz)</li>
<li>Use GTK3's Gtk.Application/Gtk.ApplicationWindow (@yuriiz)</li>
<li>Split `DiffuseApplication` and `DiffuseWindow` classes in their own files (@MightyCreak)</li>
<li>Use new Meson (from 0.50 to 0.55) and fixed deprecation warnings (@MightyCreak)</li>
<li>
Mac: fix the shortcut for first/previous/next/last differences, now uses ⌘ instead of
Ctrl (@krlmlr)
</li>
</ul>
<p>Fixed:</p>
<ul>
<li>"Go to line..." dialog didn't show up (@MightyCreak)</li>
<li>
Tech debt: use `transient_for` instead of the deprecated `parent` when creating a
`Gtk.Widget` (@MightyCreak)
</li>
<li>Documentation: prefer `pip3` over `pip` to ensure it works everywhere (@krlmlr)</li>
<li>Flatpak: add missing `--filesystem=xdg-run/gvfsd` privilege (@MightyCreak)</li>
</ul>
</description>
</release>
<release version="0.7.7" date="2022-10-23">
<description translatable="no">
<p>
Update translations.
</p>
<p>Changed:</p>
<ul>
<li>Translation: updated Spanish translation</li>
<li>Translation: updated POT file</li>
<li>Translation: fixed issue with commented string that still needs translation</li>
</ul>
</description>
</release>
<release version="0.7.6" date="2022-10-23">
<description translatable="no">
<p>
Add port to Mac OS.
</p>
<p>Added:</p>
<ul>
<li>Port to Mac OS (@hugoholgersson)</li>
</ul>
<p>Changed:</p>
<ul>
<li>Documentation: added dev setup for MacOS</li>
<li>Documentation: updated the dependencies</li>
<li>CI/CD: GitHub actions warnings</li>
</ul>
<p>Fixed:</p>
<ul>
<li>Fixed MyPy errors</li>
</ul>
</description>
</release>
<release version="0.7.5" date="2022-04-15">
<description translatable="no">
<p>
Crashfix and French translation.
</p>
<p>Added:</p>
<ul>
<li>Documentation: added release process instructions</li>
<li>Translation: added French translation</li>
</ul>
<p>Fixed:</p>
<ul>
<li>Fixed #156: Preferences cannot be saved in latest release</li>
<li>Cleanups: use constructors instead of `new()` whenever possible in GTK classes</li>
</ul>
</description>
</release>
<release version="0.7.4" date="2022-04-03">
<description translatable="no">
<p>
Mainly a maintenance release. It does increase the GNOME SDK's version.
</p>
<p>Added:</p>
<ul>
<li>Added a `--remove-obsolete` option for the update-translation.py script</li>
<li>Added links to VCSs in README.md</li>
<li>New keyword in config file: "option"</li>
<li>Added instructions to install and run from a custom directory</li>
</ul>
<p>Changed:</p>
<ul>
<li>Updated the translation files</li>
<li>Renamed POTFILES.in to POTFILES</li>
<li>Renamed io.github.mightycreak.Diffuse.metadata.xml.in to io.github.mightycreak.Diffuse.appdata.xml.in</li>
<li>Leaner README.md</li>
<li>Moved the documentation to docs/</li>
<li>In the CI, call the linters on the installed directory</li>
<li>Renamed application name from "Diffuse Merge Tool" to "Diffuse"</li>
<li>Linters can be run sooner (before installation)</li>
<li>Better messages when an error occurs while parsing the config file</li>
<li>Start converting the code to static types</li>
<li>Add more information about the dependencies in the documentation</li>
<li>Upgrade Flatpak GNOME's runtime to 42</li>
</ul>
<p>Fixed:</p>
<ul>
<li>>Removed the lasting lint errors (i.e. in main.py)</li>
<li>>Fix Flatpak runtime version in documentation</li>
</ul>
</description>
</release>
<release version="0.7.3" date="2021-11-22">
<description translatable="no">
<p>
Patch release that introduces linters (flake8 and mypy).
</p>
<p>Added:</p>
<ul>
<li>Added linters (flake8 and mypy) and fixed some errors</li>
<li>Added lint jobs for both in the CI</li>
<li>Added a flatpak job in the CI</li>
</ul>
<p>Changed:</p>
<ul>
<li>main.py slimmed down by about 5000 lines</li>
<li>The new widgets.py is a bit fat though (~4000 lines)</li>
<li>Updated the translation files</li>
</ul>
<p>Fixed:</p>
<ul>
<li>
The intense code cleaning seems to have fixed a bug with the `-c` argument (#120)
</li>
</ul>
</description>
</release>
<release version="0.7.2" date="2021-11-18">
<description translatable="no">
<p>
Patch release that fixes an error about APP_NAME and the Brazilian translation.
</p>
<p>Added:</p>
<ul>
<li>
New options: log_print_output and log_print_stack, to print the log
messages on the output and code stack
</li>
<li>
New log function: utils.logErrorAndDialog, to both log and show a
dialog message
</li>
</ul>
<p>Changed:</p>
<ul>
<li>Modularized the VCSs (reducing main.py by around 1300 lines)</li>
<li>Bump GNOME runtime version from 3.38 to 41</li>
</ul>
<p>Fixed:</p>
<ul>
<li>Fixed 'APP_NAME' error when opening non existing file</li>
<li>Fixed the Portuguese Brazilian (pt_BR) translation</li>
</ul>
</description>
</release>
<release version="0.7.1" date="2021-11-17">
<description translatable="no">
<p>
Patch release to fix a bug when using the Flatpak package.
</p>
<p>Fixed:</p>
<ul>
<li>
Fixed a Flatpak bug where the app couldn't call binaries on the
host, such as `git`, `svn`, etc.
</li>
</ul>
</description>
</release>
<release version="0.7.0" date="2021-11-16">
<description translatable="no">
<p>
With this release, the main end-user change is the new icon. The rest
is mainly maintenance improvements with a much more standard folder
structure and starting to modularize the code. This is an ongoing
effort as there is still a lot to do, but hopefully this would
motivate some to contribute ;)
</p>
<p>
An important note though: the application ID has changed and is now
io.github.mightycreak.Diffuse.
</p>
<p>Added:</p>
<ul>
<li>New icon and in SVG now</li>
<li>Started to modularize the code</li>
</ul>
<p>Changed:</p>
<ul>
<li>
Changed AppID to io.github.mightycreak.Diffuse (as advised in the
Flatpak documentation)
</li>
<li>Renamed directory `translations/` to `po/`</li>
<li>Now uses POTFILES.in to list the files to translate</li>
<li>
Translation strings are no longer sorted alphabetically, this will
help when there will be several files in POTFILES.in
</li>
<li>Updated the documentation and script in the `po/` directory</li>
<li>Add .desktop translations in .po files</li>
</ul>
<p>Fixed:</p>
<ul>
<li>Fixed some GTK deprecation warnings</li>
</ul>
</description>
</release>
<release version="0.6.0" date="2020-11-29">
<description translatable="no">
<p>
Mainly under the hood changes in this release, so nothing really
visible to the users in this version. That said, I figured it was a
long time since the last release (4 months ago) and, as promised, I
want Diffuse development to be a bit more active and iterative.
</p>
<p>
Apart from the maintenance changes 🧰, I think the main improvement
is that Diffuse will soon be available through Flathub!
</p>
<p>Added:</p>
<ul>
<li>New Flatpak package, published on Flathub: com.github.mightycreak.Diffuse</li>
</ul>
<p>Changed:</p>
<ul>
<li>Replace old install.py with the more standard Meson</li>
<li>Remove u string prefixes since Python 3 is in UTF-8 by default</li>
<li>Replaced some interpolation operators (%) for the f string prefix</li>
<li>Use the window scale factor for the icons generation</li>
</ul>
</description>
</release>
<release version="0.5.0" date="2020-07-18">
<description translatable="no">
<p>
Here is the v0.5.0. Unintentionally, this release happens exactly 6
years after the previous v0.4.8 release!
</p>
<p>
There is a lot to do on this application, and some features didn't
make the release. The main one being the Windows installers. I think
6 years is too long to continue to wait until this bug is fixed. The
Python scripts should work on Windows, but no executable is produced
(yet) with the release.
</p>
<p>
Other than that, Diffuse v0.5.0 is now officially compatible with
Python 3 and GTK 3! And it is synced to the latest commits from
upstream (which were never released).
</p>
<p>
The next version will not take 6 years, I promise you! 😄
</p>
<p>Added:</p>
<ul>
<li>Added Pedro Albuquerque's Portuguese translation</li>
<li>Added Åke Engelbrektson's Swedish translation</li>
<li>Added Guillaume Hoffmann's Darcs support improvements</li>
<li>Added Akom Chotiphantawanon's Thai translation</li>
<li>Added support for Git submodules</li>
<li>Added a preference and command line option to specify the version control system search order</li>
<li>Added .editorconfig file</li>
<li>Added .gitignore file</li>
<li>Added message when removing files during uninstallation</li>
<li>Added Python script to update all the translation files at once</li>
</ul>
<p>Changed:</p>
<ul>
<li>Convert to Python 3</li>
<li>Convert to GTK 3</li>
<li>Updated Python highlighting for Python 3 grammar</li>
<li>Updated copyrights years and authors</li>
<li>Improve Spanish translation</li>
<li>Convert translation README to MarkDown</li>
<li>Updated all the translation files</li>
</ul>
<p>Fixed:</p>
<ul>
<li>Fixed wrong icons directory for gtk-update-icon-cache</li>
<li>Fixed missing directories when uninstalling</li>
<li>Fixed bug introduced by r420 with RCS VCS</li>
<li>Fixed broken drag'n'drop since migration to Python3/GTK3</li>
<li>Fixed error when using '-m' in an SVN repo</li>
</ul>
</description>
</release>
</releases>
</component>

View File

@ -0,0 +1,10 @@
[Desktop Entry]
Name=Diffuse
Comment=Graphical tool for merging and comparing text files
Exec=diffuse -s %F
Icon=io.github.mightycreak.Diffuse
Terminal=false
Type=Application
MimeType=text/plain;text/x-csrc;text/x-chdr;
Categories=Development;GTK;
StartupNotify=true

62
data/meson.build Normal file
View File

@ -0,0 +1,62 @@
pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
gnome = import('gnome')
gnome.compile_resources(meson.project_name(),
meson.project_name() + '.gresource.xml',
gresource_bundle: true,
install: true,
install_dir: pkgdatadir,
)
if build_machine.system() == 'linux'
desktop_file = i18n.merge_file(
input: 'io.github.mightycreak.Diffuse.desktop.in',
output: 'io.github.mightycreak.Diffuse.desktop',
type: 'desktop',
po_dir: '../po',
install: true,
install_dir: join_paths(get_option('datadir'), 'applications')
)
desktop_utils = find_program('desktop-file-validate', required: false)
if desktop_utils.found()
test('Validate desktop file', desktop_utils,
args: [desktop_file]
)
endif
appstream_file = i18n.merge_file(
input: 'io.github.mightycreak.Diffuse.appdata.xml.in',
output: 'io.github.mightycreak.Diffuse.appdata.xml',
po_dir: '../po',
install: true,
install_dir: join_paths(get_option('datadir'), 'appdata')
)
appstreamcli = find_program('appstreamcli', required: false)
if appstreamcli.found()
test('Validate appstream file', appstreamcli,
args: ['validate', '--no-net', '--explain', appstream_file]
)
endif
endif
# Diffuse config file
conf = configuration_data()
conf.set('LOG_PRINT_OUTPUT', get_option('log_print_output'))
conf.set('LOG_PRINT_STACK', get_option('log_print_stack'))
conf.set('USE_FLATPAK', get_option('use_flatpak'))
conf.set('PKGDATADIR', pkgdatadir)
configure_file(
input: 'diffuserc.in',
output: 'diffuserc',
configuration: conf,
install: true,
install_dir: get_option('sysconfdir')
)
# Data files
install_subdir('usr/share', install_dir: get_option('datadir'), strip_directory: true)
subdir('icons')

View File

@ -0,0 +1,77 @@
# Bourne Shell syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax 'Bourne Shell' normal text
syntax_files 'Bourne Shell' '^(.*\.sh|\.bashrc)$'
syntax_magic 'Bourne Shell' '^#![ \t]*([^ \t/]*/)*(env[ \t]+)?(sh|ash|bash|dash|ksh|pdksh|rbash|zsh)[0-9\.]*([ \t].*)?$'
# colours
colour bash_comment 0.2 0.4 0.64
colour bash_fixme 1.0 0.5 0.0
colour bash_literal 1.0 0.2 0.8
colour bash_string 0.8 0.0 0.0
colour bash_subshell 0.46 0.31 0.48
colour bash_escapedchar 0.46 0.31 0.48
colour bash_variable 0.02 0.6 0.6
colour bash_keyword 0.77 0.63 0.0
colour bash_punctuation 0.5 0.5 0.5
colour bash_function 0.02 0.6 0.6
# keywords
syntax_pattern normal expr bash_keyword '\b(alias|bg|bind|break|builtin|caller|case|cd|command|compgen|complete|continue|declare|dirs|disown|do|done|echo|elif|else|enable|esac|eval|exec|exit|export|fc|fg|fi|for|getopts|hash|help|history|if|in|jobs|kill|let|local|logout|popd|printf|pushd|pwd|read|readonly|return|select|set|shift|shopt|source|suspend|test|then|time|times|trap|type|typeset|ulimit|umask|unalias|unset|until|wait|while)\b'
# function/class definitions
syntax_pattern normal declaration bash_keyword '\b(function)\b'
syntax_pattern declaration declaration2 text '[ \t]+'
syntax_pattern declaration expr text ''
syntax_pattern declaration2 expr bash_function '\b[a-z_][a-z_0-9]*\b' ignorecase
syntax_pattern declaration2 normal text ''
# whitespace/comments
syntax_pattern normal comment bash_comment '#'
syntax_pattern comment normal bash_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment bash_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment bash_comment '.[^TFX\r\n]*'
syntax_pattern normal expr bash_comment ''
syntax_pattern expr normal text '[ \t\r\n]+'
# '-style strings
syntax_pattern expr single_string bash_string "'"
syntax_pattern single_string expr bash_string "'"
syntax_pattern single_string single_string bash_string "[^']+"
# "-style strings
syntax_pattern expr double_string bash_string '"'
syntax_pattern double_string expr bash_string '"'
syntax_pattern double_string double_subshell_string bash_subshell '`'
syntax_pattern double_string double_string bash_variable '\$([\*@#\?\-\$!]|[a-z_0-9]+|\{[a-z_0-9]+\})' ignorecase
syntax_pattern double_string double_string bash_escapedchar '(\\(\r?\n|.))+'
syntax_pattern double_string double_string bash_string '.[^\\"\$`]*'
# subshell within "-style strings
syntax_pattern double_subshell_string double_string bash_subshell '`'
syntax_pattern double_subshell_string double_subshell_string bash_escapedchar '(\\.)+'
syntax_pattern double_subshell_string double_subshell_string bash_variable '\$([\*@#\?\-\$!]|[a-z_0-9]+|\{[a-z_0-9]+\})' ignorecase
syntax_pattern double_subshell_string double_subshell_string bash_subshell '.[^\\`\$]*'
# subshell
syntax_pattern expr subshell_string bash_subshell '`'
syntax_pattern subshell_string expr bash_subshell '`'
syntax_pattern subshell_string subshell_string bash_variable '\$([\*@#\?\-\$!]|[a-z_0-9]*|{[a-z_0-9]*})' ignorecase
syntax_pattern subshell_string subshell_string bash_escapedchar '(\\(\r?\n|.))+'
syntax_pattern subshell_string subshell_string bash_subshell '.[^\\`\$]*'
# escaped character
syntax_pattern expr expr bash_escapedchar '(\\(\r?\n|.))+'
# punctuation
syntax_pattern expr normal bash_punctuation '[!\|&;\(\)<>]+'
syntax_pattern expr expr bash_punctuation '[\{\}=\[\]]+'
# literal
syntax_pattern expr expr bash_literal '\b[0-9]+\b'
# environment variables
syntax_pattern expr expr bash_variable '\$([\*@#\?\-\$!]|[a-z_0-9]+|\{[a-z_0-9]+\})' ignorecase
# parsing optimisation
syntax_pattern expr expr text '[a-z0-9_]+' ignorecase

View File

@ -0,0 +1,80 @@
# C++ syntax file for Diffuse
# Copyright (C) 2008-2013 Derrick Moser <derrick_moser@yahoo.com>
syntax C++ normal text
syntax_files C++ '\.(h|c|C|cc|cxx|c\+\+|cpp)$'
# colours
colour c++_comment 0.2 0.4 0.64
colour c++_fixme 1.0 0.5 0.0
colour c++_keyword 0.77 0.63 0.0
colour c++_type 0.3 0.6 0.02
colour c++_cpp 0.8 0.0 0.0
colour c++_cppkeyword 0.46 0.31 0.48
colour c++_literal 1.0 0.2 0.8
colour c++_string 0.8 0.0 0.0
colour c++_escapedchar 0.46 0.31 0.48
colour c++_punctuation 0.5 0.5 0.5
# preprocessor
syntax_pattern normal cpp c++_cppkeyword '^[ \t]*#[ \t]*(define|elif|else|endif|error|if|ifdef|ifndef|include|line|pragma|undef|warning)\b'
syntax_pattern cpp normal c++_cppkeyword '(\r\n|\r|\n)$'
# whitespace
syntax_pattern normal normal text '[ \t\r\n]+'
# C++ style comments
syntax_pattern normal cpp_comment c++_comment '//'
syntax_pattern cpp cpp_comment c++_comment '//'
syntax_pattern cpp_comment normal c++_comment '(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment c++_comment '\\(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment c++_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern cpp_comment cpp_comment c++_comment '.[^\\TFX\r\n]*'
# C style comments
syntax_pattern normal comment c++_comment '/\*'
syntax_pattern comment normal c++_comment '\*/'
syntax_pattern comment comment c++_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment c++_comment '.[^\*TFX]*'
syntax_pattern cpp comment_cpp c++_comment '/\*'
syntax_pattern comment_cpp cpp c++_comment '\*/'
syntax_pattern comment_cpp comment_cpp c++_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment_cpp comment_cpp c++_comment '.[^\*TFX]*'
# preprocessor args
syntax_pattern cpp cpp c++_cpp '\\(\r\n|\r|\n)$'
syntax_pattern cpp cpp c++_cpp '.[^\\/\r\n]*'
# char
syntax_pattern normal char c++_string "[uUL]?'"
syntax_pattern char normal c++_string "['\\n]"
syntax_pattern char char c++_escapedchar '(\\([0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|.|\n))+'
syntax_pattern char char c++_string ".[^\\\\\\n']*"
# string
syntax_pattern normal string c++_string '(u|u8|U|L)?"'
syntax_pattern string normal c++_string '["\n]'
syntax_pattern string string c++_escapedchar '(\\([0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|.|\n))+'
syntax_pattern string string c++_string '.[^\\\n"]*'
# raw string
syntax_pattern normal raw_string c++_string '(u|u8|U|L)?R"[^\(]*\('
syntax_pattern raw_string normal c++_string '\)[^\)]*"'
syntax_pattern raw_string raw_string c++_string '.[^\)]*'
# literals
syntax_pattern normal normal c++_literal '((([0-9]+\.[0-9]*|\.[0-9]+)([ep][\+\-]?[0-9]+)?|[0-9]+[ep][\+\-]?[0-9]+)[fl]?|(0|[1-9][0-9]*)f|(0x[0-9a-f]+|0[0-7]*|[1-9][0-9]*)(ul?|lu?)?)' ignorecase
syntax_pattern normal normal c++_literal '\b(true|false|M_E|M_LOG2E|M_LOG10E|M_LN2|M_LN10|M_PI|M_PI_2|M_PI_4|M_1_PI|M_2_PI|M_2_SQRTPI|M_SQRT2|M_SQRT1_2|NULL|nullptr)\b'
# typing keywords
syntax_pattern normal normal c++_type '\b(_Alignas|_Atomic|_Bool|_Complex|_Imaginary|_Noreturn|_Thread_local|alignas|auto|bool|char|char16_t|char32_t|class|const|constexpr|double|enum|explicit|export|extern|final|float|inline|int|long|mutable|namespace|noreturn|override|register|restrict|short|signed|static|struct|template|thread_local|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)\b'
# keywords
syntax_pattern normal normal c++_keyword '\b(_Alignof|_Generic|_Static_assert|alignof|and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|decltype|default|delete|do|dynamic_cast|else|for|friend|goto|if|new|noexcept|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_assert|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq)\b'
# punctuation
syntax_pattern normal normal c++_punctuation '[!~%\|\&\^\(\)\<\>\*\-\+=\{\}\[\]:;,\?]+'
syntax_pattern normal normal c++_punctuation '[/\.]'
# parsing optimisation
syntax_pattern normal normal text '[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,72 @@
# C Shell syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax 'C Shell' normal text
syntax_files 'C Shell' '^(.*\.csh|\.t?cshrc)$'
syntax_magic 'C Shell' '^#![ \t]*([^ \t/]*/)*(env[ \t]+)?(t?csh)[0-9\.]*([ \t].*)?$'
# colours
colour csh_comment 0.2 0.4 0.64
colour csh_fixme 1.0 0.5 0.0
colour csh_literal 1.0 0.2 0.8
colour csh_string 0.8 0.0 0.0
colour csh_subshell 0.46 0.31 0.48
colour csh_escapedchar 0.46 0.31 0.48
colour csh_variable 0.02 0.6 0.6
colour csh_keyword 0.77 0.63 0.0
colour csh_punctuation 0.5 0.5 0.5
# whitespace
syntax_pattern normal normal text '[ \t\r\n]+'
# keywords
syntax_pattern normal expr csh_keyword '\b(alias|alloc|bg|bindkey|break|breaksw|bs2cmd|builtins|bye|case|cd|chdir|complete|continue|default|dirs|echo|echotc|else([ \t]if)?|end|endif|endsw|eval|exec|exit|fg|filetest|foreach|getspath|getxvers|glob|goto|hashstat|history|hup|if|inlib|jobs|kill|limit|log|login|logout|ls-F|migrate|newgrp|nice|nohup|notify|onintr|popd|printenv|pushd|rehash|repeat|rootnode|sched|set|setenv|setpath|setspath|settc|setty|setxvers|shift|source|stop|suspend|switch|telltc|termname|then|time|umask|unalias|uncomplete|unhash|universe|unlimit|unset|unsetenv|ver|wait|warp|watchlog|where)\b'
syntax_pattern normal expr text ''
# whitespace/comments
syntax_pattern expr normal text '(\r\n|\r|\n)$'
syntax_pattern expr comment csh_comment '#'
syntax_pattern comment normal csh_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment csh_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment csh_comment '.[^TFX\r\n]*'
# punctuation
syntax_pattern expr normal csh_punctuation '[\|&;\(\)!]+'
syntax_pattern expr expr csh_punctuation '[<>=~\+\-\*/%]+'
# escaped character
syntax_pattern expr expr csh_escapedchar '(\\(\r?\n|.))+'
# environment variables
syntax_pattern expr expr csh_variable '\$([\?#%]?[a-z_0-9]+|\{[\?#%]?[a-z_0-9]+\}|[\*#\?\$!<])' ignorecase
# '-style strings
syntax_pattern expr single_string csh_string "'"
syntax_pattern single_string expr csh_string "'"
syntax_pattern single_string single_string csh_string "[^']+"
# "-style strings
syntax_pattern expr double_string csh_string '"'
syntax_pattern double_string expr csh_string '"'
syntax_pattern double_string double_subshell_string csh_subshell '`'
syntax_pattern double_string double_string csh_variable '\$([\?#%]?[a-z_0-9]+|\{[\?#%]?[a-z_0-9]+\}|[\*#\?\$!<])' ignorecase
syntax_pattern double_string double_string csh_escapedchar '(\\(\r?\n|.))+'
syntax_pattern double_string double_string csh_string '.[^\\"\$`]*'
# subshell within "-style strings
syntax_pattern double_subshell_string double_string csh_subshell '`'
syntax_pattern double_subshell_string double_subshell_string csh_escapedchar '(\\.)+'
syntax_pattern double_subshell_string double_subshell_string csh_variable '\$([\*#\?\$!<]|[\?#%]?[a-z_0-9]+|\{[\?#%]?[a-z_0-9]+\})' ignorecase
syntax_pattern double_subshell_string double_subshell_string csh_subshell '.[^\\`\$]*'
# subshell
syntax_pattern expr subshell_string csh_subshell '`'
syntax_pattern subshell_string expr csh_subshell '`'
syntax_pattern subshell_string subshell_string csh_variable '\$([\?#%]?[a-z_0-9]+|\{[\?#%]?[a-z_0-9]+\}|[\*#\?\$!<])' ignorecase
syntax_pattern subshell_string subshell_string csh_escapedchar '(\\(\r?\n|.))+'
syntax_pattern subshell_string subshell_string csh_subshell '.[^\\`\$]*'
# literal
syntax_pattern expr expr csh_literal '\b[0-9]+\b'
# parsing optimisation
syntax_pattern expr expr text '[a-z0-9_]+' ignorecase

View File

@ -0,0 +1,73 @@
# C# syntax file for Diffuse
# Copyright (C) 2008-2010 Derrick Moser <derrick_moser@yahoo.com>
syntax 'C#' normal text
syntax_files 'C#' '\.cs$'
# colours
colour csharp_comment 0.2 0.4 0.64
colour csharp_fixme 1.0 0.5 0.0
colour csharp_cpp 0.8 0.0 0.0
colour csharp_cppkeyword 0.46 0.31 0.48
colour csharp_import 0.46 0.31 0.48
colour csharp_keyword 0.77 0.63 0.0
colour csharp_type 0.3 0.6 0.02
colour csharp_literal 1.0 0.2 0.8
colour csharp_string 0.8 0.0 0.0
colour csharp_escapedchar 0.46 0.31 0.48
colour csharp_punctuation 0.5 0.5 0.5
# whitespace
syntax_pattern normal normal text '[ \t\r\n]+'
# preprocessor
syntax_pattern normal cpp csharp_cppkeyword '^[ \t]*#[ \t]*(define|elif|else|endif|endregion|error|if|line|region|undef|warning)\b'
syntax_pattern cpp normal csharp_cppkeyword '(\r\n|\r|\n)$'
# preprocessor args
syntax_pattern cpp cpp csharp_cpp '\\(\r\n|\r|\n)$'
syntax_pattern cpp cpp csharp_cpp '.[^\\/\r\n]*'
# C++ style comments
syntax_pattern normal cpp_comment csharp_comment '//'
syntax_pattern cpp_comment normal csharp_comment '(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment csharp_comment '\\(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment csharp_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern cpp_comment cpp_comment csharp_comment '.[^\\TFX\r\n]*'
# C style comments
syntax_pattern normal comment csharp_comment '/\*'
syntax_pattern comment normal csharp_comment '\*/'
syntax_pattern comment comment csharp_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment csharp_comment '.[^\*TFX]*'
# string
syntax_pattern normal string csharp_string '"'
syntax_pattern string normal csharp_string '"'
syntax_pattern string string csharp_escapedchar '(\\([0-7]{1,3}|x[0-9a-fA-F]{1,4}|u[0-9a-fA-F]{1,4}|U[0-9a-fA-F]{1,8}|.))+'
syntax_pattern string string csharp_string '.[^\\"]*'
# verbatim string
syntax_pattern normal verbatim csharp_string '@"'
syntax_pattern verbatim verbatim csharp_string '[^"]+'
syntax_pattern verbatim verbatim csharp_escapedchar '""'
syntax_pattern verbatim normal csharp_string '"'
# literals
syntax_pattern normal normal csharp_literal '((([0-9]+\.[0-9]*|\.[0-9]+)(e[\+\-]?[0-9]+)?|[0-9]+e[\+\-]?[0-9]+)[dfm]?|[0-9]+[dfm]|(0x[0-9a-f]+|0[0-7]*|[1-9][0-9]*)(ul?|lu?)?)' ignorecase
syntax_pattern normal normal csharp_literal '\b(true|false|null)\b'
# import keywords
syntax_pattern normal normal csharp_import '\b(using)\b'
# typing keywords
syntax_pattern normal normal csharp_type '\b(abstract|bool|byte|char|class|const|decimal|delegate|double|enum|event|extern|float|int|interface|internal|long|namespace|object|out|override|params|private|protected|public|readonly|sbyte|sealed|short|static|string|struct|uint|ulong|ushort|virtual|void|volatile)\b'
# keywords
syntax_pattern normal normal csharp_keyword '\b(as|base|break|case|catch|checked|continue|default|do|else|explicit|finally|fixed|for|foreach|goto|if|implicit|in|is|lock|new|operator|ref|return|sizeof|stackalloc|switch|this|throw|try|typeof|unchecked|unsafe|while)\b'
# punctuation
syntax_pattern normal normal csharp_punctuation '[!~%\|\&\^\(\)\<\>\*\-\+=\{\}\[\]:;,\?]+'
syntax_pattern normal normal csharp_punctuation '[/\.]'
# parsing optimisation
syntax_pattern normal normal text '@?[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,60 @@
# CSS syntax file for Diffuse
# Copyright (C) 2008 Derrick Moser <derrick_moser@yahoo.com>
syntax CSS normal text
syntax_files CSS '\.css$'
# colours
colour css_comment 0.2 0.4 0.64
colour css_fixme 1.0 0.5 0.0
colour css_rule 0.46 0.31 0.48
colour css_block 0.02 0.6 0.6
colour css_selector 0.77 0.63 0.0
colour css_property 0.3 0.6 0.02
colour css_important 0.46 0.31 0.48
colour css_literal 1.0 0.2 0.8
colour css_string 0.8 0.0 0.0
colour css_escapedchar 0.46 0.31 0.48
colour css_punctuation 0.5 0.5 0.5
# whitespace/comments
syntax_pattern normal normal text '[ \t\r\n]+'
syntax_pattern property property text '[ \t\r\n]+'
syntax_pattern normal comment css_comment '/\*'
syntax_pattern comment normal css_comment '\*/'
syntax_pattern comment comment css_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment css_comment '.[^\*TFX]*'
syntax_pattern property property_comment css_comment '/\*'
syntax_pattern property_comment property css_comment '\*/'
syntax_pattern property_comment property_comment css_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern property_comment property_comment css_comment '.[^\*TFX]*'
# rules
syntax_pattern normal normal css_rule '@[a-z0-9\-_]*' ignorecase
# selectors
syntax_pattern normal property css_block '\{'
syntax_pattern normal normal css_selector '[a-z0-9_\-\*]+' ignorecase
syntax_pattern normal normal css_punctuation '[\|\.#,\[\]\(\)=:;>]+'
syntax_pattern normal string css_string '"'
syntax_pattern string normal css_string '"'
syntax_pattern string string css_escapedchar '\\([0-9][a-f]{1,6}|.)' ignorecase
syntax_pattern string string css_string '.[^"]*'
syntax_pattern normal singlestring css_string "'"
syntax_pattern singlestring normal css_string "'"
syntax_pattern singlestring singlestring css_escapedchar '\\([0-9][a-f]{1,6}|.)' ignorecase
syntax_pattern singlestring singlestring css_string ".[^']*"
# property
syntax_pattern property normal css_block '\}'
syntax_pattern property property css_literal '([\+\-]?([0-9]+(\.[0-9]*)?|\.[0-9]+)(em|pt|px|%)?|#[0-9a-f]+)' ignorecase
syntax_pattern property property css_important '![ \t]*important\b'
syntax_pattern property property css_property '[a-z0-9_\-]+' ignorecase
syntax_pattern property property css_punctuation '[,\(\)=:;]+'
syntax_pattern property property_string css_string '"'
syntax_pattern property_string property css_string '"'
syntax_pattern property_string property_string css_escapedchar '\\([0-9][a-f]{1,6}|.)' ignorecase
syntax_pattern property_string property_string css_string '.[^"]*'
syntax_pattern property property_singlestring css_string "'"
syntax_pattern property_singlestring property css_string "'"
syntax_pattern property_singlestring property_singlestring css_escapedchar '\\([0-9][a-f]{1,6}|.)' ignorecase
syntax_pattern property_singlestring property_singlestring css_string ".[^']*"

View File

@ -0,0 +1,62 @@
# Erlang syntax file for Diffuse
# Copyright (C) 2012 Derrick Moser <derrick_moser@yahoo.com>
syntax Erlang init text
syntax_files Erlang '\.[eh]rl$'
# colours
colour erlang_comment 0.2 0.4 0.64
colour erlang_fixme 1.0 0.5 0.0
colour erlang_import 0.46 0.31 0.48
colour erlang_keyword 0.77 0.63 0.0
colour erlang_atom 0.3 0.6 0.02
colour erlang_literal 1.0 0.2 0.8
colour erlang_string 0.8 0.0 0.0
colour erlang_escapedchar 0.46 0.31 0.48
colour erlang_punctuation 0.5 0.5 0.5
# whitespace
syntax_pattern init init text '[ \t\r\n]+'
# comments
syntax_pattern init init_comment erlang_comment '%'
syntax_pattern init_comment init erlang_comment '(\r\n|\r|\n)$'
syntax_pattern init_comment init_comment erlang_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern init_comment init_comment erlang_comment '.[^\\TFX\r\n]*'
# import keywords
syntax_pattern init normal erlang_import '-([a-z_][a-z_0-9]*)\b' ignorecase
syntax_pattern init normal erlang_import ''
# whitespace
syntax_pattern normal normal text '[ \t\r\n]+'
# comments
syntax_pattern normal comment erlang_comment '%'
syntax_pattern comment normal erlang_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment erlang_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment erlang_comment '.[^\\TFX\r\n]*'
# escaped atoms
syntax_pattern normal char erlang_atom "'"
syntax_pattern char normal erlang_atom "'"
syntax_pattern char char erlang_escapedchar '(\\(x([0-9a-fA-F]{2}|\{[0-9a-fA-F]+\})|[0-7]{1,3}|\^[a-zA-Z]|.))+'
syntax_pattern char char erlang_atom ".[^\\\\']*"
# string
syntax_pattern normal string erlang_string '"'
syntax_pattern string normal erlang_string '"'
syntax_pattern string string erlang_escapedchar '(\\(x([0-9a-fA-F]{2}|\{[0-9a-fA-F]+\})|[0-7]{1,3}|\^[a-zA-Z]|.))+'
syntax_pattern string string erlang_string '.[^\\"]*'
# literals
syntax_pattern normal normal erlang_literal '(\$(\\(x([0-9a-fA-F]{2}|\{[0-9a-fA-F]+\})|[0-7]{1,3}|\^[a-zA-Z]|.)|.)|[0-9]+(#[0-9a-f]+|(\.[0-9]+)?(e[\+\-]?[0-9]+)?)?)' ignorecase
# keywords
syntax_pattern normal normal erlang_keyword '\b(after|and|andalso|band|begin|bnot|bor|bsl|bsr|bxor|case|catch|cond|div|end|fun|if|let|not|of|or|orelse|query|receive|rem|try|when|xor)\b'
# punctuation
syntax_pattern normal normal erlang_punctuation '[\[\]\{\}\(\)\|,;:\<\>/\+\-\*!\?#=]+'
syntax_pattern normal init erlang_punctuation '\.'
# parsing optimisation
syntax_pattern normal normal text '[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,62 @@
# Fortran syntax file for Diffuse
# Copyright (C) 2009 Derrick Moser <derrick_moser@yahoo.com>
syntax Fortran normal text
syntax_files Fortran '\.[fF]9[05]$'
# colours
colour fortran_cpp 0.8 0.0 0.0
colour fortran_cppkeyword 0.46 0.31 0.48
colour fortran_comment 0.2 0.4 0.64
colour fortran_fixme 1.0 0.5 0.0
colour fortran_keyword 0.77 0.63 0.0
colour fortran_type 0.3 0.6 0.02
colour fortran_import 0.46 0.31 0.48
colour fortran_literal 1.0 0.2 0.8
colour fortran_string 0.8 0.0 0.0
colour fortran_escapedchar 0.46 0.31 0.48
colour fortran_punctuation 0.5 0.5 0.5
# preprocessor
syntax_pattern normal cpp fortran_cppkeyword '^[ \t]*#[ \t]*(define|undef|include|[0-9]+|ifdef|ifndef|elif|else|endif|if)\b'
syntax_pattern cpp normal fortran_cpp '(\r\n|\r|\n)$'
syntax_pattern cpp cpp fortran_cpp '.[^\r\n]*'
# whitespace/comments
syntax_pattern normal normal text '[ \t\r\n]+'
syntax_pattern normal comment fortran_comment '!'
syntax_pattern comment normal fortran_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment fortran_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment fortran_comment '.[^TFX\r\n]*'
# "-style strings
syntax_pattern normal double_string fortran_string '(([0-9]+|[a-z_][a-z_0-9]*)_)?"' ignorecase
syntax_pattern double_string double_string fortran_escapedchar '("")+'
syntax_pattern double_string normal fortran_string '"'
syntax_pattern double_string double_string fortran_string '[^"]+'
# '-style strings
syntax_pattern normal single_string fortran_string "(([0-9]+|[a-z_][a-z_0-9]*)_)?'" ignorecase
syntax_pattern single_string single_string fortran_escapedchar "('')+"
syntax_pattern single_string normal fortran_string "'"
syntax_pattern single_string single_string fortran_string "[^']+"
# literals
syntax_pattern normal normal fortran_literal "(((\\.[0-9]+|[0-9]+(\\.[0-9]*)?)[ed][\\-\\+]?[0-9]+|\\.[0-9]+|[0-9]+(\\.[0-9]+)?)(_([0-9]+|[a-z_][a-z_0-9]*))?\b|b('[01]+'|\"[01]+\")|o('[0-7]+'|\"[0-7]+\")|z('[0-9a-f]+'|\"[0-9a-f]+\"))" ignorecase
syntax_pattern normal normal fortran_literal '\.(false|true)\.(_([0-9]+|[a-z_][a-z_0-9]*))?' ignorecase
# types
syntax_pattern normal normal fortran_type '\b(abstract|allocateable|assignment|asynchronous|bind|class|character|common|complex|data|deferred|dimension|double[ \t]*precision|(end[ \t]*)?(enum|interface|type)|entry|enumerator|equivalence|extends|external|final|format|generic|implicit|import|integer|intent|intrinsic|logical|module[ \t]*procedure|namelist|non_overridable|nopass|operator|optional|parameter|pass|pointer|private|procedure|protected|public|real|record|save|sequence|target|use|value|volatile)\b' ignorecase
# keywords
syntax_pattern normal normal fortran_keyword '\b(allocate|assign|backspace|call|case|close|contains|continue|cycle|deallocate|do[ \t]+while|elemental|else|else(if|where)?|(end)?(associate|block[ \t]*data|do|forall|function|if|module|program|select|subroutine|where)|end|endfile|exit|flush|go[ \t]*to|inquire|nullify|open|pause|print|pure|read|recursive|return|rewind|select[ \t]*case|select[ \t]+type|stop|wait|write)\b' ignorecase
syntax_pattern normal normal fortran_keyword '\.(eq|ne|gt|ge|lt|le|not|and|or|eqv|neqv)\.' ignorecase
# special kewords
syntax_pattern normal normal fortran_import '\b(include)\b' ignorecase
# punctuation
syntax_pattern normal normal fortran_punctuation '[=\+\-\*/\(\),:%\&;\<\>\[\]]+'
syntax_pattern normal normal fortran_punctuation '\.'
# parsing optimisation
syntax_pattern normal normal text '[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,25 @@
# Gettext syntax file for Diffuse
# Copyright (C) 2008-2010 Derrick Moser <derrick_moser@yahoo.com>
syntax Gettext normal text
syntax_files Gettext '\.pot?$'
# colours
colour gettext_comment 0.2 0.4 0.64
colour gettext_fixme 1.0 0.5 0.0
colour gettext_string 0.8 0.0 0.0
colour gettext_escapedchar 0.46 0.31 0.48
# comments
syntax_pattern normal comment gettext_comment '#'
syntax_pattern comment normal gettext_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment gettext_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment gettext_comment '.[^\\TFX\r\n]*'
# string
syntax_pattern normal string gettext_string '"'
syntax_pattern string normal gettext_string '"'
syntax_pattern string string gettext_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|.))+' ignorecase
syntax_pattern string string gettext_string '.[^\\"]*'
# parsing optimisation
syntax_pattern normal normal text '[ \ta-z_0-9]+' ignorecase

View File

@ -0,0 +1,59 @@
# GLSL syntax file for Diffuse
# Copyright (C) 2009-2011 Derrick Moser <derrick_moser@yahoo.com>
syntax GLSL normal text
syntax_files GLSL '\.(frag|geom|glsl|vert)$'
# colours
colour glsl_comment 0.2 0.4 0.64
colour glsl_fixme 1.0 0.5 0.0
colour glsl_keyword 0.77 0.63 0.0
colour glsl_type 0.3 0.6 0.02
colour glsl_cpp 0.8 0.0 0.0
colour glsl_cppkeyword 0.46 0.31 0.48
colour glsl_literal 1.0 0.2 0.8
colour glsl_punctuation 0.5 0.5 0.5
# preprocessor
syntax_pattern normal cpp glsl_cppkeyword '^[ \t]*#[ \t]*(define|elif|else|endif|error|extension|if|ifdef|ifndef|line|pragma|undef|version)\b'
syntax_pattern cpp normal glsl_cppkeyword '(\r\n|\r|\n)$'
syntax_pattern normal normal text '[ \t\r\n]+'
# C++ style comments
syntax_pattern normal cpp_comment glsl_comment '//'
syntax_pattern cpp cpp_comment glsl_comment '//'
syntax_pattern cpp_comment normal glsl_comment '(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment glsl_comment '\\(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment glsl_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern cpp_comment cpp_comment glsl_comment '.[^\\TFX\r\n]*'
# C style comments
syntax_pattern normal comment glsl_comment '/\*'
syntax_pattern comment normal glsl_comment '\*/'
syntax_pattern comment comment glsl_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment glsl_comment '.[^\*TFX]*'
syntax_pattern cpp comment_cpp glsl_comment '/\*'
syntax_pattern comment_cpp cpp glsl_comment '\*/'
syntax_pattern comment_cpp comment_cpp glsl_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment_cpp comment_cpp glsl_comment '.[^\*TFX]*'
# preprocessor args
syntax_pattern cpp cpp glsl_cpp '\\(\r\n|\r|\n)$'
syntax_pattern cpp cpp glsl_cpp '.[^\\/\r\n]*'
# literals
syntax_pattern normal normal glsl_literal '((([0-9]+\.[0-9]*|\.[0-9]+)([eE][\+\-]?[0-9]+)?|[0-9]+[eE][\+\-]?[0-9]+)[fF]?|(0x[0-9a-f]+|0[0-7]*|[1-9][0-9]*)[uU]?)' ignorecase
syntax_pattern normal normal glsl_literal '\b(true|false)\b'
# typing keywords
syntax_pattern normal normal glsl_type '\b(active|attribute|bool|centroid|class|common|const|double|enum|extern|external|filter|fixed|flat|float|half|highp|image([12]D(Array)?(Shadow)?|3D|Buffer|Cube)|[iu]image([12]D(Array)?|3D|Buffer|Cube)|in|inline|inout|input|int|interface|invariant|[iu]sampler([12]D(Array)?|3D|2DRect|Buffer|Cube)|layout|long|lowp|mat[2-4](x[2-4])?|mediump|namespace|noinline|noperspective|out|output|packed|partition|precision|row_major|sampler([12]D(Array)?(Shadow)?|3D|Cube(Shadow)?|2DRect(Shadow)?|3DRect|Buffer)|short|smooth|static|struct|superp|template|typedef|uniform|union|unsigned|varying|[bdfhi]?vec[2-4]|void|volatile)\b'
# keywords
syntax_pattern normal normal glsl_keyword '\b(asm|break|cast|continue|default|discard|do|else|for|goto|if|public|return|sizeof|switch|this|using|while)\b'
# punctuation
syntax_pattern normal normal glsl_punctuation '[!~%\|\&\^\(\)\<\>\*\-\+=\{\}\[\]:;,\?]+'
syntax_pattern normal normal glsl_punctuation '[/\.]'
# parsing optimisation
syntax_pattern normal normal text '[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,225 @@
# HTML syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax HTML normal text
syntax_files HTML '\.html$'
# colours
colour html_comment 0.2 0.4 0.64
colour html_fixme 1.0 0.5 0.0
colour html_escapedchar 0.77 0.63 0.0
colour html_processingtag 0.46 0.31 0.48
colour html_processingtagname 0.3 0.6 0.02
colour html_tag 0.02 0.6 0.6
colour html_tagname 0.77 0.63 0.0
colour html_punctuation 0.5 0.5 0.5
colour html_attribute 0.3 0.6 0.02
colour html_string 0.8 0.0 0.0
colour html_script 0.46 0.31 0.48
colour html_style 0.46 0.31 0.48
# script colours
colour html_script_comment 0.2 0.4 0.64
colour html_script_fixme 1.0 0.5 0.0
colour html_script_import 0.46 0.31 0.48
colour html_script_keyword 0.77 0.63 0.0
colour html_script_type 0.3 0.6 0.02
colour html_script_regex 0.8 0.0 0.0
colour html_script_regexsep 0.77 0.63 0.0
colour html_script_literal 1.0 0.2 0.8
colour html_script_string 0.8 0.0 0.0
colour html_script_escapedchar 0.46 0.31 0.48
colour html_script_punctuation 0.5 0.5 0.5
# style colours
colour html_style_comment 0.2 0.4 0.64
colour html_style_fixme 1.0 0.5 0.0
colour html_style_rule 0.46 0.31 0.48
colour html_style_block 0.02 0.6 0.6
colour html_style_selector 0.77 0.63 0.0
colour html_style_property 0.3 0.6 0.02
colour html_style_important 0.46 0.31 0.48
colour html_style_literal 1.0 0.2 0.8
colour html_style_string 0.8 0.0 0.0
colour html_style_escapedchar 0.46 0.31 0.48
colour html_style_punctuation 0.5 0.5 0.5
# whitespace/comments
syntax_pattern normal normal text '[ \t\r\n]+'
syntax_pattern normal comment html_comment '<!--'
syntax_pattern comment normal html_comment '-->'
syntax_pattern comment comment html_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment html_comment '.[^TFX\-]*'
#
# script
#
syntax_pattern normal script html_script '<script\b[^>]*>'
syntax_pattern script normal html_script '</script>'
# whitespace
syntax_pattern script script text '[ \t\r\n]+'
syntax_pattern script_expr normal html_script '</script>'
syntax_pattern script_expr script_expr text '[ \t\r\n]+'
# C++ style comments
syntax_pattern script script_cpp_comment html_script_comment '//'
syntax_pattern script_cpp_comment normal html_script '</script>'
syntax_pattern script_expr script_cpp_comment html_script_comment '//'
syntax_pattern script_cpp_comment script html_script_comment '(\r\n|\r|\n)$'
syntax_pattern script_cpp_comment script_cpp_comment html_script_comment '\\(\r\n|\r|\n)$'
syntax_pattern script_cpp_comment script_cpp_comment html_script_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern script_cpp_comment script_cpp_comment html_script_comment '.[^\\TFX\r\n<]*'
# C style comments
syntax_pattern script script_comment html_script_comment '/\*'
syntax_pattern script_comment normal html_script '</script>'
syntax_pattern script_expr script_comment html_script_comment '/\*'
syntax_pattern script_comment script html_script_comment '\*/'
syntax_pattern script_comment script_comment html_script_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern script_comment script_comment html_script_comment '.[^\*TFX<]*'
# char
syntax_pattern script script_char html_script_string "'"
syntax_pattern script_char normal html_script '</script>'
syntax_pattern script_char script_char html_script_escapedchar '(\\([0-7]{1,3}|u[0-9a-f]{1,4}|[^<]))+' ignorecase
syntax_pattern script_char script_expr html_script_string "'"
syntax_pattern script_char script_char html_script_string ".[^\\\\'<]*"
# string
syntax_pattern script script_string html_script_string '"'
syntax_pattern script_string normal html_script '</script>'
syntax_pattern script_string script_string html_script_escapedchar '(\\([0-7]{1,3}|u[0-9a-f]{1,4}|[^<]))+' ignorecase
syntax_pattern script_string script_expr html_script_string '"'
syntax_pattern script_string script_string html_script_string '.[^\\"<]*'
# literals
syntax_pattern script script_expr html_script_literal '(((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)(e[\+\-]?[0-9]+)?|0[0-7]*|0x[0-9a-f]+)' ignorecase
syntax_pattern script script_expr html_script_literal '\b(true|false|Infinity|NaN|null|undefined)\b'
# import keywords
syntax_pattern script script html_script_import '\b(import|package)\b'
# typing keywords
syntax_pattern script script html_script_type '\b(abstract|boolean|byte|char|class|const|double|enum|export|float|function|int|interface|long|native|private|protected|public|short|static|synchronized|transient|var|void|volatile)\b'
# keywords
syntax_pattern script script html_script_keyword '\b(break|case|catch|continue|debugger|default|delete|do|else|extends|final|finally|for|goto|if|implements|in|instanceof|new|return|switch|throw|throws|try|typeof|while|with)\b'
syntax_pattern script script_expr html_script_keyword '\b(super|this)\b'
# regular expressions
syntax_pattern script script_regex html_script_regexsep '/'
syntax_pattern script_regex normal html_script '</script>'
syntax_pattern script_regex script_expr html_script_regexsep '/[gim]*'
syntax_pattern script_regex script_regex html_script_escapedchar '\\(c[^<]|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{1,4}|[^<])'
syntax_pattern script_regex script_regex html_script_regex '.[^\\/<]*'
# punctuation
syntax_pattern script script html_script_punctuation '[\^\*%~!\+\-=\|\&\(\{\[:;,\?\>\}\.]+'
syntax_pattern script script html_script_punctuation '<'
syntax_pattern script script_expr html_script_punctuation '[\)\]]+'
syntax_pattern script_expr script html_script_punctuation '/'
# parsing optimisation
syntax_pattern script script_expr text '.[\$a-z_][\$a-z_0-9]*' ignorecase
syntax_pattern script_expr script html_script_punctuation ''
#
# style
#
syntax_pattern normal style html_style '<style\b[^>]*>'
syntax_pattern style normal html_style '</style>'
# whitespace and comments
syntax_pattern style style text '[ \t\r\n]+'
syntax_pattern style_property style_property text '[ \t\r\n]+'
syntax_pattern style_property normal html_style '</style>'
syntax_pattern style style_comment html_style_comment '/\*'
syntax_pattern style_comment normal html_style '</style>'
syntax_pattern style_comment style html_style_comment '\*/'
syntax_pattern style_comment style_comment html_style_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern style_comment style_comment html_style_comment '.[^\*TFX<]*'
syntax_pattern style_property style_property_comment html_style_comment '/\*'
syntax_pattern style_property_comment style_property html_style_comment '\*/'
syntax_pattern style_property_comment style_property_comment html_style_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern style_property_comment style_property_comment html_style_comment '.[^\*TFX<]*'
# rules
syntax_pattern style style html_style_rule '@[a-z0-9\-_]*' ignorecase
# selectors
syntax_pattern style style_property html_style_block '\{'
syntax_pattern style style html_style_selector '[a-z0-9_\-\*]+' ignorecase
syntax_pattern style style html_style_punctuation '[\|\.#,\[\]\(\)=:;>]+'
syntax_pattern style style_string html_style_string '"'
syntax_pattern style_string normal html_style '</style>'
syntax_pattern style_string style html_style_string '"'
syntax_pattern style_string style_string html_style_escapedchar '\\([0-9][a-f]{1,6}|.)' ignorecase
syntax_pattern style_string style_string html_style_string '.[^"<]*'
syntax_pattern style style_singlestring html_style_string "'"
syntax_pattern style_singlestring normal html_style '</style>'
syntax_pattern style_singlestring style html_style_string "'"
syntax_pattern style_singlestring style_singlestring html_style_escapedchar '\\([0-9][a-f]{1,6}|[^<])' ignorecase
syntax_pattern style_singlestring style_singlestring html_style_string ".[^'<]*"
# property
syntax_pattern style_property style html_style_block '\}'
syntax_pattern style_property style_property html_style_literal '([\+\-]?([0-9]+(\.[0-9]*)?|\.[0-9]+)(em|pt|px|%)?|#[0-9a-f]+)' ignorecase
syntax_pattern style_property style_property html_style_important '![ \t]*important\b'
syntax_pattern style_property style_property html_style_property '[a-z0-9_\-]+' ignorecase
syntax_pattern style_property style_property html_style_punctuation '[,\(\)=:;]+'
syntax_pattern style_property style_property_string html_style_string '"'
syntax_pattern style_property_string normal html_style '</style>'
syntax_pattern style_property_string style_property html_style_string '"'
syntax_pattern style_property_string style_property_string html_style_escapedchar '\\([0-9][a-f]{1,6}|[^<])' ignorecase
syntax_pattern style_property_string style_property_string html_style_string '.[^"<]*'
syntax_pattern style_property style_property_singlestring html_style_string "'"
syntax_pattern style_property_singlestring normal html_style '</style>'
syntax_pattern style_property_singlestring style_property html_style_string "'"
syntax_pattern style_property_singlestring style_property_singlestring html_style_escapedchar '\\([0-9][a-f]{1,6}|[^<])' ignorecase
syntax_pattern style_property_singlestring style_property_singlestring html_style_string ".[^'<]*"
# parsing optimisation
syntax_pattern style style html_style '.'
#
# processing
#
syntax_pattern normal process html_processingtag '<\?'
syntax_pattern process process text '[ \t\r\n]+'
syntax_pattern process process_attribs html_processingtagname '\b[a-z][a-z_0-9]*([ \t]*:[ \t]*[a-z][a-z_0-9]*)?\b' ignorecase
syntax_pattern process_attribs normal html_processingtag '\?>'
syntax_pattern process_attribs process_attribs text '[ \t\r\n]+'
syntax_pattern process_attribs process_attribs html_punctuation '='
syntax_pattern process_attribs process_attribs html_attribute '[a-z_0-9\-:\.]+' ignorecase
syntax_pattern process_attribs process_string html_string '"'
syntax_pattern process_string process_attribs html_string '"'
syntax_pattern process_string process_string html_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern process_string process_string html_string '.[^\&"]*'
syntax_pattern process_attribs process_singlestring html_string "'"
syntax_pattern process_singlestring process_attribs html_string "'"
syntax_pattern process_singlestring process_singlestring html_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern process_singlestring process_singlestring html_string ".[^\\&']*"
# tags
syntax_pattern normal tag html_tag '<[!/]?'
syntax_pattern tag tag text '[ \t\r\n]+'
syntax_pattern tag tag_attribs html_tagname '\b[a-z][a-z_0-9]*([ \t]*:[ \t]*[a-z][a-z_0-9]*)*\b' ignorecase
syntax_pattern tag tag_attribs text ''
syntax_pattern tag_attribs normal html_tag '/?>'
syntax_pattern tag_attribs tag_attribs text '[ \t\r\n]+'
syntax_pattern tag_attribs tag_attribs html_punctuation '='
syntax_pattern tag_attribs tag_attribs html_attribute '[a-z_0-9\-:\.]+' ignorecase
syntax_pattern tag_attribs tag_string html_string '"'
syntax_pattern tag_string tag_attribs html_string '"'
syntax_pattern tag_string tag_string html_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern tag_string tag_string html_string '.[^\&"]*'
syntax_pattern tag_attribs tag_singlestring html_string "'"
syntax_pattern tag_singlestring tag_attribs html_string "'"
syntax_pattern tag_singlestring tag_singlestring html_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern tag_singlestring tag_singlestring html_string ".[^\\&']*"
# text/parsing optimisation
syntax_pattern normal normal html_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern normal normal text '.[^\&<]*'

View File

@ -0,0 +1,24 @@
# INI syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax INI normal text
syntax_files INI '\.(cfg|conf|desktop|ini|properties|url)$'
# colours
colour ini_comment 0.2 0.4 0.64
colour ini_fixme 1.0 0.5 0.0
colour ini_section 0.46 0.31 0.48
colour ini_variable 0.3 0.6 0.02
colour ini_value 0.0 0.0 0.0
# comments
syntax_pattern normal comment ini_comment '^[#;]'
syntax_pattern comment normal ini_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment ini_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment ini_comment '.[^TFX\r\n]*'
# variable-value
syntax_pattern normal normal ini_section '\[.*\]' ignorecase
syntax_pattern normal normal ini_variable '^[^:=]+[:=]' ignorecase
# optimisation
syntax_pattern normal normal text '.+'

View File

@ -0,0 +1,63 @@
# Java syntax file for Diffuse
# Copyright (C) 2008-2011 Derrick Moser <derrick_moser@yahoo.com>
syntax Java normal text
syntax_files Java '\.java$'
# colours
colour java_comment 0.2 0.4 0.64
colour java_fixme 1.0 0.5 0.0
colour java_import 0.46 0.31 0.48
colour java_keyword 0.77 0.63 0.0
colour java_type 0.3 0.6 0.02
colour java_literal 1.0 0.2 0.8
colour java_string 0.8 0.0 0.0
colour java_escapedchar 0.46 0.31 0.48
colour java_punctuation 0.5 0.5 0.5
# whitespace
syntax_pattern normal normal text '[ \t\r\n]+'
# C++ style comments
syntax_pattern normal cpp_comment java_comment '//'
syntax_pattern cpp_comment normal java_comment '(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment java_comment '\\(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment java_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern cpp_comment cpp_comment java_comment '.[^\\TFX\r\n]*'
# C style comments
syntax_pattern normal comment java_comment '/\*'
syntax_pattern comment normal java_comment '\*/'
syntax_pattern comment comment java_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment java_comment '.[^\*TFX]*'
# char
syntax_pattern normal char java_string "'"
syntax_pattern char normal java_string "'"
syntax_pattern char char java_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|u[0-9a-f]{1,4}|.))+' ignorecase
syntax_pattern char char java_string ".[^\\\\']*"
# string
syntax_pattern normal string java_string '"'
syntax_pattern string normal java_string '"'
syntax_pattern string string java_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|u[0-9a-f]{1,4}|.))+' ignorecase
syntax_pattern string string java_string '.[^\\"]*'
# literals
syntax_pattern normal normal java_literal '((([0-9]+\.[0-9]*|\.[0-9]+)(e[\+\-]?[0-9]+)?|[0-9]+e[\+\-]?[0-9]+)[fd]?|(0|[1-9][0-9]*)[fd]|(0x[0-9a-f]+|0[0-7]*|[1-9][0-9]*)l?)' ignorecase
syntax_pattern normal normal java_literal '\b(true|false|null)\b'
# import keywords
syntax_pattern normal normal java_import '\b(import|package)\b'
# typing keywords
syntax_pattern normal normal java_type '\b(abstract|boolean|byte|char|class|const|double|enum|extends|final|float|implements|int|interface|long|native|private|protected|public|short|static|strictfp|synchronized|throws|transient|void|volatile)\b'
# keywords
syntax_pattern normal normal java_keyword '\b(assert|break|case|catch|continue|default|do|else|finally|for|goto|if|instanceof|new|return|super|switch|this|throw|try|while)\b'
# punctuation
syntax_pattern normal normal java_punctuation '[!~%\|\&\^\(\)\<\>\*\-\+=\{\}\[\]:;,\?]+'
syntax_pattern normal normal java_punctuation '[/\.]'
# parsing optimisation
syntax_pattern normal normal text '[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,78 @@
# JavaScript syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax JavaScript normal text
syntax_files JavaScript '\.js$'
# colours
colour javascript_comment 0.2 0.4 0.64
colour javascript_fixme 1.0 0.5 0.0
colour javascript_import 0.46 0.31 0.48
colour javascript_keyword 0.77 0.63 0.0
colour javascript_type 0.3 0.6 0.02
colour javascript_regex 0.8 0.0 0.0
colour javascript_regexsep 0.77 0.63 0.0
colour javascript_literal 1.0 0.2 0.8
colour javascript_string 0.8 0.0 0.0
colour javascript_escapedchar 0.46 0.31 0.48
colour javascript_punctuation 0.5 0.5 0.5
# whitespace
syntax_pattern normal normal text '[ \t\r\n]+'
syntax_pattern expr expr text '[ \t\r\n]+'
# C++ style comments
syntax_pattern normal cpp_comment javascript_comment '//'
syntax_pattern expr cpp_comment javascript_comment '//'
syntax_pattern cpp_comment normal javascript_comment '(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment javascript_comment '\\(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment javascript_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern cpp_comment cpp_comment javascript_comment '.[^\\TFX\r\n]*'
# C style comments
syntax_pattern normal comment javascript_comment '/\*'
syntax_pattern expr comment javascript_comment '/\*'
syntax_pattern comment normal javascript_comment '\*/'
syntax_pattern comment comment javascript_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment javascript_comment '.[^\*TFX]*'
# char
syntax_pattern normal char javascript_string "'"
syntax_pattern char char javascript_escapedchar '(\\([0-7]{1,3}|u[0-9a-f]{1,4}|.))+' ignorecase
syntax_pattern char expr javascript_string "'"
syntax_pattern char char javascript_string ".[^\\\\']*"
# string
syntax_pattern normal string javascript_string '"'
syntax_pattern string string javascript_escapedchar '(\\([0-7]{1,3}|u[0-9a-f]{1,4}|.))+' ignorecase
syntax_pattern string expr javascript_string '"'
syntax_pattern string string javascript_string '.[^\\"]*'
# literals
syntax_pattern normal expr javascript_literal '(0x[0-9a-f]+|0[0-7]+|((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)(e[\+\-]?[0-9]+)?)' ignorecase
syntax_pattern normal expr javascript_literal '\b(true|false|Infinity|NaN|null|undefined)\b'
# import keywords
syntax_pattern normal normal javascript_import '\b(import|package)\b'
# typing keywords
syntax_pattern normal normal javascript_type '\b(abstract|boolean|byte|char|class|const|double|enum|export|float|function|int|interface|long|native|private|protected|public|short|static|synchronized|transient|var|void|volatile)\b'
# keywords
syntax_pattern normal normal javascript_keyword '\b(break|case|catch|continue|debugger|default|delete|do|else|extends|final|finally|for|goto|if|implements|in|instanceof|new|return|switch|throw|throws|try|typeof|while|with)\b'
syntax_pattern normal expr javascript_keyword '\b(super|this)\b'
# regular expressions
syntax_pattern normal regex javascript_regexsep '/'
syntax_pattern regex expr javascript_regexsep '/[gim]*'
syntax_pattern regex regex javascript_escapedchar '\\(c.|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{1,4}|.)'
syntax_pattern regex regex javascript_regex '.[^\\/]*'
# punctuation
syntax_pattern normal normal javascript_punctuation '[\^\*%~!\+\-=\|\&\(\{\[:;,\?\<\>\}]+'
syntax_pattern normal normal javascript_punctuation '\.'
syntax_pattern normal expr javascript_punctuation '[\)\]]+'
syntax_pattern expr normal javascript_punctuation '/'
# parsing optimisation
syntax_pattern normal expr text '[\$a-z_][\$a-z_0-9]*' ignorecase
syntax_pattern expr normal javascript_punctuation ''

View File

@ -0,0 +1,29 @@
# JSON syntax file for Diffuse
# Copyright (C) 2011 Derrick Moser <derrick_moser@yahoo.com>
syntax JSON normal text
syntax_files JSON '\.json$'
# colours
colour json_literal 1.0 0.2 0.8
colour json_string 0.8 0.0 0.0
colour json_escapedchar 0.46 0.31 0.48
colour json_punctuation 0.5 0.5 0.5
# whitespace
syntax_pattern normal normal text '[ \t\r\n]+'
# string
syntax_pattern normal string json_string '"'
syntax_pattern string string json_escapedchar '(\\(u[0-9a-f]{4}|.))+' ignorecase
syntax_pattern string normal json_string '"'
syntax_pattern string string json_string '.[^\\"]*'
# literals
syntax_pattern normal normal json_literal '-?(0|[1-9][0-9]*)(\.[0-9]+)?(e[\+\-]?[0-9]+)?' ignorecase
syntax_pattern normal normal json_literal '\b(true|false|null)\b'
# punctuation
syntax_pattern normal normal json_punctuation '[\{\}\[\]:,]+'
# parsing optimisation
syntax_pattern normal normal text '[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,127 @@
# JSP syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax JSP normal text
syntax_files JSP '\.jsp$'
# colours
colour jsp_comment 0.2 0.4 0.64
colour jsp_fixme 1.0 0.5 0.0
colour jsp_import 0.46 0.31 0.48
colour jsp_keyword 0.77 0.63 0.0
colour jsp_type 0.3 0.6 0.02
colour jsp_literal 1.0 0.2 0.8
colour jsp_string 0.8 0.0 0.0
colour jsp_escapedchar 0.46 0.31 0.48
colour jsp_punctuation 0.5 0.5 0.5
colour jsp_tag 0.46 0.31 0.48
# colours
colour jsp_html_comment 0.2 0.4 0.64
colour jsp_html_fixme 1.0 0.5 0.0
colour jsp_html_escapedchar 0.77 0.63 0.0
colour jsp_html_tag 0.02 0.6 0.6
colour jsp_html_tagname 0.77 0.63 0.0
colour jsp_html_punctuation 0.5 0.5 0.5
colour jsp_html_attribute 0.3 0.6 0.02
colour jsp_html_string 0.8 0.0 0.0
# jsp tag
syntax_pattern normal jsp jsp_tag '<%=?'
syntax_pattern jsp normal jsp_tag '%>'
# whitespace
syntax_pattern jsp jsp text '[ \t\r\n]+'
# C++ style comments
syntax_pattern jsp cpp_comment jsp_comment '//'
syntax_pattern cpp_comment normal jsp_tag '%>'
syntax_pattern cpp_comment jsp jsp_comment '(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment jsp_comment '\\(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment jsp_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern cpp_comment cpp_comment jsp_comment '.[^\\TFX\r\n%]*'
# C style comments
syntax_pattern jsp comment jsp_comment '/\*'
syntax_pattern comment normal jsp_tag '%>'
syntax_pattern comment jsp jsp_comment '\*/'
syntax_pattern comment comment jsp_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment jsp_comment '.[^\*TFX%]*'
# char
syntax_pattern jsp char jsp_string "'"
syntax_pattern char normal jsp_tag '%>'
syntax_pattern char jsp jsp_string "'"
syntax_pattern char char jsp_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|u[0-9a-f]{1,4}|[^%]))+' ignorecase
syntax_pattern char char jsp_string ".[^\\\\'%]*"
# string
syntax_pattern jsp string jsp_string '"'
syntax_pattern string normal jsp_tag '%>'
syntax_pattern string jsp jsp_string '"'
syntax_pattern string string jsp_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|u[0-9a-f]{1,4}|[^%]))+' ignorecase
syntax_pattern string string jsp_string '.[^\\"%]*'
# literals
syntax_pattern jsp jsp jsp_literal '((([0-9]+\.[0-9]*|\.[0-9]+)(e[\+\-]?[0-9]+)?|[0-9]+e[\+\-]?[0-9]+)[fd]?|(0|[1-9][0-9]*)[fd]|(0x[0-9a-f]+|0[0-7]*|[1-9][0-9]*)l?)' ignorecase
syntax_pattern jsp jsp jsp_literal '\b(true|false|null)\b'
# import keywords
syntax_pattern jsp jsp jsp_import '\b(import|package)\b'
# typing keywords
syntax_pattern jsp jsp jsp_type '\b(abstract|boolean|byte|char|class|const|double|enum|final|float|int|interface|long|native|private|protected|public|short|static|synchronized|transient|void|volatile)\b'
# keywords
syntax_pattern jsp jsp jsp_keyword '\b(assert|break|case|catch|continue|default|do|else|extends|finally|for|goto|if|implements|instanceof|new|return|strictfp|super|switch|this|throw|throws|try|while)\b'
# punctuation
syntax_pattern jsp jsp jsp_punctuation '[!~\|\&\^\(\)\<\>\*\-\+=\{\}\[\]:;,\?]+'
syntax_pattern jsp jsp jsp_punctuation '[%/\.]'
# parsing optimisation
syntax_pattern jsp jsp text '[a-z_][a-z_0-9]*' ignorecase
# whitespace/comments
syntax_pattern normal normal text '[ \t\r\n]+'
syntax_pattern normal html_comment jsp_html_comment '<!--'
syntax_pattern html_comment jsp_html_comment jsp_tag '<%=?'
syntax_pattern jsp_html_comment html_comment jsp_tag '%>'
syntax_pattern jsp_html_comment jsp_html_comment jsp_tag '.[^%]*'
syntax_pattern html_comment normal html_comment '-->'
syntax_pattern html_comment html_comment jsp_html_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern html_comment html_comment jsp_html_comment '.[^TFX\-%]*'
# tags
syntax_pattern normal html_tag jsp_html_tag '<[!/]?'
syntax_pattern html_tag jsp_html_tag jsp_tag '<%=?'
syntax_pattern jsp_html_tag html_tag jsp_tag '%>'
syntax_pattern jsp_html_tag jsp_html_tag jsp_tag '.[^%]*'
syntax_pattern html_tag html_tag text '[ \t\r\n]+'
syntax_pattern html_tag html_tag_attribs jsp_html_tagname '\b[a-z][a-z_0-9]*([ \t]*:[ \t]*[a-z][a-z_0-9]*)*\b' ignorecase
syntax_pattern html_tag_attribs jsp_html_tag_attribs jsp_tag '<%=?'
syntax_pattern jsp_html_tag_attribs html_tag_attribs jsp_tag '%>'
syntax_pattern jsp_html_tag_attribs jsp_html_tag_attribs jsp_tag '.[^%]*'
syntax_pattern html_tag html_tag_attribs text ''
syntax_pattern html_tag_attribs normal jsp_html_tag '/?>'
syntax_pattern html_tag_attribs html_tag_attribs text '[ \t\r\n]+'
syntax_pattern html_tag_attribs html_tag_attribs jsp_html_punctuation '='
syntax_pattern html_tag_attribs html_tag_attribs jsp_html_attribute '[a-z_0-9\-:\.]+' ignorecase
syntax_pattern html_tag_attribs html_tag_string jsp_html_string '"'
syntax_pattern html_tag_string jsp_html_tag_string jsp_tag '<%=?'
syntax_pattern jsp_html_tag_string html_tag_string jsp_tag '%>'
syntax_pattern jsp_html_tag_string jsp_html_tag_string jsp_tag '.[^%]*'
syntax_pattern html_tag_string html_tag_attribs jsp_html_string '"'
syntax_pattern html_tag_string html_tag_string jsp_html_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern html_tag_string html_tag_string jsp_html_string '.[^\&"%]*'
syntax_pattern html_tag_attribs html_tag_singlestring jsp_html_string "'"
syntax_pattern html_tag_singlestring jsp_html_tag_singlestring jsp_tag '<%=?'
syntax_pattern jsp_html_tag_singlestring html_tag_singlestring jsp_tag '%>'
syntax_pattern jsp_html_tag_singlestring jsp_html_tag_singlestring jsp_tag '.[^%]*'
syntax_pattern html_tag_singlestring html_tag_attribs jsp_html_string "'"
syntax_pattern html_tag_singlestring html_tag_singlestring jsp_html_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern html_tag_singlestring html_tag_singlestring jsp_html_string ".[^\\&'%]*"
# text/parsing optimisation
syntax_pattern normal normal jsp_html_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern normal normal text '.[^\&<]*'

View File

@ -0,0 +1,82 @@
# Makefile syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax Makefile normal text
syntax_files Makefile '^(GNUmakefile|[Mm]akefile)$'
# colours
colour makefile_continue 0.46 0.31 0.48
colour makefile_comment 0.2 0.4 0.64
colour makefile_fixme 1.0 0.5 0.0
colour makefile_keyword 0.46 0.31 0.48
colour makefile_processor 0.8 0.0 0.0
colour makefile_declaration 0.02 0.6 0.6
colour makefile_step 0.46 0.31 0.48
colour makefile_commands 0.8 0.0 0.0
colour makefile_target 0.02 0.6 0.6
colour makefile_variable 0.02 0.6 0.6
# continuation
syntax_pattern normal normal makefile_continue '\\(\r\n|\r|\n)$'
# normal comment
syntax_pattern normal normal_comment makefile_comment '#'
syntax_pattern normal_comment normal makefile_comment '(\r\n|\r|\n)$'
syntax_pattern normal_comment normal makefile_continue '\\(\r\n|\r|\n)$'
syntax_pattern normal_comment normal_comment makefile_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern normal_comment normal_comment makefile_comment '.[^TFX\r\n]*'
# processor
syntax_pattern normal processor makefile_keyword '^ *(define|undef|[\-s]?include|ifdef|ifndef|ifeq|ifneq|else|endif|override|export|unexport|vpath)\b'
syntax_pattern processor normal makefile_processor '(\r\n|\r|\n)$'
syntax_pattern processor processor makefile_continue '\\(\r\n|\r|\n)$'
syntax_pattern processor processor makefile_variable '\$(\([^\)]+\)|@|%|<|\?|\^|\+|\*)'
syntax_pattern processor processor makefile_processor '.[^\\#\$\r\n]*'
# processor comment
syntax_pattern processor processor_comment makefile_comment '#'
syntax_pattern processor_comment processor makefile_comment '(\r\n|\r|\n)$'
syntax_pattern processor_comment processor makefile_continue '\\(\r\n|\r|\n)$'
syntax_pattern processor_comment processor_comment makefile_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern processor_comment processor_comment makefile_comment '.[^TFX\r\n]*'
# commands
syntax_pattern normal commands makefile_step '^\t-?@?'
syntax_pattern commands normal makefile_continue '(\r\n|\r|\n)$'
syntax_pattern commands commands makefile_continue '\\(\r\n|\r|\n)$'
syntax_pattern commands commands makefile_variable '\$(\([^\)]+\)|@|%|<|\?|\^|\+|\*)'
syntax_pattern commands commands makefile_commands '.[^\\#\$\r\n]*'
# commands comment
syntax_pattern commands commands_comment makefile_comment '#'
syntax_pattern commands_comment commands makefile_comment '(\r\n|\r|\n)$'
syntax_pattern commands_comment commands makefile_continue '\\(\r\n|\r|\n)$'
syntax_pattern commands_comment commands_comment makefile_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern commands_comment commands_comment makefile_comment '.[^TFX\r\n]*'
# variable declarations
syntax_pattern normal declaration makefile_declaration '^ *[A-Za-z_][A-Za-z_0-9]*[ \t]*[:\?\+]?='
syntax_pattern declaration normal makefile_continue '(\r\n|\r|\n)$'
syntax_pattern declaration declaration makefile_continue '\\(\r\n|\r|\n)$'
syntax_pattern declaration declaration makefile_variable '\$(\([^\)]+\)|@|%|<|\?|\^|\+|\*)'
syntax_pattern declaration declaration text '.[^\\#\$\r\n]*'
# variable declaration comment
syntax_pattern declaration declaration_comment makefile_comment '#'
syntax_pattern declaration_comment declaration makefile_comment '(\r\n|\r|\n)$'
syntax_pattern declaration_comment declaration makefile_continue '\\(\r\n|\r|\n)$'
syntax_pattern declaration_comment declaration_comment makefile_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern declaration_comment declaration_comment makefile_comment '.[^TFX\r\n]*'
# dependencies
syntax_pattern normal depends makefile_target '^[^#:]*::?'
syntax_pattern depends normal makefile_continue '(\r\n|\r|\n)$'
syntax_pattern depends depends makefile_continue '\\(\r\n|\r|\n)$'
syntax_pattern depends depends makefile_variable '\$(\([^\)]+\)|@|%|<|\?|\^|\+|\*)'
syntax_pattern depends depends text '.[^\\#\$\r\n]*'
# depends comment
syntax_pattern depends depends_comment makefile_comment '#'
syntax_pattern depends_comment depends makefile_comment '(\r\n|\r|\n)$'
syntax_pattern depends_comment depends makefile_continue '\\(\r\n|\r|\n)$'
syntax_pattern depends_comment depends_comment makefile_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern depends_comment depends_comment makefile_comment '.[^TFX\r\n]*'

View File

@ -0,0 +1,74 @@
# Objective-C++ syntax file for Diffuse
# Copyright (C) 2009 Derrick Moser <derrick_moser@yahoo.com>
syntax Objective-C++ normal text
syntax_files Objective-C++ '\.mm?$'
# colours
colour objc_comment 0.2 0.4 0.64
colour objc_fixme 1.0 0.5 0.0
colour objc_keyword 0.77 0.63 0.0
colour objc_type 0.3 0.6 0.02
colour objc_cpp 0.8 0.0 0.0
colour objc_cppkeyword 0.46 0.31 0.48
colour objc_literal 1.0 0.2 0.8
colour objc_string 0.8 0.0 0.0
colour objc_escapedchar 0.46 0.31 0.48
colour objc_punctuation 0.5 0.5 0.5
# preprocessor
syntax_pattern normal cpp objc_cppkeyword '^[ \t]*#[ \t]*(define|elif|else|endif|error|if|ifdef|ifndef|import|include|line|pragma|undef|warning)\b'
syntax_pattern cpp normal objc_cppkeyword '(\r\n|\r|\n)$'
syntax_pattern normal normal text '[ \t\r\n]+'
# C++ style comments
syntax_pattern normal cpp_comment objc_comment '//'
syntax_pattern cpp cpp_comment objc_comment '//'
syntax_pattern cpp_comment normal objc_comment '(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment objc_comment '\\(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment objc_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern cpp_comment cpp_comment objc_comment '.[^\\TFX\r\n]*'
# C style comments
syntax_pattern normal comment objc_comment '/\*'
syntax_pattern comment normal objc_comment '\*/'
syntax_pattern comment comment objc_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment objc_comment '.[^\*TFX]*'
syntax_pattern cpp comment_cpp objc_comment '/\*'
syntax_pattern comment_cpp cpp objc_comment '\*/'
syntax_pattern comment_cpp comment_cpp objc_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment_cpp comment_cpp objc_comment '.[^\*TFX]*'
# preprocessor args
syntax_pattern cpp cpp objc_cpp '\\(\r\n|\r|\n)$'
syntax_pattern cpp cpp objc_cpp '.[^\\/\r\n]*'
# char
syntax_pattern normal char objc_string "L?'"
syntax_pattern char normal objc_string "'"
syntax_pattern char char objc_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|.))+' ignorecase
syntax_pattern char char objc_string ".[^\\\\']*"
# string
syntax_pattern normal string objc_string '[L@]?"'
syntax_pattern string normal objc_string '"'
syntax_pattern string string objc_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|.))+' ignorecase
syntax_pattern string string objc_string '.[^\\"]*'
# literals
syntax_pattern normal normal objc_literal '((([0-9]+\.[0-9]*|\.[0-9]+)(e[\+\-]?[0-9]+)?|[0-9]+e[\+\-]?[0-9]+)[fl]?|(0|[1-9][0-9]*)f|(0x[0-9a-f]+|0[0-7]*|[1-9][0-9]*)(ul?|lu?)?)' ignorecase
syntax_pattern normal normal objc_literal '\b(true|false|M_E|M_LOG2E|M_LOG10E|M_LN2|M_LN10|M_PI|M_PI_2|M_PI_4|M_1_PI|M_2_PI|M_2_SQRTPI|M_SQRT2|M_SQRT1_2|nil|Nil|NO|NULL|YES)\b'
# typing keywords
syntax_pattern normal normal objc_type '\b(auto|bool|BOOL|bycopy|byref|char|class|Class|const|double|enum|explicit|export|extern|float|id|IMP|in|inline|inout|int|long|mutable|namespace|oneway|out|register|SEL|short|signed|static|struct|STR|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)\b'
# keywords
syntax_pattern normal normal objc_keyword '@(catch|class|dynamic|encode|end|finally|implementation|interface|optional|package|private|property|protected|protocol|protocol|public|required|selector|synchronized|synthesize|throw|try)\b'
syntax_pattern normal normal objc_keyword '\b(_cmd|asm|break|case|catch|const_cast|continue|default|delete|do|dynamic_cast|else|for|friend|goto|if|new|operator|private|protected|public|reinterpret_cast|return|self|sizeof|static_cast|super|switch|this|throw|try|typeid|using|while)\b'
# punctuation
syntax_pattern normal normal objc_punctuation '[!~%\|\&\^\(\)\<\>\*\-\+=\{\}\[\]:;,\?]+'
syntax_pattern normal normal objc_punctuation '[/\.]'
# parsing optimisation
syntax_pattern normal normal text '[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,64 @@
# Octave syntax file for Diffuse
# Copyright (C) 2009 Derrick Moser <derrick_moser@yahoo.com>
syntax Octave normal text
# We want Diffuse's default behaviour tot identify files with the '.m'
# extension as Objective-C files so we do not define a rule for matching files
# with the extension '.m' here.
#syntax_files Octave '\.m$'
# colours
colour octave_comment 0.2 0.4 0.64
colour octave_fixme 1.0 0.5 0.0
colour octave_keyword 0.77 0.63 0.0
colour octave_type 0.3 0.6 0.02
colour octave_literal 1.0 0.2 0.8
colour octave_string 0.8 0.0 0.0
colour octave_escapedchar 0.46 0.31 0.48
colour octave_punctuation 0.5 0.5 0.5
# whitespace
syntax_pattern normal normal text '[ \t\r\n]+'
syntax_pattern op op octave_punctuation "'+"
syntax_pattern op normal octave_punctuation ''
# block comments
syntax_pattern normal block_comment octave_comment '^%\{(\r\n|\r|\n)$'
syntax_pattern block_comment normal octave_comment '^%\}(\r\n|\r|\n)$'
syntax_pattern block_comment block_comment octave_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern block_comment block_comment octave_comment '.[^TFX]*'
# comments
syntax_pattern normal comment octave_comment '[#%]'
syntax_pattern comment normal octave_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment octave_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment octave_comment '.[^TFX\r\n]*'
# char
syntax_pattern normal char octave_string "'"
syntax_pattern char char octave_escapedchar "''"
syntax_pattern char op octave_string "'"
syntax_pattern char char octave_string ".[^']*"
# string
syntax_pattern normal string octave_string '"'
syntax_pattern string string octave_escapedchar '(\\.)+'
syntax_pattern string op octave_string '"'
syntax_pattern string string octave_string '.[^\\"]*'
# literals
syntax_pattern normal op octave_literal '[0-9]+(\.[0-9]+)?(e[\+\-]?[0-9]+)?[ij]?' ignorecase
syntax_pattern normal op octave_literal '\b(Inf|NA|NaN)\b'
# typing keywords
syntax_pattern normal op octave_type '\b(char|double|logical|single|u?int(8|16|32|64))\b'
# keywords
syntax_pattern normal op octave_keyword '\b(break|case|catch|continue|do|else|elseif|end|endfor|endfunction|endif|endswitch|end_try_catch|end_unwind_protect|endwhile|for|function|global|if|otherwise|persistent|return|switch|try|until|unwind_protect(_cleanup)?|while)\b'
# punctuation
syntax_pattern normal op octave_punctuation '[\]\)\}\.]+'
syntax_pattern normal normal octave_punctuation '[\[\(\{:;,~&\|=<>\*/\+\-@\^\\!]+'
# parsing optimisation
syntax_pattern normal op text '[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,75 @@
# OpenCL syntax file for Diffuse
# Copyright (C) 2012 Derrick Moser <derrick_moser@yahoo.com>
syntax OpenCL normal text
syntax_files OpenCL '\.cl$'
# colours
colour opencl_comment 0.2 0.4 0.64
colour opencl_fixme 1.0 0.5 0.0
colour opencl_keyword 0.77 0.63 0.0
colour opencl_type 0.3 0.6 0.02
colour opencl_cpp 0.8 0.0 0.0
colour opencl_cppkeyword 0.46 0.31 0.48
colour opencl_literal 1.0 0.2 0.8
colour opencl_string 0.8 0.0 0.0
colour opencl_escapedchar 0.46 0.31 0.48
colour opencl_punctuation 0.5 0.5 0.5
# preprocessor
syntax_pattern normal cpp opencl_cppkeyword '^[ \t]*#[ \t]*(define|elif|else|endif|error|if|ifdef|ifndef|include|line|pragma|undef|warning)\b'
syntax_pattern cpp normal opencl_cppkeyword '(\r\n|\r|\n)$'
# whitespace
syntax_pattern normal normal text '[ \t\r\n]+'
# C++ style comments
syntax_pattern normal cpp_comment opencl_comment '//'
syntax_pattern cpp cpp_comment opencl_comment '//'
syntax_pattern cpp_comment normal opencl_comment '(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment opencl_comment '\\(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment opencl_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern cpp_comment cpp_comment opencl_comment '.[^\\TFX\r\n]*'
# C style comments
syntax_pattern normal comment opencl_comment '/\*'
syntax_pattern comment normal opencl_comment '\*/'
syntax_pattern comment comment opencl_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment opencl_comment '.[^\*TFX]*'
syntax_pattern cpp comment_cpp opencl_comment '/\*'
syntax_pattern comment_cpp cpp opencl_comment '\*/'
syntax_pattern comment_cpp comment_cpp opencl_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment_cpp comment_cpp opencl_comment '.[^\*TFX]*'
# preprocessor args
syntax_pattern cpp cpp opencl_cpp '\\(\r\n|\r|\n)$'
syntax_pattern cpp cpp opencl_cpp '.[^\\/\r\n]*'
# char
syntax_pattern normal char opencl_string "L?'"
syntax_pattern char normal opencl_string "'"
syntax_pattern char char opencl_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|.))+' ignorecase
syntax_pattern char char opencl_string ".[^\\\\']*"
# string
syntax_pattern normal string opencl_string 'L?"'
syntax_pattern string normal opencl_string '"'
syntax_pattern string string opencl_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|.))+' ignorecase
syntax_pattern string string opencl_string '.[^\\"]*'
# literals
syntax_pattern normal normal opencl_literal '((([0-9]+\.[0-9]*|\.[0-9]+)(e[\+\-]?[0-9]+)?|[0-9]+e[\+\-]?[0-9]+)[fl]?|(0|[1-9][0-9]*)f|(0x[0-9a-f]+|0[0-7]*|[1-9][0-9]*)(ul?|lu?)?)' ignorecase
syntax_pattern normal normal opencl_literal '\b(true|false|M_E|M_LOG2E|M_LOG10E|M_LN2|M_LN10|M_PI|M_PI_2|M_PI_4|M_1_PI|M_2_PI|M_2_SQRTPI|M_SQRT2|M_SQRT1_2|NULL)\b'
# typing keywords
syntax_pattern normal normal opencl_type '\b(auto|bool|class|const|enum|explicit|export|extern|event_t|image[123]d_t|image[12]d_array_t|image1d_buffer_t|inline|u?intptr_t|mutable|namespace|ptrdiff_t|register|sampler_t|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t|(u?(char|int|long|short)|double|float|half)(2|3|4|8|16)?|(__)?(constant|global|kernel|local|read_only|read_write|write_only))\b'
# keywords
syntax_pattern normal normal opencl_keyword '\b(asm|break|case|catch|const_cast|continue|default|delete|do|dynamic_cast|else|for|friend|goto|if|new|operator|(__)?private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while)\b'
# punctuation
syntax_pattern normal normal opencl_punctuation '[!~%\|\&\^\(\)\<\>\*\-\+=\{\}\[\]:;,\?]+'
syntax_pattern normal normal opencl_punctuation '[/\.]'
# parsing optimisation
syntax_pattern normal normal text '[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,70 @@
# Pascal syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax Pascal normal text
syntax_files Pascal '\.pas$'
# colours
colour pascal_comment 0.2 0.4 0.64
colour pascal_cppkeyword 0.46 0.31 0.48
colour pascal_cpp 0.8 0.0 0.0
colour pascal_fixme 1.0 0.5 0.0
colour pascal_import 0.46 0.31 0.48
colour pascal_keyword 0.77 0.63 0.0
colour pascal_type 0.3 0.6 0.02
colour pascal_literal 1.0 0.2 0.8
colour pascal_string 0.8 0.0 0.0
colour pascal_escapedchar 0.46 0.31 0.48
colour pascal_punctuation 0.5 0.5 0.5
# whitespace
syntax_pattern normal normal text '[ \t\r\n]+'
# old style comments
syntax_pattern normal comment pascal_comment '\(\*'
syntax_pattern comment normal pascal_comment '\*\)'
syntax_pattern comment comment pascal_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment pascal_comment '.[^\*TFX]*'
# new style comments
syntax_pattern normal cpp pascal_cppkeyword '\{\$[a-z_0-9]*' ignorecase
syntax_pattern cpp normal pascal_cppkeyword '\}'
syntax_pattern cpp cpp pascal_cpp '.[^\}]*'
# new style comments
syntax_pattern normal new_comment pascal_comment '\{'
syntax_pattern new_comment normal pascal_comment '\}'
syntax_pattern new_comment new_comment pascal_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern new_comment new_comment pascal_comment '.[^\}TFX]*'
# delphi style comments
syntax_pattern normal delphi_comment pascal_comment '//'
syntax_pattern delphi_comment normal pascal_comment '(\r\n|\r|\n)$'
syntax_pattern delphi_comment delphi_comment pascal_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern delphi_comment delphi_comment pascal_comment '.[^TFX\r\n]*'
# string
syntax_pattern normal string pascal_string "'"
syntax_pattern string string pascal_escapedchar "''"
syntax_pattern string normal pascal_string "'"
syntax_pattern string string pascal_string ".[^']*"
syntax_pattern normal normal pascal_escapedchar '#[0-9]+'
# literals
syntax_pattern normal normal pascal_literal '([0-9]+(\.[0-9]*)?(e[\+\-]?[0-9]+)?|\$[0-9a-f]+|%[01]+)' ignorecase
syntax_pattern normal normal pascal_literal '\b(false|true|nil)\b' ignorecase
# import keywords
syntax_pattern normal normal pascal_import '\b(program|unit|uses)\b' ignorecase
# typing keywords
syntax_pattern normal normal pascal_type '\b(absolute|ansistring|array|boolean|byte|bytebool|cardinal|char|comp|double|extended|external|far|file|forward|inline|int64|integer|longbool|longint|near|pchar|pointer|qword|real|set|shortint|shortstring|single|smallint|string|virtual|word|wordbool)\b' ignorecase
# keywords
syntax_pattern normal normal pascal_keyword '\b(abstract|alias|and|as|asm|assembler|begin|break|case|cdecl|class|const|constructor|continue|default|destructor|dispose|div|do|downto|else|end|except|exit|exports|external|finalization|finally|for|function|goto|if|implementation|in|index|inherited|initialization|interface|is|label|library|mod|name|new|not|object|of|on|operator|or|override|packed|pascal|popstack|private|procedure|property|protected|public|published|raise|read|record|register|repeat|saveregisters|self|shl|shr|stdcall|then|to|try|type|until|var|while|with|write|xor)\b' ignorecase
# punctuation
syntax_pattern normal normal pascal_punctuation '[\+\-\*=<>\[\]\.,\):;\^@]+'
syntax_pattern normal normal pascal_punctuation '[\(/]'
# parsing optimisation
syntax_pattern normal normal text '[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,29 @@
# Patch syntax file for Diffuse
# Copyright (C) 2013 Derrick Moser <derrick_moser@yahoo.com>
syntax Patch comment text
syntax_files Patch '\.patch$'
# colours
colour patch_comment 0.2 0.4 0.64
colour patch_info 0.46 0.31 0.48
colour patch_location 0.77 0.63 0.0
colour patch_add 0.3 0.6 0.02
colour patch_remove 0.8 0.0 0.0
# information
syntax_pattern comment normal patch_info '^(diff|---|\+\+\+) .*\n?'
syntax_pattern normal normal patch_info '^(diff|---|\+\+\+) .*\n?'
# location
syntax_pattern normal location patch_location '^@@[^@]*@@'
# comments
syntax_pattern comment comment patch_comment '.*\n?'
syntax_pattern location normal patch_comment '.*\n?'
# changes
syntax_pattern normal normal patch_add '^\+.*\n?'
syntax_pattern normal normal patch_remove '^-.*\n?'
# optimisation
syntax_pattern normal normal text '.*\n?'

View File

@ -0,0 +1,103 @@
# Perl syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax Perl normal text
syntax_files Perl '\.p[hlm]$'
syntax_magic Perl '^#![ \t]*([^ \t/]*/)*(env[ \t]+)?perl[0-9\.]*([ \t].*)?$'
# colours
colour perl_comment 0.2 0.4 0.64
colour perl_fixme 1.0 0.5 0.0
colour perl_keyword 0.77 0.63 0.0
colour perl_import 0.46 0.31 0.48
colour perl_literal 1.0 0.2 0.8
colour perl_string 0.8 0.0 0.0
colour perl_escapedchar 0.46 0.31 0.48
colour perl_function 0.02 0.6 0.6
colour perl_punctuation 0.5 0.5 0.5
colour perl_variable 0.02 0.6 0.6
colour perl_regexsep 0.77 0.63 0.0
colour perl_regex 0.8 0.0 0.0
# whitespace/comments
syntax_pattern normal normal text '[ \t\r\n]+'
syntax_pattern expr expr text '[ \t\r\n]+'
syntax_pattern normal comment perl_comment '#'
syntax_pattern comment normal perl_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment perl_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment perl_comment '.[^TFX\r\n]*'
syntax_pattern normal doc perl_comment '^=(head1|head2|item|over|back|pod|for|begin|end)\b'
syntax_pattern doc normal perl_comment '^=cut\b'
syntax_pattern doc doc perl_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern doc doc perl_comment '.[^TFX]*'
# "-style strings
syntax_pattern normal double_string perl_string '"'
syntax_pattern double_string expr perl_string '"'
syntax_pattern double_string double_string perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+'
syntax_pattern double_string double_string perl_variable '(@|\$#?|%)[a-z_][a-z_0-9]*\b' ignorecase
syntax_pattern double_string double_string perl_string '.[^\\"@\$%]*'
# '-style strings
syntax_pattern normal single_string perl_string "'"
syntax_pattern single_string expr perl_string "'"
syntax_pattern single_string single_string perl_string ".[^\\']*"
# `-style strings
syntax_pattern normal backquote perl_string '`'
syntax_pattern backquote expr perl_string '`'
syntax_pattern backquote backquote perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+'
syntax_pattern backquote backquote perl_variable '(@|\$#?|%)[a-z_][a-z_0-9]*\b' ignorecase
syntax_pattern backquote backquote perl_string '.[^\\`@\$%]*'
# literals
syntax_pattern normal expr perl_literal '(((0|[1-9][0-9])*\.[0-9]*|\.[0-9]+)(e[\+\-]?[0-9]+)?|(0|[1-9][0-9]*)e[\+\-]?[0-9]+|0x[0-9a-f]+|0[0-7]*|[1-9][0-9]*)' ignorecase
# variable
syntax_pattern normal expr perl_variable "(@(\\+|-|[A-Za-z_][A-Za-z0-9_]*)?|%(\\+|-|!|^H|[A-Za-z_][A-Za-z0-9_]*)?|\\$([\\?&`'\\+\\./\\|,\\\\\\\";%=\\-~^:!\\$<>\\(\\)\\[\\]]|^[ACDEFHIMNOPRSTVWX]|#?[A-Za-z0-9_]+)?)"
# keywords
syntax_pattern normal normal perl_keyword '\b(abs|accept|alarm|and|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|continue|cos|crypt|dbmclose|dbmopen|default|defined|delete|die|do|dump|each|else|elsif|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exit|exp|fcntl|fileno|flock|for|foreach|fork|format|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|given|glob|gmtime|goto|grep|gt|hex|if|index|int|ioctl|join|keys|kill|last|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|ne|next|not|oct|open|opendir|or|ord|pack|pipe|pop|pos|print|printf|prototype|push|quotemeta|qw|qx|rand|read|readdir|readline|readlink|readpipe|recv|redo|ref|rename|reset|return|reverse|rewinddir|rindex|rmdir|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|substr|symlink|syscall|sysopen|sysread|sysseek|system|syswrite|tell|telldir|tie|tied|time|times|truncate|uc|ucfirst|umask|undef|unless|unlink|unpack|unshift|untie|until|utime|values|vec|wait|waitpid|wantarray|warn|when|while|write|xor)\b'
syntax_pattern normal normal perl_keyword '-[AbBcCdefgklMoOprRsStTuwWxXz]\b'
# special kewords
syntax_pattern normal normal perl_import '\b(import|no|package|require|use)\b'
# function/class definitions
syntax_pattern normal declaration perl_keyword '\b(sub)\b'
syntax_pattern declaration declaration text '[ \t]+'
syntax_pattern declaration normal perl_function '\b[a-z_][a-z_0-9]*\b' ignorecase
syntax_pattern declaration normal text ''
# expressions
syntax_pattern normal expression perl_regexsep 'm?/'
syntax_pattern expression expr perl_regexsep '/[cgimposx]*'
syntax_pattern expression expression perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+'
syntax_pattern expression expression perl_regex '.[^\\/]*'
# search and replace
syntax_pattern normal search perl_regexsep 's/'
syntax_pattern search replace perl_regexsep '/'
syntax_pattern search search perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+'
syntax_pattern search search perl_regex '.[^\\/]*'
syntax_pattern replace expr perl_regexsep '/[cegimposx]*'
syntax_pattern replace replace perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+'
syntax_pattern replace replace perl_regex '.[^\\/]*'
# translate
syntax_pattern normal translate_search perl_regexsep '(tr|y)/'
syntax_pattern translate_search translate_replace perl_regexsep '/'
syntax_pattern translate_search translate_search perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+'
syntax_pattern translate_search translate_search perl_regex '.[^\\/]*'
syntax_pattern translate_replace expr perl_regexsep '/[cds]*'
syntax_pattern translate_replace translate_replace perl_escapedchar '(\\([0-7]{1,3}|x([A-Za-z0-9]{2}|\{[A-Za-z0-9]+\})|\\N\{[A-Za-z]*\}|c?.))+'
syntax_pattern translate_replace translate_replace perl_regex '.[^\\/]*'
# punctuation
syntax_pattern normal normal perl_punctuation '[=\(,~!&\|\^;\[\{\}<>\+\-\*:]+'
syntax_pattern normal normal perl_punctuation '\.'
syntax_pattern normal expr perl_punctuation '[\)\]]+'
syntax_pattern expr normal perl_punctuation '/'
# parsing optimisation
syntax_pattern normal expr text '[a-z_][a-z_0-9]*' ignorecase
syntax_pattern expr normal perl_regex ''

View File

@ -0,0 +1,124 @@
# PHP syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax PHP normal text
syntax_files PHP '\.php$'
# colours
colour php_comment 0.2 0.4 0.64
colour php_fixme 1.0 0.5 0.0
colour php_tag 0.46 0.31 0.48
colour php_import 0.46 0.31 0.48
colour php_keyword 0.77 0.63 0.0
colour php_type 0.3 0.6 0.02
colour php_literal 1.0 0.2 0.8
colour php_string 0.8 0.0 0.0
colour php_escapedchar 0.46 0.31 0.48
colour php_punctuation 0.5 0.5 0.5
colour php_variable 0.02 0.6 0.6
# colours
colour php_html_comment 0.2 0.4 0.64
colour php_html_fixme 1.0 0.5 0.0
colour php_html_escapedchar 0.77 0.63 0.0
colour php_html_tag 0.02 0.6 0.6
colour php_html_tagname 0.77 0.63 0.0
colour php_html_punctuation 0.5 0.5 0.5
colour php_html_attribute 0.3 0.6 0.02
colour php_html_string 0.8 0.0 0.0
# php tags
syntax_pattern normal php php_tag '<\?(php)?=?' ignorecase
syntax_pattern php normal php_tag '\?>'
# whitespace and comments
syntax_pattern php php text '[ \t\r\n]+'
syntax_pattern php comment php_comment '(//|#)'
syntax_pattern comment normal php_tag '\?>'
syntax_pattern comment php php_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment php_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment php_comment '.[^TFX\r\n\?]*'
syntax_pattern php c_comment php_comment '/\*'
syntax_pattern c_comment normal php_tag '\?>'
syntax_pattern c_comment php php_comment '\*/'
syntax_pattern c_comment c_comment php_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern c_comment c_comment php_comment '.[^\*\?TFX]*'
# char
syntax_pattern php char php_string "'"
syntax_pattern char php php_string "'"
syntax_pattern char char php_escapedchar "\\\\[\\\\']"
syntax_pattern char char php_string ".[^\\\\']*"
# string
syntax_pattern php string php_string '"'
syntax_pattern string php php_string '"'
syntax_pattern string string php_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|.))+' ignorecase
syntax_pattern string string php_string '.[^\\"]*'
# literals
syntax_pattern php php php_literal '(([0-9]+\.[0-9]*|\.[0-9]+)(e[\+\-]?[0-9]+)?|[0-9]+e[\+\-]?[0-9]+|0x[0-9a-f]+|0[0-7]*|[1-9][0-9]*)' ignorecase
syntax_pattern php php php_literal '\b(true|false|null)\b' ignorecase
# keywords
syntax_pattern php php php_keyword '\b(and|as|break|case|catch|clone|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|exit|extends|eval|final|for|foreach|goto|if|implements|instanceof|isset|namespace|new|or|print|return|switch|this|throw|try|unset|unset|use|while|xor)\b' ignorecase
# import
syntax_pattern php php php_import '\b(include|include_once|require|require_once)\b' ignorecase
# types
syntax_pattern php php php_type '\b(abstract|array|bool|boolean|class|const|double|float|function|global|int|interface|integer|list|object|private|protected|public|static|string|var)\b' ignorecase
# variables
syntax_pattern php php php_variable '\$+[a-z_\x7f-\xff][a-z0-9_\x7f-\xff]*' ignorecase
# punctuation
syntax_pattern php php php_punctuation '[@!~%\|\&\^\(\)\<\>\*\-\+=\{\}\[\]:;,]+'
syntax_pattern php php php_punctuation '[/\?\.]'
# optimisation
syntax_pattern php php text '[a-z_0-9]+' ignorecase
# whitespace/comments
syntax_pattern normal normal text '[ \t\r\n]+'
syntax_pattern normal html_comment php_html_comment '<!--'
syntax_pattern html_comment php_html_comment php_tag '<\?(php)?=?' ignorecase
syntax_pattern php_html_comment html_comment php_tag '\?>'
syntax_pattern php_html_comment php_html_comment php_tag '.[^\?]*'
syntax_pattern html_comment normal html_comment '-->'
syntax_pattern html_comment html_comment php_html_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern html_comment html_comment php_html_comment '.[^TFX\-<]*'
# tags
syntax_pattern normal html_tag php_html_tag '<[!/]?'
syntax_pattern html_tag php_html_tag php_tag '<\?(php)?=?' ignorecase
syntax_pattern php_html_tag html_tag php_tag '\?>'
syntax_pattern php_html_tag php_html_tag php_tag '.[^\?]*'
syntax_pattern html_tag html_tag text '[ \t\r\n]+'
syntax_pattern html_tag html_tag_attribs php_html_tagname '\b[a-z][a-z_0-9]*([ \t]*:[ \t]*[a-z][a-z_0-9]*)*\b' ignorecase
syntax_pattern html_tag_attribs php_html_tag_attribs php_tag '<\?(php)?=?' ignorecase
syntax_pattern php_html_tag_attribs html_tag_attribs php_tag '\?>'
syntax_pattern php_html_tag_attribs php_html_tag_attribs php_tag '.[^\?]*'
syntax_pattern html_tag html_tag_attribs text ''
syntax_pattern html_tag_attribs normal php_html_tag '/?>'
syntax_pattern html_tag_attribs html_tag_attribs text '[ \t\r\n]+'
syntax_pattern html_tag_attribs html_tag_attribs php_html_punctuation '='
syntax_pattern html_tag_attribs html_tag_attribs php_html_attribute '[a-z_0-9\-:\.]+' ignorecase
syntax_pattern html_tag_attribs html_tag_string php_html_string '"'
syntax_pattern html_tag_string php_html_tag_string php_tag '<\?(php)?=?' ignorecase
syntax_pattern php_html_tag_string html_tag_string php_tag '\?>'
syntax_pattern php_html_tag_string php_html_tag_string php_tag '.[^\?]*'
syntax_pattern html_tag_string html_tag_attribs php_html_string '"'
syntax_pattern html_tag_string html_tag_string php_html_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern html_tag_string html_tag_string php_html_string '.[^\&"<]*'
syntax_pattern html_tag_attribs html_tag_singlestring php_html_string "'"
syntax_pattern html_tag_singlestring php_html_tag_singlestring php_tag '<\?(php)?=?' ignorecase
syntax_pattern php_html_tag_singlestring html_tag_singlestring php_tag '\?>'
syntax_pattern php_html_tag_singlestring php_html_tag_singlestring php_tag '.[^\?]*'
syntax_pattern html_tag_singlestring html_tag_attribs php_html_string "'"
syntax_pattern html_tag_singlestring html_tag_singlestring php_html_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern html_tag_singlestring html_tag_singlestring php_html_string ".[^\\&'<]*"
# text/parsing optimisation
syntax_pattern normal normal php_html_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern normal normal text '.[^\&<]*'

View File

@ -0,0 +1,76 @@
# Python syntax file for Diffuse
# Copyright (C) 2008-2011 Derrick Moser <derrick_moser@yahoo.com>
syntax Python normal text
syntax_files Python '^(.*\.pyw?|Sconscript|(S[Cc]|sc)onstruct)$'
syntax_magic Python '^#![ \t]*([^ \t/]*/)*(env[ \t]+)?python[0-9\.]*([ \t].*)?$'
# colours
colour python_comment 0.2 0.4 0.64
colour python_fixme 1.0 0.5 0.0
colour python_keyword 0.77 0.63 0.0
colour python_type 0.3 0.6 0.02
colour python_import 0.46 0.31 0.48
colour python_literal 1.0 0.2 0.8
colour python_string 0.8 0.0 0.0
colour python_escapedchar 0.46 0.31 0.48
colour python_function 0.02 0.6 0.6
colour python_punctuation 0.5 0.5 0.5
# whitespace/comments
syntax_pattern normal normal text '[ \t\r\n]+'
syntax_pattern normal comment python_comment '#'
syntax_pattern comment normal python_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment python_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment python_comment '.[^TFX\r\n]*'
# """-style strings
syntax_pattern normal triple_string python_string '[bu]?r?"""' ignorecase
syntax_pattern triple_string normal python_string '"""'
syntax_pattern triple_string triple_string python_escapedchar '(\\([0-7]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|N\{[^\}]*\}|.))+'
syntax_pattern triple_string triple_string python_string '[^\\"]+'
syntax_pattern triple_string triple_string python_string '.'
# "-style strings
syntax_pattern normal double_string python_string '[bu]?r?"' ignorecase
syntax_pattern double_string normal python_string '"'
syntax_pattern double_string double_string python_string '[^\\"]+'
syntax_pattern double_string double_string python_escapedchar '(\\([0-7]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|N\{[^\}]*\}|.))+'
# '''-style strings
syntax_pattern normal triple2_string python_string "[bu]?r?'''" ignorecase
syntax_pattern triple2_string normal python_string "'''"
syntax_pattern triple2_string triple2_string python_escapedchar '(\\([0-7]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|N\{[^\}]*\}|.))+'
syntax_pattern triple2_string triple2_string python_string "[^\\\\']+"
syntax_pattern triple2_string triple2_string python_string '.'
# '-style strings
syntax_pattern normal single_string python_string "[bu]?r?'" ignorecase
syntax_pattern single_string normal python_string "'"
syntax_pattern single_string single_string python_string "[^\\\\']+"
syntax_pattern single_string single_string python_escapedchar '(\\([0-7]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|N\{[^\}]*\}|.))+'
# literals
syntax_pattern normal normal python_literal '(([0-9]+\.[0-9]*|\.[0-9]+)(e[\+\-]?[0-9]+)?|[0-9]+e[\+\-]?[0-9]+|0x[0-9a-f]+|0[0-7]*|[1-9][0-9]*)' ignorecase
syntax_pattern normal normal python_literal '\b(None|True|False)\b'
# types
syntax_pattern normal normal python_type '\b(bool|buffer|builtin_function_or_method|bytes|bytearray|classobj|code|complex|dict|dictproxy|ellipsis|file|float|frame|frozenset|function|generator|instance|instancemethod|int|list|long|module|object|range|slice|str|traceback|tuple|type|unicode|xrange|NoneType|NotImplementedType)\b'
# keywords
syntax_pattern normal normal python_keyword '\b(and|as|assert|break|continue|del|elif|else|except|exec|finally|for|global|if|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b'
# special kewords
syntax_pattern normal normal python_import '\b(from|import)\b'
# function/class definitions
syntax_pattern normal declaration python_keyword '\b(class|def)\b'
syntax_pattern declaration declaration text '[ \t]+'
syntax_pattern declaration normal python_function '\b[a-z_][a-z_0-9]*\b' ignorecase
syntax_pattern declaration normal text ''
# punctuation
syntax_pattern normal normal python_punctuation '[!~%\|\&\^\(\)\<\>\*\-\+=\{\}\[\]:;,\/]+'
syntax_pattern normal normal python_punctuation '\.'
# parsing optimisation
syntax_pattern normal normal text '[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,45 @@
# R syntax file for Diffuse
# Copyright (C) 2011 Derrick Moser <derrick_moser@yahoo.com>
syntax R normal text
syntax_files R '\.R$'
# colours
colour r_comment 0.2 0.4 0.64
colour r_fixme 1.0 0.5 0.0
colour r_keyword 0.77 0.63 0.0
colour r_literal 1.0 0.2 0.8
colour r_string 0.8 0.0 0.0
colour r_escapedchar 0.46 0.31 0.48
colour r_punctuation 0.5 0.5 0.5
# whitespace/comments
syntax_pattern normal normal text '[ \t\r\n]+'
syntax_pattern normal comment r_comment '#'
syntax_pattern comment normal r_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment r_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment r_comment '.[^TFX\r\n]*'
# "-style strings
syntax_pattern normal double_string r_string '"'
syntax_pattern double_string normal r_string '"'
syntax_pattern double_string double_string r_escapedchar '(\\([0-7]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|.))+'
syntax_pattern double_string double_string r_string '.[^\\"]*'
# '-style strings
syntax_pattern normal single_string r_string "'"
syntax_pattern single_string normal r_string "'"
syntax_pattern single_string single_string r_escapedchar '(\\([0-7]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|.))+'
syntax_pattern single_string single_string r_string ".[^\\\\']*"
# literals
syntax_pattern normal normal c++_literal '((([0-9]+\.[0-9]*|\.[0-9]+)([eE][\+\-]?[0-9]+)?|[0-9]+[eE][\+\-]?[0-9]+)|([1-9][0-9]*|0x[0-9a-fA-F]+|0[0-7]*|[1-9][0-9]*|0))[iL]?'
syntax_pattern normal normal r_literal '\b(FALSE|Inf|NA(_(character|complex|integer|real)_)?|NaN|NULL|TRUE)\b'
# keywords
syntax_pattern normal normal r_keyword '\b(break|else|for|function|if|in|next|repeat|while)\b'
# punctuation
syntax_pattern normal normal r_punctuation '(%[^%]*%|[@\^~\<=\>\|\-:!/\(\)\[\]\{\}\$\*\&\+])+'
# parsing optimisation
syntax_pattern normal normal text '[a-z_][a-z_0-9\.]*' ignorecase

View File

@ -0,0 +1,102 @@
# Ruby syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax Ruby normal text
syntax_files Ruby '\.rb$'
syntax_magic Ruby '^#![ \t]*([^ \t/]*/)*(env[ \t]+)?ruby[0-9\.]*([ \t].*)?$'
# colours
colour ruby_comment 0.2 0.4 0.64
colour ruby_fixme 1.0 0.5 0.0
colour ruby_keyword 0.77 0.63 0.0
colour ruby_import 0.46 0.31 0.48
colour ruby_literal 1.0 0.2 0.8
colour ruby_string 0.8 0.0 0.0
colour ruby_escapedchar 0.46 0.31 0.48
colour ruby_function 0.02 0.6 0.6
colour ruby_constant 0.3 0.6 0.02
colour ruby_punctuation 0.5 0.5 0.5
colour ruby_symbol 0.3 0.6 0.02
colour ruby_variable 0.02 0.6 0.6
colour ruby_regexsep 0.77 0.63 0.0
colour ruby_regex 0.8 0.0 0.0
colour ruby_optionalsep 0.77 0.63 0.0
colour ruby_optional 0.8 0.0 0.0
# whitespace/comments
syntax_pattern normal normal text '[ \t\r\n]+'
syntax_pattern expr expr text '[ \t\r\n]+'
syntax_pattern normal comment ruby_comment '#'
syntax_pattern comment normal ruby_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment ruby_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment ruby_comment '.[^TFX\r\n]*'
syntax_pattern normal doc ruby_comment '^=begin\b'
syntax_pattern doc normal ruby_comment '^=end\b'
syntax_pattern doc doc ruby_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern doc doc ruby_comment '.[^TFX]*'
# "-style strings
syntax_pattern normal double_string ruby_string '"'
syntax_pattern double_string expr ruby_string '"'
syntax_pattern double_string double_string ruby_escapedchar '\\([0-7]{1,3}|x[0-9a-fA-F]{1,2}|C-.|M-(\\C-)?.|c?.)'
syntax_pattern double_string double_string ruby_escapedchar '#\{[^\}"]*\}'
syntax_pattern double_string double_string ruby_string '.[^\\"#]*'
# '-style strings
syntax_pattern normal single_string ruby_string "'"
syntax_pattern single_string expr ruby_string "'"
syntax_pattern single_string single_string ruby_escapedchar "\\\\[\\\\']"
syntax_pattern single_string single_string ruby_string ".[^\\\\']*"
# `-style strings
syntax_pattern normal backquote ruby_string '`'
syntax_pattern backquote expr ruby_string '`'
syntax_pattern backquote backquote ruby_escapedchar '\\([0-7]{1,3}|x[0-9a-fA-F]{1,2}|C-.|M-(\\C-)?.|c?.)'
syntax_pattern backquote backquote ruby_string '.[^\\`]*'
# literals
syntax_pattern normal expr ruby_literal '(((0|[1-9][0-9])*\.[0-9]*|\.[0-9]+)(e[\+\-]?[0-9]+)?|(0|[1-9][0-9]*)e[\+\-]?[0-9]+|0x[0-9a-f]+|0[0-7]*|[1-9][0-9]*)' ignorecase
syntax_pattern normal expr ruby_literal '\b(false|FALSE|nil|NIL|true|TRUE|__FILE__|__LINE__)\b'
syntax_pattern normal expr ruby_literal '\\?(\\C-|\\M-(\\C-)?)?[^ \t\r\n]'
# variables
syntax_pattern normal expr ruby_variable "(@@?[a-z_][a-z_0-9]*|\\$([a-z_][a-z_0-9]*|-[a-z]|[!@&`+1~=/\\\\,;\\.<>0\\*\\$\\?:\"']))\b" ignorecase
# symbol
syntax_pattern normal expr ruby_symbol ":[a-z_][a-z_0-9]*\b" ignorecase
# import
syntax_pattern normal normal ruby_import '\b(require)\b'
# keywords
syntax_pattern normal normal ruby_keyword '\b(alias|and|BEGIN|begin|break|case|defined|do|else|elsif|END|end|ensure|for|if|in|module|next|not|or|redo|rescue|retry|return|then|undef|unless|until|when|while|yield)\b'
syntax_pattern normal expr ruby_keyword '\b(self|super)\b'
# function/class definitions
syntax_pattern normal declaration ruby_keyword '\b(class|def)\b'
syntax_pattern declaration declaration text '[ \t]+'
syntax_pattern declaration normal ruby_function '\b[a-z_][a-z_0-9]*\b' ignorecase
syntax_pattern declaration normal text ''
# expressions
syntax_pattern normal expression ruby_regexsep '/'
syntax_pattern expression expr ruby_regexsep '/[iomxneus]*'
syntax_pattern expression expression ruby_escapedchar '\\.'
syntax_pattern expression expression ruby_regex '.[^\\/]*'
# optional
syntax_pattern normal optional ruby_optionalsep '\|'
syntax_pattern optional normal ruby_optionalsep '\|'
syntax_pattern optional optional ruby_optional '.[^\|]*'
# punctuation
syntax_pattern normal normal ruby_punctuation '[\[\{\}<>;=\(,~!&\^%\?\+\-\*\.]+'
syntax_pattern normal normal ruby_punctuation '(\.|:+)'
syntax_pattern normal expr ruby_punctuation '[\)\]]+'
syntax_pattern expr normal ruby_punctuation '[/\|]+'
# constants
syntax_pattern normal expr ruby_constant '\b[A-Z_][a-zA-Z_0-9]*\b[\?!]?'
# parsing optimisation
syntax_pattern normal expr text '[a-z_][a-z_0-9]*[\?!]?' ignorecase
syntax_pattern expr normal ruby_regex ''

View File

@ -0,0 +1,119 @@
# Rust syntax file for Diffuse
# Copyright (C) 2022 Alexander Lopatin (@alopatindev), Romain Failliot <romain@foolstep.com>
# DISCLAIMER: this is a raw support for Rust language, help wanted.
syntax Rust normal text
syntax_files Rust '\.rs$'
# Colours
colour rust_comment 0.2 0.4 0.64
colour rust_fixme 1.0 0.5 0.0
colour rust_import 0.77 0.63 0.0
colour rust_keyword 0.77 0.63 0.0
colour rust_type 0.3 0.6 0.02
colour rust_literal 1.0 0.2 0.8
colour rust_char 0.8 0.0 0.0
colour rust_string 0.8 0.0 0.0
colour rust_escapedchar 0.46 0.31 0.48
colour rust_string_multilinechar 0.46 0.31 0.48
colour rust_punctuation 0.5 0.5 0.5
colour rust_macro 0.01 0.6 0.9
# Whitespace (TODO)
# Doc: https://doc.rust-lang.org/reference/whitespace.html
syntax_pattern normal normal text '[ \t\r\n]+'
# Macro (TODO)
#syntax_pattern normal macro rust_macro '[a-z_]+[a-z0-9_]*!' ignorecase
# Line comment
# Doc: https://doc.rust-lang.org/reference/comments.html
syntax_pattern normal line_comment rust_comment '//'
syntax_pattern line_comment normal rust_comment '(\r\n|\r|\n)$'
syntax_pattern line_comment line_comment rust_comment '\\(\r\n|\r|\n)$'
syntax_pattern line_comment line_comment rust_fixme '\b(TODO|FIXME|XXX|NOTE)\b'
syntax_pattern line_comment line_comment rust_comment '.[^\\TFX\r\n]*'
# Block comment
syntax_pattern normal block_comment rust_comment '/\*'
syntax_pattern block_comment normal rust_comment '\*/'
syntax_pattern block_comment block_comment rust_fixme '\b(TODO|FIXME|XXX|NOTE)\b'
syntax_pattern block_comment block_comment rust_comment '.[^\*TFX]*'
# Keywords (TODO)
# Doc: https://doc.rust-lang.org/reference/keywords.html#weak-keywords
#syntax_pattern normal normal rust_string '\b\'[a-z_]+[a-z0-9_]*\b' ignorecase
#syntax_pattern normal normal rust_string '\b\'[a-z_]+\b' ignorecase
syntax_pattern normal normal rust_string "\b'[a-z_]+\b" ignorecase
# Char
syntax_pattern normal normal rust_char "'.'"
syntax_pattern normal char rust_char "'(?=\\\\)"
syntax_pattern char normal rust_char "'"
syntax_pattern char char rust_escapedchar "\\\\([0-7]{1,3}|x[0-9a-f]{1,2}|u\{[0-9a-f]{1,6}\}|.)"
# String
# Doc: https://doc.rust-lang.org/reference/tokens.html#string-literals
syntax_pattern normal string rust_string '"'
syntax_pattern string normal rust_string '"'
syntax_pattern string string rust_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|u\{[0-9a-f]{1,6}\}|.))+' ignorecase
syntax_pattern string string rust_string_multilinechar '\\$'
syntax_pattern string string rust_string '[^\\"]+'
# Raw quote-string, level 0
# Doc: https://doc.rust-lang.org/reference/tokens.html#raw-string-literals
syntax_pattern normal raw_string_0 rust_string 'r"'
syntax_pattern raw_string_0 normal rust_string '"'
syntax_pattern raw_string_0 raw_string_0 rust_string '[^"$]+'
# Raw sharp-string, level 1
syntax_pattern normal raw_string_1 rust_string 'r#"'
syntax_pattern raw_string_1 normal rust_string '"#'
syntax_pattern raw_string_1 raw_string_1 rust_string '.*?((?="#)|\r?\n)'
# Raw sharp-string, level 2
syntax_pattern normal raw_string_2 rust_string 'r##"'
syntax_pattern raw_string_2 normal rust_string '"##'
syntax_pattern raw_string_2 raw_string_2 rust_string '.*?((?="##)|\r?\n)'
# Raw sharp-string, level 3
syntax_pattern normal raw_string_3 rust_string 'r###"'
syntax_pattern raw_string_3 normal rust_string '"###'
syntax_pattern raw_string_3 raw_string_3 rust_string '.*?((?="###)|\r?\n)'
# Raw sharp-string, level 4
syntax_pattern normal raw_string_4 rust_string 'r####"'
syntax_pattern raw_string_4 normal rust_string '"####'
syntax_pattern raw_string_4 raw_string_4 rust_string '.*?((?="####)|\r?\n)'
# Raw sharp-string, level 5
# Limit is 256 '#', but 5 seems reasonable for now
syntax_pattern normal raw_string_5 rust_string 'r#####"'
syntax_pattern raw_string_5 normal rust_string '"#####'
syntax_pattern raw_string_5 raw_string_5 rust_string '.*?((?="#####)|\r?\n)'
# Suffixes (TODO)
# Doc: https://doc.rust-lang.org/reference/tokens.html#suffixes
syntax_pattern normal normal rust_literal '\b[0-9_]+(isize|usize|char|bool|u8|u16|u32|u64|u128|f32|f64|i8|i16|i32|i64|i128|)\b'
syntax_pattern normal normal rust_literal '\b0b[01_]+(isize|usize|char|bool|u8|u16|u32|u64|u128|f32|f64|i8|i16|i32|i64|i128|)\b'
syntax_pattern normal normal rust_literal '\b0o[0-7_]+(isize|usize|char|bool|u8|u16|u32|u64|u128|f32|f64|i8|i16|i32|i64|i128|)\b'
syntax_pattern normal normal rust_literal '\b0x[0-9a-f_]+(isize|usize|char|bool|u8|u16|u32|u64|u128|f32|f64|i8|i16|i32|i64|i128|)\b'
syntax_pattern normal normal rust_literal '\b[0-9_]+E\+[0-9_]+(f32|f64)\b'
syntax_pattern normal normal rust_literal '\b(true|false)\b'
# import keywords
syntax_pattern normal normal rust_import '\b(use|mod)\b'
# typing keywords
syntax_pattern normal normal rust_type '\b(isize|usize|char|bool|u8|u16|u32|u64|u128|f32|f64|i8|i16|i32|i64|i128|str|Self)\b'
# keywords
syntax_pattern normal normal rust_keyword '\b(as|break|const|continue|crate|else|enum|extern|false|fn|for|if|impl|in|let|loop|match|move|mut|pub|ref|return|self|Self|static|struct|super|trait|true|type|unsafe|where|while|async|await|dyn|abstract|become|box|do|final|macro|override|priv|typeof|unsized|virtual|yield|try|union)\b'
# punctuation
syntax_pattern normal normal rust_punctuation '[!~%\|\&\^\(\)\<\>\*\-\+=\{\}\[\]:;,\?$]+'
syntax_pattern normal normal rust_punctuation '[/\.]'
# parsing optimization
syntax_pattern normal normal text '[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,67 @@
# SQL syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax SQL normal text
syntax_files SQL '\.sql$'
# colours
colour sql_comment 0.2 0.4 0.64
colour sql_fixme 1.0 0.5 0.0
colour sql_keyword 0.77 0.63 0.0
colour sql_type 0.3 0.6 0.02
colour sql_literal 1.0 0.2 0.8
colour sql_string 0.8 0.0 0.0
colour sql_escapedchar 0.46 0.31 0.48
colour sql_punctuation 0.5 0.5 0.5
colour sql_identifier 0.46 0.31 0.48
colour sql_variable 0.02 0.6 0.6
# whitespace
syntax_pattern normal normal text '[ \t\r\n]+'
# regular comments
syntax_pattern normal cpp_comment sql_comment '(#|--)'
syntax_pattern cpp_comment cpp_comment sql_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern cpp_comment normal sql_comment '(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment sql_comment '.[^TFX\r\n]*'
# C style comments
syntax_pattern normal comment sql_comment '/\*'
syntax_pattern comment normal sql_comment '\*/'
syntax_pattern comment comment sql_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment sql_comment '.[^\*TFX]*'
# char
syntax_pattern normal char sql_string "(_latin1|_utf8|N|n)?'"
syntax_pattern char char sql_escapedchar "(\\\\[0'\"bnrtZ\\\\%_]|'')+"
syntax_pattern char char sql_string "[^\\\\']+"
syntax_pattern char normal sql_string "'"
# string
syntax_pattern normal string sql_string '(_latin1|_utf8|N|n)?"'
syntax_pattern string string sql_escapedchar "(\\\\[0'\"bnrtZ\\\\%_]|\"\")+"
syntax_pattern string string sql_string '[^\\"]+'
syntax_pattern string normal sql_string '"'
# identifier
syntax_pattern normal normal sql_identifier '`[^`]+`'
# variables
syntax_pattern normal normal sql_variable '@[a-z0-9\._\$]+' ignorecase
# literals
syntax_pattern normal normal sql_literal "([0-9]*\.[0-9]+(e[\+\-]?[0-9]+)?|0x[0-9a-f]+|[0-9]+|x'[0-9a-f]+'|b'[01]+')" ignorecase
syntax_pattern normal normal sql_literal '\b(true|false|null)\b' ignorecase
syntax_pattern normal normal sql_literal '\\N\b'
# types
syntax_pattern normal normal sql_type '\b(ascii|bigint|binary|bit|blob|bool|boolean|byte|char|character|collate|date|datetime|dec|decimal|double|enum|fixed|float[48]?|int[12348]?|integer|long|longblob|longtext|mediumblob|mediumint|mediumtext|middleint|numeric|precision|real|serial|signed|smallint|text|time|timestamp|tinyblob|tinyint|tinytext|unicode|varbinary|varchar|varcharacter|year)\b' ignorecase
# keywords
syntax_pattern normal normal sql_keyword '\b(accessible|add|all|alter|analyze|and|as|asc|asensitive|auto_increment|before|between|both|by|call|cascade|case|change|charset|check|column|condition|constraint|continue|convert|create|cross|current_date|current_time|current_timestamp|current_user|cursor|database|databases|day_hour|day_microsecond|day_minute|day_second|declare|default|delayed|delete|desc|describe|deterministic|distinct|distinctrow|div|drop|dual|each|else|elseif|enclosed|engine|escaped|exists|exit|explain|fetch|for|force|foreign|from|fulltext|grant|group|having|high_priority|hour_microsecond|hour_minute|hour_second|if|ignore|in|index|infile|inner|inout|insensitive|insert|interval|into|is|iterate|join|key|keys|kill|leading|leave|left|like|limit|linear|lines|load|localtime|localtimestamp|lock|loop|low_priority|master_ssl_verify_server_cert|match|minute_microsecond|minute_second|mod|modifies|natural|no_write_to_binlog|not|on|optimize|option|optionally|or|order|out|outer|outfile|primary|procedure|purge|range|read|read_only|read_write|reads|real|references|regexp|release|rename|repeat|replace|require|restrict|return|revoke|right|rlike|schema|schemas|second_microsecond|select|sensitive|separator|set|show|spatial|specific|sql|sql_big_result|sql_calc_found_rows|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|starting|straight_join|table|terminated|then|to|trailing|trigger|undo|union|unique|unlock|unsigned|update|usage|use|using|utc_date|utc_time|utc_timestamp|values|varying|when|where|while|with|write|xor|year_month|zerofill)\b' ignorecase
# punctuation
syntax_pattern normal normal sql_punctuation '[=<>!\|\+\-\*\.,;\(\)]+'
syntax_pattern normal normal sql_punctuation '/'
# parsing optimisation
syntax_pattern normal normal text '[a-z_][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,59 @@
# Tcl syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax Tcl normal text
syntax_files Tcl '\.tcl$'
syntax_magic Tcl '^#![ \t]*([^ \t/]*/)*(env[ \t]+)?(tclsh|wish)[0-9\.]*([ \t].*)?$'
# colours
colour tcl_comment 0.2 0.4 0.64
colour tcl_fixme 1.0 0.5 0.0
colour tcl_literal 1.0 0.2 0.8
colour tcl_string 0.8 0.0 0.0
colour tcl_escapedchar 0.46 0.31 0.48
colour tcl_variable 0.02 0.6 0.6
colour tcl_keyword 0.77 0.63 0.0
colour tcl_punctuation 0.5 0.5 0.5
colour tcl_function 0.02 0.6 0.6
# whitespace/comments
syntax_pattern normal normal text '[ \t\r]+'
syntax_pattern expr expr text '[ \t\r]+'
syntax_pattern normal comment tcl_comment '#'
syntax_pattern comment normal tcl_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment tcl_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment tcl_comment '.[^TFX\r\n]*'
# strings
syntax_pattern expr string tcl_string '"'
syntax_pattern string expr tcl_string '"'
syntax_pattern string string tcl_variable '\$(([a-z_0-9]|::)+|\{([a-z_0-9]|::)+\})' ignorecase
syntax_pattern string string tcl_escapedchar '\\([0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{1,4}|.)'
syntax_pattern string string tcl_string '.[^\\"\$]*'
# escaped characters outside of strings
syntax_pattern expr expr tcl_escapedchar '\\([0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{1,4}|\r?\n|.)'
# literals
syntax_pattern expr expr python_literal '(0b[01]+|0o[0-7]+|0x[0-9a-f]+|([0-9]+(\.[0-9]*)?|\.[0-9]+)(e[\+\-]?[0-9]+)?)' ignorecase
syntax_pattern expr expr python_literal '\b(Inf|NaN)\b'
# keywords
syntax_pattern normal expr tcl_keyword '\b(after|append|array|bgerror|binary|break|case|catch|cd|chan|clock|close|concat|continue|dict|encoding|eof|error|eval|exec|exit|fblocked|fconfigure|fcopy|file|fileevent|flush|for|foreach|format|gets|glob|global|history|if|incr|info|interp|join|lappend|lassign|lindex|linsert|list|llength|load|lrange|lrepeat|lreplace|lreverse|lsearch|lset|lsort|memory|namespace|open|package|pid|pkg_mkIndex|puts|pwd|read|regexp|regsub|rename|return|scan|seek|set|socket|source|split|string|subst|switch|tell|time|trace|unknown|unload|unset|update|uplevel|upvar|variable|vwait|while)\b'
# function/class definitions
syntax_pattern normal declaration tcl_keyword '\b(proc)\b'
syntax_pattern declaration declaration text '[ \t]+'
syntax_pattern declaration expr tcl_function '([a-z_0-9]|::)+' ignorecase
syntax_pattern declaration expr text ''
# punctuation
syntax_pattern expr normal tcl_punctuation '[;\{\[]+'
syntax_pattern expr normal text '(\r\n|\r|\n)$'
syntax_pattern expr expr tcl_punctuation '[\^\}\]\-\+~!\*/%<>=&\|\?\:\(\)]+'
# environment variables
syntax_pattern expr expr tcl_variable '\$(([a-z_0-9]|::)+|\{([a-z_0-9]|::)+\})' ignorecase
# parsing optimisation
syntax_pattern expr expr text '[a-z_0-9]+' ignorecase
syntax_pattern normal expr text ''

View File

@ -0,0 +1,57 @@
# VB.NET syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax VB.NET normal text
syntax_files VB.NET '\.vb$'
# colours
colour vb_comment 0.2 0.4 0.64
colour vb_fixme 1.0 0.5 0.0
colour vb_import 0.46 0.31 0.48
colour vb_keyword 0.77 0.63 0.0
colour vb_type 0.3 0.6 0.02
colour vb_literal 1.0 0.2 0.8
colour vb_string 0.8 0.0 0.0
colour vb_escapedchar 0.46 0.31 0.48
colour vb_punctuation 0.5 0.5 0.5
# whitespace
syntax_pattern normal normal text '[ \t\r\n]+'
# comments
syntax_pattern normal comment vb_comment "'"
syntax_pattern normal comment vb_comment '\brem\b' ignorecase
syntax_pattern comment normal vb_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment vb_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment vb_comment '.[^TFX\r\n]*'
# date
syntax_pattern normal date vb_string '#'
syntax_pattern date normal vb_string '#'
syntax_pattern date date vb_string ".[^#]*"
# string
syntax_pattern normal string vb_string '"'
syntax_pattern string string vb_escapedchar '""'
syntax_pattern string normal vb_string '"c?' ignorecase
syntax_pattern string string vb_string '.[^"]*'
# literals
syntax_pattern normal normal vb_literal '\b([0-9]*\.[0-9]+(e[+-]?[0-9]+)?[frd]?|[0-9]+[frdsil]?|True|False|Nothing)\b' ignorecase
syntax_pattern normal normal vb_literal '&(o[0-7]+|h[0-9a-f]+)[sil]?\b' ignorecase
# import keywords
syntax_pattern normal normal vb_import '\b(Imports|Option)\b'
# typing keywords
syntax_pattern normal normal vb_type '\b(Boolean|Byte|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|CLng|CObj|CShort|CSng|CStr|Date|Decimal|Double|Integer|Long|Object|Short|Single|String|Variant)\b' ignorecase
# keywords
syntax_pattern normal normal vb_keyword '\b(AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|ByRef|ByVal|Call|Case|Catch|Class|Const|CType|Declare|Default|Delegate|Dim|DirectCast|Do|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|In|Inherits|Interface|Is|Let|Lib|Like|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|On|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Static|Step|Stop|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Wend|When|While|With|WithEvents|WriteOnly|Xor)\b' ignorecase
# punctuation
syntax_pattern normal normal vb_punctuation '[\(\)\{\}!,\.:]+'
#'[!~%\|\&\^\(\)\<\>\*\-\+=\{\}\[\]:;,\.\?]+'
#syntax_pattern normal normal vb_punctuation '/'
# parsing optimisation
syntax_pattern normal normal text '[a-z][a-z_0-9]*' ignorecase

View File

@ -0,0 +1,66 @@
# Verilog syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax Verilog normal text
syntax_files Verilog '\.v$'
# colours
colour verilog_comment 0.2 0.4 0.64
colour verilog_fixme 1.0 0.5 0.0
colour verilog_keyword 0.77 0.63 0.0
colour verilog_type 0.3 0.6 0.02
colour verilog_cpp 0.8 0.0 0.0
colour verilog_cppkeyword 0.46 0.31 0.48
colour verilog_literal 1.0 0.2 0.8
colour verilog_string 0.8 0.0 0.0
colour verilog_escapedchar 0.46 0.31 0.48
colour verilog_variable 0.02 0.6 0.6
colour verilog_punctuation 0.5 0.5 0.5
# directives
syntax_pattern normal cpp verilog_cppkeyword '`[0-9a-z_]+'
syntax_pattern cpp normal verilog_cppkeyword '(\r\n|\r|\n)$'
syntax_pattern normal normal text '[ \t\r\n]+'
# C++ style comments
syntax_pattern normal cpp_comment verilog_comment '//'
syntax_pattern cpp cpp_comment verilog_comment '//'
syntax_pattern cpp_comment normal verilog_comment '(\r\n|\r|\n)$'
syntax_pattern cpp_comment cpp_comment verilog_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern cpp_comment cpp_comment verilog_comment '.[^TFX\r\n]*'
# C style comments
syntax_pattern normal comment verilog_comment '/\*'
syntax_pattern comment normal verilog_comment '\*/'
syntax_pattern comment comment verilog_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment verilog_comment '.[^\*TFX]*'
syntax_pattern cpp comment_cpp verilog_comment '/\*'
syntax_pattern comment_cpp cpp verilog_comment '\*/'
syntax_pattern comment_cpp comment_cpp verilog_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment_cpp comment_cpp verilog_comment '.[^\*TFX]*'
# preprocessor args
syntax_pattern cpp cpp verilog_cpp '.[^/\r\n]*'
# string
syntax_pattern normal string verilog_string '"'
syntax_pattern string normal verilog_string '"'
syntax_pattern string string verilog_escapedchar '(\\([0-7]{1,3}|x[0-9a-f]{1,2}|.))+' ignorecase
syntax_pattern string string verilog_string '.[^\\"]*'
# literals
syntax_pattern normal normal verilog_literal "(([0-9]+\\.[0-9]*|\\.[0-9]+)(e[\\+\\-]?[0-9]+)?|[0-9]+e[\\+\\-]?[0-9]+|[0-9]+('(b[01xz_]+|o[0-7xz_]+|d[0-9xz_]+|h[0-9a-fxz_]))?)" ignorecase
# typing keywords
syntax_pattern normal normal verilog_type '\b(defparam|inout|input|integer|output|parameter|real|reg|supply[01]|time|tri(and|or|reg|0|1|)|wand|wire|wor)\b'
# keywords
syntax_pattern normal normal verilog_keyword '\b(always|and|assign|attribute|begin|buf|bufif0|bufif1|case|casex|casez|cmos|deassign|default|disable|edge|else|end|endattribute|endcase|endfunction|endmodule|endprimitive|endspecify|endtable|endtask|event|for|force|forever|fork|function|highz0|highz1|if|ifnone|initial|join|medium|module|large|macromodule|nand|negedge|nmos|nor|not|notif0|notif1|or|pmos|posedge|primitive|pull0|pull1|pulldown|pullup|rcmos|realtime|release|repeat|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|signed|small|specify|specparam|strength|strong0|strong1|table|task|tran|tranif0|tranif1|unsigned|vectored|wait|weak0|weak1|while|xnor|xor)\b'
# punctuation
syntax_pattern normal normal verilog_punctuation '[\[\]\(\)!~&\|\^\+\-\{\}\*%<=>\?:,;@#]+'
syntax_pattern normal normal verilog_punctuation '[/\.]'
# parsing optimisation
syntax_pattern normal normal verilog_variable '\$[a-z_0-9\$]*' ignorecase
syntax_pattern normal normal text '[a-z_][a-z_0-9\$]*' ignorecase

View File

@ -0,0 +1,56 @@
# VHDL syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax VHDL normal text
syntax_files VHDL '\.vhdl$'
# colours
colour vhdl_comment 0.2 0.4 0.64
colour vhdl_fixme 1.0 0.5 0.0
colour vhdl_import 0.46 0.31 0.48
colour vhdl_keyword 0.77 0.63 0.0
colour vhdl_type 0.3 0.6 0.02
colour vhdl_literal 1.0 0.2 0.8
colour vhdl_string 0.8 0.0 0.0
colour vhdl_escapedchar 0.46 0.31 0.48
colour vhdl_punctuation 0.5 0.5 0.5
# whitespace
syntax_pattern normal normal text '[ \t\r\n]+'
# comments
syntax_pattern normal comment vhdl_comment '--'
syntax_pattern comment normal vhdl_comment '(\r\n|\r|\n)$'
syntax_pattern comment comment vhdl_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment vhdl_comment '.[^\-TFX\r\n]*'
# char
syntax_pattern normal normal vhdl_string "'.'"
# string
syntax_pattern normal string vhdl_string '"'
syntax_pattern string string vhdl_escapedchar '""'
syntax_pattern string normal vhdl_string '"'
syntax_pattern string string vhdl_string '.[^"]*'
# literals
syntax_pattern normal normal vhdl_literal '([0-9](#[0-9a-f_]*#|(\.[0-9]+)?(e[\+\-]?[0-9]+)?)|b"[01_]*"|o"[0-7_]*"|x"[0-9a-f_]*")' ignorecase
syntax_pattern normal normal vhdl_literal '\b(true|false)\b' ignorecase
# import keywords
syntax_pattern normal normal vhdl_import '\b(all|library|use)\b' ignorecase
# typing keywords
syntax_pattern normal normal vhdl_type '\b(array|bit|bit_vector|boolean|character|constant|file|file_open_kind|file_open_status|integer|natural|positive|real|severity_level|signal|string|std_u?logic(_vector)?|subtype|time|type|variable)\b' ignorecase
# keywords
syntax_pattern normal normal vhdl_keyword '\b(abs|access|after|alias|and|architecture|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|disconnect|downto|else|elsif|end|entity|exit|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|return|rol|ror|select|severity|shared|sla|sli|sra|srl|then|to|transport|unaffected|units|until|wait|when|while|with|xnor|xor)\b' ignorecase
# punctuation
syntax_pattern normal normal vhdl_punctuation '[\.,:;=/<>\+&\-\*\(\)]+'
syntax_pattern normal normal vhdl_punctuation '-'
# parsing optimisation
syntax_pattern normal identifier text '\\'
syntax_pattern identifier normal text '\\'
syntax_pattern identifier identifier text '.[^\\]*'
syntax_pattern normal normal text "[a-z_]['a-z_0-9]*" ignorecase

View File

@ -0,0 +1,135 @@
# XML syntax file for Diffuse
# Copyright (C) 2008-2009 Derrick Moser <derrick_moser@yahoo.com>
syntax XML normal text
syntax_files XML '\.(dtd|omf|plist|svg|xhtml|xml|xsd|xsl)$'
syntax_magic XML '^[ \t]*<\?[ \t]*xml\b'
# colours
colour xml_comment 0.2 0.4 0.64
colour xml_fixme 1.0 0.5 0.0
colour xml_escapedchar 0.77 0.63 0.0
colour xml_processingtag 0.46 0.31 0.48
colour xml_processingtagname 0.3 0.6 0.02
colour xml_tag 0.02 0.6 0.6
colour xml_tagname 0.77 0.63 0.0
colour xml_punctuation 0.5 0.5 0.5
colour xml_attribute 0.3 0.6 0.02
colour xml_string 0.8 0.0 0.0
colour xml_cdatatag 0.3 0.6 0.02
colour xml_cdata 0.8 0.0 0.0
# whitespace/comments
syntax_pattern normal normal text '[ \t\r\n]+'
syntax_pattern normal comment xml_comment '<!--'
syntax_pattern comment normal xml_comment '-->'
syntax_pattern comment comment xml_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern comment comment xml_comment '.[^TFX\-]*'
# processing
syntax_pattern normal process xml_processingtag '<\?'
syntax_pattern process process text '[ \t\r\n]+'
syntax_pattern process process_attribs xml_processingtagname '\b[a-z][a-z_0-9]*([ \t]*:[ \t]*[a-z][a-z_0-9]*)?\b' ignorecase
syntax_pattern process_attribs normal xml_processingtag '\?>'
syntax_pattern process_attribs process_attribs text '[ \t\r\n]+'
syntax_pattern process_attribs process_attribs xml_punctuation '='
syntax_pattern process_attribs process_attribs xml_attribute '[a-z_0-9\-:\.]+' ignorecase
syntax_pattern process_attribs process_string xml_string '"'
syntax_pattern process_string process_attribs xml_string '"'
syntax_pattern process_string process_string xml_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern process_string process_string xml_string '.[^\&"]*'
syntax_pattern process_attribs process_singlestring xml_string "'"
syntax_pattern process_singlestring process_attribs xml_string "'"
syntax_pattern process_singlestring process_singlestring xml_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern process_singlestring process_singlestring xml_string ".[^\\&']*"
# cdata
syntax_pattern normal cdata xml_cdatatag '<!\[CDATA\['
syntax_pattern cdata normal xml_cdatatag '\]\]>'
syntax_pattern cdata cdata xml_cdata '.[^\]]*'
# definitions
syntax_pattern normal def xml_tag '<!'
syntax_pattern def def_attribs xml_tagname '(ELEMENT|ENTITY|ATTLIST|NOTATION)\b'
syntax_pattern def doc_attribs xml_tagname 'DOCTYPE\b'
syntax_pattern def def_attribs text ''
syntax_pattern def_attribs normal xml_tag '>'
syntax_pattern def_attribs def_comment xml_comment '--'
syntax_pattern def_comment def_attribs xml_comment '--'
syntax_pattern def_comment def_comment xml_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern def_comment def_comment xml_comment '.[^TFX\-]*'
syntax_pattern def_attribs def_attribs text '[ \t\r\n]+'
syntax_pattern def_attribs def_attribs xml_punctuation '[=%\(\)\|,\?\*\+;\&]+'
syntax_pattern def_attribs def_attribs xml_attribute '#?[a-z_0-9\-:\.]+' ignorecase
syntax_pattern def_attribs def_string xml_string '"'
syntax_pattern def_string def_attribs xml_string '"'
syntax_pattern def_string def_string xml_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern def_string def_string xml_string '.[^\&"]*'
syntax_pattern def_attribs def_singlestring xml_string "'"
syntax_pattern def_singlestring def_attribs xml_string "'"
syntax_pattern def_singlestring def_singlestring xml_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern def_singlestring def_singlestring xml_string ".[^\\&']*"
# doctype
syntax_pattern doc_attribs normal xml_tag '>'
syntax_pattern doc_attribs doc_comment xml_comment '--'
syntax_pattern doc_comment doc_attribs xml_comment '--'
syntax_pattern doc_comment doc_comment xml_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern doc_comment doc_comment xml_comment '.[^TFX\-]*'
syntax_pattern doc_attribs doc_attribs text '[ \t\r\n]+'
syntax_pattern doc_attribs doc_attribs xml_punctuation '[=%\(\)\|,\?\*\+;\&]+'
syntax_pattern doc_attribs def_normal xml_punctuation '\['
syntax_pattern doc_attribs doc_attribs xml_attribute '#?[a-z_0-9\-:\.]+' ignorecase
syntax_pattern doc_attribs doc_string xml_string '"'
syntax_pattern doc_string doc_attribs xml_string '"'
syntax_pattern doc_string doc_string xml_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern doc_string doc_string xml_string '.[^\&"]*'
syntax_pattern doc_attribs doc_singlestring xml_string "'"
syntax_pattern doc_singlestring doc_attribs xml_string "'"
syntax_pattern doc_singlestring doc_singlestring xml_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern doc_singlestring doc_singlestring xml_string ".[^\\&']*"
# doctype definitions
syntax_pattern def_normal doc_attribs xml_punctuation '\]'
syntax_pattern def_normal def2 xml_tag '<!'
syntax_pattern def2 def2_attribs xml_tagname '(ELEMENT|ENTITY|ATTLIST|NOTATION)\b'
syntax_pattern def2 def2_attribs text ''
syntax_pattern def2_attribs def_normal xml_tag '>'
syntax_pattern def2_attribs def2_comment xml_comment '--'
syntax_pattern def2_comment def2_attribs xml_comment '--'
syntax_pattern def2_comment def2_comment xml_fixme '\b(TODO|FIXME|XXX)\b'
syntax_pattern def2_comment def2_comment xml_comment '.[^TFX\-]*'
syntax_pattern def2_attribs def2_attribs text '[ \t\r\n]+'
syntax_pattern def2_attribs def2_attribs xml_punctuation '[=%\(\)\|,\?\*\+;\&]+'
syntax_pattern def2_attribs def2_attribs xml_attribute '#?[a-z_0-9\-:\.]+' ignorecase
syntax_pattern def2_attribs def2_string xml_string '"'
syntax_pattern def2_string def2_attribs xml_string '"'
syntax_pattern def2_string def2_string xml_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern def2_string def2_string xml_string '.[^\&"]*'
syntax_pattern def2_attribs def2_singlestring xml_string "'"
syntax_pattern def2_singlestring def2_attribs xml_string "'"
syntax_pattern def2_singlestring def2_singlestring xml_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern def2_singlestring def2_singlestring xml_string ".[^\\&']*"
# tags
syntax_pattern normal tag xml_tag '</?'
syntax_pattern tag tag text '[ \t\r\n]+'
syntax_pattern tag tag_attribs xml_tagname '\b[a-z][a-z_0-9]*([ \t]*:[ \t]*[a-z][a-z_0-9]*)*\b' ignorecase
syntax_pattern tag tag_attribs text ''
syntax_pattern tag_attribs normal xml_tag '/?>'
syntax_pattern tag_attribs tag_attribs text '[ \t\r\n]+'
syntax_pattern tag_attribs tag_attribs xml_punctuation '='
syntax_pattern tag_attribs tag_attribs xml_attribute '[a-z_0-9\-:\.]+' ignorecase
syntax_pattern tag_attribs tag_string xml_string '"'
syntax_pattern tag_string tag_attribs xml_string '"'
syntax_pattern tag_string tag_string xml_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern tag_string tag_string xml_string '.[^\&"]*'
syntax_pattern tag_attribs tag_singlestring xml_string "'"
syntax_pattern tag_singlestring tag_attribs xml_string "'"
syntax_pattern tag_singlestring tag_singlestring xml_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern tag_singlestring tag_singlestring xml_string ".[^\\&']*"
# text/parsing optimisation
syntax_pattern normal normal xml_escapedchar '\&([a-z_:][a-z_0-9\.\-_:]*|#[0-9]+|#x[0-9a-f]+);' ignorecase
syntax_pattern normal normal text '.[^\&<]*'

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<omf>
<resource>
<creator>Derrick Moser</creator>
<maintainer>Derrick Moser</maintainer>
<title>Diffuse User's Manual</title>
<date>2024-01-13</date>
<version identifier="0.9.0" date="2024-01-13"/>
<subject category="GNOME|Development|Applications"/>
<description>Diffuse is a graphical tool for merging and comparing text files.</description>
<type>manual</type>
<format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.2//EN"/>
<identifier url="file:///usr/share/gnome/help/diffuse/C/diffuse.xml"/>
<language code="C"/>
<relation seriesid="0f102352-c827-b1a8-b28a-d657ef9b98a9a0"/>
<rights type="GNU FDL" license.version="1.1" license="http://www.gnu.org/licenses/fdl.html" holder="Derrick Moser"/>
</resource>
</omf>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<omf>
<resource>
<creator>Derrick Moser</creator>
<maintainer>Derrick Moser</maintainer>
<title>Uživatelská příručka programu Diffuse</title>
<date>2024-01-13</date>
<version identifier="0.9.0" date="2024-01-13"/>
<subject category="GNOME|Development|Applications"/>
<description>Diffuse je grafický nástroj pro slučování a porovnávání textových souborů.</description>
<type>manual</type>
<format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.2//EN"/>
<identifier url="file:///usr/share/gnome/help/diffuse/cs/diffuse.xml"/>
<language code="cs"/>
<relation seriesid="0f102352-c827-b1a8-b28a-d657ef9b98a9a0"/>
<rights type="GNU FDL" license.version="1.1" license="http://www.gnu.org/licenses/fdl.html" holder="Derrick Moser"/>
</resource>
</omf>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<omf>
<resource>
<creator>Derrick Moser</creator>
<maintainer>Derrick Moser</maintainer>
<title>Manuale utente di Diffuse</title>
<date>2024-01-13</date>
<version identifier="0.9.0" date="2024-01-13"/>
<subject category="GNOME|Development|Applications"/>
<description>Diffuse è uno strumento grafico per l'unione e il confronto di file di testo.</description>
<type>manual</type>
<format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.2//EN"/>
<identifier url="file:///usr/share/gnome/help/diffuse/it/diffuse.xml"/>
<language code="it"/>
<relation seriesid="0f102352-c827-b1a8-b28a-d657ef9b98a9a0"/>
<rights type="GNU FDL" license.version="1.1" license="http://www.gnu.org/licenses/fdl.html" holder="Derrick Moser"/>
</resource>
</omf>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<omf>
<resource>
<creator>Derrick Moser</creator>
<maintainer>Derrick Moser</maintainer>
<title>Руководство Пользователя Diffuse</title>
<date>2024-01-13</date>
<version identifier="0.9.0" date="2024-01-13"/>
<subject category="GNOME|Development|Applications"/>
<description>Программа Diffuse является графическим инструментом для слияния и сравнения текстовых файлов.</description>
<type>manual</type>
<format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.2//EN"/>
<identifier url="file:///usr/share/gnome/help/diffuse/ru/diffuse.xml"/>
<language code="ru"/>
<relation seriesid="0f102352-c827-b1a8-b28a-d657ef9b98a9a0"/>
<rights type="GNU FDL" license.version="1.1" license="http://www.gnu.org/licenses/fdl.html" holder="Derrick Moser"/>
</resource>
</omf>

11
docs/README.md Normal file
View File

@ -0,0 +1,11 @@
# Diffuse documentation
Welcome to Diffuse documentation!
Here are the main sections:
1. [Users](users.md)
2. [Translators](translators.md)
3. Developers
1. [Developers setup](developers/developers-setup.md)
2. [Release process](developers/release-process.md)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

View File

@ -0,0 +1,196 @@
# Developers setup
## Requirements
Diffuse depends on these projects:
* Python 3.8+
* PyPi
* Cairo and GObject Introspection development headers
* Meson
* Flatpak and Flatpak builder (Linux only)
## Install the dependencies
### Install the system dependencies
It's a bit difficult to get the command lines for all the systems, but these
examples should be enough to find the packages on most systems.
<details>
<summary>Debian/Ubuntu</summary>
```sh
sudo apt install python3-pip libcairo2-dev libgirepository1.0-dev meson flatpak flatpak-builder
```
_Note: Tested on Debian 11 (Buster) and Ubuntu 20.04 (Focal)_
</details>
<details>
<summary>Fedora</summary>
```sh
sudo dnf install python-pip cairo-devel cairo-gobject-devel meson flatpak flatpak-builder
```
_Note: Tested on Fedora 36_
</details>
<details>
<summary>macOS</summary>
On Mac, all dependencies can be installed using [Homebrew](https://docs.brew.sh/):
```sh
brew install meson python3 py3cairo pygobject3 gtk+3 librsvg
```
_Note: Tested on macOS 12.5 (Monterey)_
</details>
### Install the project dependencies
To install the requirements just to execute the binary, run:
```sh
pip3 install -r requirements.txt
```
For developer tools, run this one instead (it includes requirements.txt):
```sh
pip3 install -r requirements.dev.txt
```
## Setup
### Setup on Linux using Flatpak
#### Build, test and install
To build, test and install Diffuse locally:
```sh
flatpak install runtime/org.gnome.Sdk/$(uname -p)/44
flatpak-builder --user --install build-flatpak io.github.mightycreak.Diffuse.yml
```
#### Run
To run Diffuse through Flatpak:
```sh
flatpak run --user io.github.mightycreak.Diffuse
```
#### Uninstall
To uninstall Diffuse:
```sh
flatpak remove --user io.github.mightycreak.Diffuse
```
### Setup on Linux using Meson
#### Build and test
Diffuse is using Meson as its build system.
To build and test Diffuse:
```sh
meson setup build
meson compile -C build
meson test -C build
```
#### Install on system and run
To install Diffuse on your system (e.g. `/usr/local/`):
```sh
meson install -C build # requires admin privileges
```
To run Diffuse:
```sh
diffuse
```
#### Install in a custom directory and run
Meson allows to change the default installation directories, see
[command-line documentation](https://mesonbuild.com/Commands.html#configure).
To install Diffuse in a custom directory (e.g. `~/bin/diffuse`):
```sh
meson install -C build --destdir ~/bin/diffuse
```
To run Diffuse:
```sh
export PYTHONPATH=$HOME/bin/diffuse/usr/local/share/diffuse
cd ~/bin/diffuse/usr/local/bin
./diffuse
```
#### Uninstall
To uninstall Diffuse afterwards:
```sh
sudo ninja uninstall -C build
sudo rm -v /usr/local/share/locale/*/LC_MESSAGES/diffuse.mo
```
### Setup on macOS
#### Build and test
Diffuse is using Meson as its build system, this is the only supported system
on macOS.
To build and test Diffuse:
```sh
meson setup build
meson compile -C build
meson test -C build
```
#### Install on system and run
To install Diffuse on your system (e.g. `/Applications/` and `/opt/homebrew/`
or `/usr/local/`):
```sh
meson install -C build # requires admin privileges
```
To run Diffuse:
```sh
diffuse
```
_Note: The `diffuse` command can be used to launch Diffuse as a native Mac app_
_that is installed into `/Applications/Diffuse.app`._
### Setup on Windows (deprecated)
_Note:_ The Windows port is not maintained and would need some love.
Contributions are very welcome! 😉
The `windows-installer` directory contains scripts for building an installable
package for Windows that includes all dependencies.
Diffuse can be packaged as a portable application by copying the installation
directory to a pen drive and creating a front end that sets the
`XDG_CONFIG_HOME` and `XDG_DATA_DIR` environment variables prior to launching
Diffuse. The `XDG_CONFIG_HOME` and `XDG_DATA_DIR` environment variables
indicate where Diffuse should store persistent settings (eg. the path to a
writable directory on the pen drive).

View File

@ -0,0 +1,70 @@
# Release process
I'd wish the release process to be more automated, but for now it's still a
few manual steps.
## Prepare the PR for the new release
### Edit files
1. Find the next version, using semantic versioning (e.g. `1.2.3`), depending on
the changes in the changelog
2. Execute `./new_release.sh NEW_VERSION` (replace `NEW_VERSION` with the new version)
3. Update the AppData release notes in `data/io.github.mightycreak.Diffuse.appdata.xml.in`:
- Look for the `<description>` tag under the new `<release>` tag
- Sum the release in one sentence in the `<p>` tag (e.g. highlights, ...)
- Paste the changes from CHANGELOG.md, and adapt it to HTML (see other
releases in the file)
### Create branch, PR and merge
1. Create a new branch (e.g. `release-1.2.3`)
2. Create a new PR
3. When everything's green: merge the PR
## Create new release on GitHub
1. Create a new release on GitHub's [new release page](https://github.com/MightyCreak/diffuse/releases/new):
- Choose a tag: Enter `v` followed with the new version (e.g. `v1.2.3`) and
create the tag
- Release title: the tag (e.g. `v1.2.3`)
- Description:
- For the first paragraph, paste the first paragraph from the release notes
- For the second paragraph, got to [CHANGELOG.md](https://github.com/MightyCreak/diffuse/blob/main/CHANGELOG.md)
and copy the URL anchor to the new release, then add this sentence
(adapt the changelog link):
```text
For a more detailed list of changes, see the
[changelog](https://github.com/MightyCreak/diffuse/blob/main/CHANGELOG.md#xyz---yyyy-mm-dd).
```
2. Publish release
## Create new release on Flatpak
1. Clone the Flathub repository: <https://github.com/flathub/io.github.mightycreak.Diffuse>
2. Copy the contents of `io.github.mightycreak.Diffuse.yml` in Diffuse repository
to Flathub's
3. Edit the file:
- Replace the content of the `diffuse` module with these lines:
```yaml
- name: diffuse
builddir: true
buildsystem: meson
config-opts:
- -Dlog_print_output=true
- -Duse_flatpak=true
sources:
- type: git
url: https://github.com/MightyCreak/diffuse
tag: <tag>
commit: <tag_commit>
```
- Replace `<tag>` with the release tag (e.g. `v1.2.3`)
- Replace `<tag_commit>` with the release tag commit (e.g. `c0cefac1c4ab99a309b65002e820f5c815e368e1`)
4. Create commit with changes and push to `main`
5. Check the build on Flathub: <https://flathub.org/builds/>
6. When it's done and successful, publish the build

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

104
docs/translators.md Normal file
View File

@ -0,0 +1,104 @@
# Translators documentation
Below are basic instructions for adding and maintaining Gettext translations
for Diffuse. The installer will discover .po files in this directory and
compile them into the corresponding .mo files.
The example commands below show how to create and manage the Japanese
translations. Replace all instances of "ja" with the code for the desired
language.
## Create PO template
To create or update the PO template (`po/diffuse.pot`), use this command at the
repo root:
```sh
xgettext -w 84 -o po/diffuse.pot -f po/POTFILES
```
_Note:_ why 84 characters, you ask? because the usage text has to be 80-char
wide, plus the beginning and ending `"` and the final `\n` (which is two
characters).
## Create a new translation
To create a new translation file, you'll need a PO template. If not already
created, refer to previous section "Create PO template".
1. Create a .po file for the translation (replace `<lang>` with your language):
```sh
msginit -w 84 -l <lang> -o <lang>.po -i diffuse.pot
```
2. Manually complete in the translations in the .po file using either an
application for that such as [Gtranslator][gtranslator] or directly with a
text editor such as [gedit][gedit] or [vim][vim].
[gtranslator]: https://www.flathub.org/apps/details/org.gnome.Gtranslator
[gedit]: https://www.flathub.org/apps/details/org.gnome.gedit
[vim]: https://www.vim.org/
## Update a translation
Use `update-translations.py` to update one or more PO files.
Here is an example with the Japanese and Korean translations, respectively
`ja.po` and `ko.po`:
Command-line:
```sh
./update-translations.py ja.po ko.po
```
This command also validate the files, so if you see a message saying "N
untranslated messages", use the text editor of your choice to complete the
translations.
## Validate a translation
Use `update-translations.py` to validate one or more PO files.
Here is an example with `ja.po` and `ko.po`:
Command-line:
```sh
./update-translations.py --check-only ja.po ko.po
```
## Windows-specific files
### Installer
Localized text for the Microsoft Windows installer is stored in separate ISL
files. Copy the [English version][english-win-docs] and replace the text to the
right of each equal sign.
[english-win-docs]: ../windows-installer/en.isl
### DocBook
Diffuse's help documentation is written in the DocBook format and can be easily
converted into other formats using XSLT stylesheets. If the local help
documentation or its browser are unavailable, Diffuse will attempt to display
the on-line help documentation using a web browser.
Start a new translation of the manual by copying the English version of the
[DocBook manual][docbook-manual] and then edit the contents.
The DocBook manual is converted to HTML for Windows and Unix man pages for
POSIX platforms. The conversion tools insert some English text that gets
localized using search and replace. Manually add new search and replace rules
to these files:
```text
../windows-installer/translations.txt
../utils/translations.txt
```
The format of each line is: \<language id\>:\<English text\>:\<localised text\>
[docbook-manual]: ../data/usr/share/gnome/help/diffuse/C/diffuse.xml

33
docs/users.md Normal file
View File

@ -0,0 +1,33 @@
# Users documentation
## Installation
### Using Flatpak
```sh
flatpak install io.github.mightycreak.Diffuse
```
Flatpak is probably the easiest way to install Diffuse on any distribution and
get the latest and greatest as quickly as possible. The Flatpak package is
hosted on [Flathub](https://flathub.org).
_Note:_ If the Flathub repository is not installed yet, please follow
[these instructions](https://flatpak.org/setup/).
### Using the distribution package manager
The Diffuse package statuses for every distributions can been seen on
[repology](https://repology.org/project/diffuse/versions).
Huge thanks to [@bongochong](https://github.com/bongochong) for maintaining the
Diffuse package on Fedora.
## Integrate with Git
Diffuse is compatible with `git difftool` command-line. To use Diffuse as Git
diff tool, run:
```sh
git config --global diff.tool diffuse
```

Binary file not shown.

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://0k6ujfaq7msw"
path="res://.godot/imported/buh_1.wav-e92be9823514555c18a1d85000eb7b5f.sample"
[deps]
source_file="res://audio/buh_1.wav"
dest_files=["res://.godot/imported/buh_1.wav-e92be9823514555c18a1d85000eb7b5f.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

Binary file not shown.

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dwsveuqk75ael"
path="res://.godot/imported/buh_2.wav-3265de19d1ec12c358a8b7076a834489.sample"
[deps]
source_file="res://audio/buh_2.wav"
dest_files=["res://.godot/imported/buh_2.wav-3265de19d1ec12c358a8b7076a834489.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

Binary file not shown.

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://fkwgly1jeqro"
path="res://.godot/imported/buh_3.wav-a51f4eb5ec7d0e39beb5b09148160404.sample"
[deps]
source_file="res://audio/buh_3.wav"
dest_files=["res://.godot/imported/buh_3.wav-a51f4eb5ec7d0e39beb5b09148160404.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

Binary file not shown.

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://d1y3npku40ufd"
path="res://.godot/imported/buh_4.wav-051f93dfac6f5affe4111e95b81d366c.sample"
[deps]
source_file="res://audio/buh_4.wav"
dest_files=["res://.godot/imported/buh_4.wav-051f93dfac6f5affe4111e95b81d366c.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

Binary file not shown.

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dxe2412gbht5x"
path="res://.godot/imported/cough_1.wav-64464c03d6559b420ee1e171b477560b.sample"
[deps]
source_file="res://audio/cough_1.wav"
dest_files=["res://.godot/imported/cough_1.wav-64464c03d6559b420ee1e171b477560b.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

Binary file not shown.

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://04yaek8c54sk"
path="res://.godot/imported/cough_2.wav-479f12d101d6cd1066d489e83754c964.sample"
[deps]
source_file="res://audio/cough_2.wav"
dest_files=["res://.godot/imported/cough_2.wav-479f12d101d6cd1066d489e83754c964.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

Binary file not shown.

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://b0q3boyn1ivpk"
path="res://.godot/imported/cough_3.wav-9f6c98fa25daeb2d797c7b6d2d749f18.sample"
[deps]
source_file="res://audio/cough_3.wav"
dest_files=["res://.godot/imported/cough_3.wav-9f6c98fa25daeb2d797c7b6d2d749f18.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

Some files were not shown because too many files have changed in this diff Show More