Full Code of ruben2020/codequery for AI

master 3f5fa3156507 cached
1148 files
12.1 MB
3.2M tokens
7545 symbols
841 requests
Copy disabled (too large) Download .txt
Showing preview only (12,915K chars total). Download the full file to get everything.
Repository: ruben2020/codequery
Branch: master
Commit: 3f5fa3156507
Files: 1148
Total size: 12.1 MB

Directory structure:
gitextract_stnjarzb/

├── .github/
│   └── workflows/
│       └── cmake.yml
├── .gitignore
├── CMakeLists.txt
├── LICENSE.md
├── NEWS.md
├── README.md
├── THIRDPARTY.md
├── cli/
│   ├── CMakeLists.txt
│   ├── README.md
│   └── main_cli.cpp
├── cmakefind/
│   └── FindSqlite.cmake
├── doc/
│   ├── HOWTO-LINUX.md
│   ├── INSTALL-LINUX.md
│   └── workflow.dia
├── gui/
│   ├── CMakeLists.txt
│   ├── aboutdialog.cpp
│   ├── aboutdialog.h
│   ├── cqimages.qrc
│   ├── cqtrans.qrc.template
│   ├── cqwin32.rc
│   ├── cqwin64.rc
│   ├── fileviewer.cpp
│   ├── fileviewer.h
│   ├── fileviewsettingsdialog.cpp
│   ├── fileviewsettingsdialog.h
│   ├── graphdialog.cpp
│   ├── graphdialog.h
│   ├── images/
│   │   └── axialisReadMe.txt
│   ├── langtable.cpp
│   ├── langtable.h
│   ├── listhandler.cpp
│   ├── listhandler.h
│   ├── main_gui.cpp
│   ├── mainwindow.cpp
│   ├── mainwindow.h
│   ├── searchhandler.cpp
│   ├── searchhandler.h
│   ├── themes/
│   │   ├── Bespin.xml
│   │   ├── Black_board.xml
│   │   ├── Choco.xml
│   │   ├── Deep_Black.xml
│   │   ├── Eclipse_Default.xml
│   │   ├── Hello_Kitty.xml
│   │   ├── HotFudgeSundae.xml
│   │   ├── Mono_Industrial.xml
│   │   ├── Monokai.xml
│   │   ├── MossyLawn.xml
│   │   ├── Navajo.xml
│   │   ├── NotepadPlusPlus.xml
│   │   ├── Obsidian.xml
│   │   ├── Plastic_Code_Wrap.xml
│   │   ├── Ruby_Blue.xml
│   │   ├── Solarized.xml
│   │   ├── Solarized_light.xml
│   │   ├── Twilight.xml
│   │   ├── Vibrant_Ink.xml
│   │   ├── Zenburn.xml
│   │   ├── khaki.xml
│   │   ├── parse_themes.pl
│   │   └── vim_Dark_Blue.xml
│   ├── themes.cpp
│   ├── themes.h
│   ├── themes_gen.cpp
│   ├── translations/
│   │   ├── codequery_de.ts
│   │   ├── codequery_en.ts
│   │   ├── codequery_es.ts
│   │   ├── codequery_fr.ts
│   │   ├── codequery_id.ts
│   │   ├── codequery_it.ts
│   │   ├── codequery_ja.ts
│   │   ├── codequery_ko.ts
│   │   ├── codequery_zh-CHS.ts
│   │   ├── codequery_zh-CHT.ts
│   │   ├── dolupdate.pl
│   │   ├── dowebtranslate.pl
│   │   └── tslist.txt
│   ├── ui/
│   │   ├── aboutDialog.ui
│   │   ├── fileViewSettingsDialog.ui
│   │   ├── graphDialog.ui
│   │   └── mainWindow.ui
│   └── winmain.cpp
├── lexilla/
│   ├── .gitattributes
│   ├── .github/
│   │   └── workflows/
│   │       ├── build-check-macos.yml
│   │       ├── build-check-win32.yml
│   │       └── build-check.yml
│   ├── .gitignore
│   ├── .travis.yml
│   ├── CMakeLists.txt
│   ├── CONTRIBUTING
│   ├── License.txt
│   ├── README
│   ├── access/
│   │   ├── LexillaAccess.cxx
│   │   ├── LexillaAccess.h
│   │   └── README
│   ├── cppcheck.suppress
│   ├── delbin.bat
│   ├── doc/
│   │   ├── Lexilla.html
│   │   ├── LexillaDoc.html
│   │   ├── LexillaDownload.html
│   │   └── LexillaHistory.html
│   ├── examples/
│   │   ├── CheckLexilla/
│   │   │   ├── CheckLexilla.c
│   │   │   └── makefile
│   │   └── SimpleLexer/
│   │       ├── SimpleLexer.cxx
│   │       └── makefile
│   ├── include/
│   │   ├── LexicalStyles.iface
│   │   ├── Lexilla.h
│   │   └── SciLexer.h
│   ├── lexers/
│   │   ├── LexA68k.cxx
│   │   ├── LexAPDL.cxx
│   │   ├── LexASY.cxx
│   │   ├── LexAU3.cxx
│   │   ├── LexAVE.cxx
│   │   ├── LexAVS.cxx
│   │   ├── LexAbaqus.cxx
│   │   ├── LexAda.cxx
│   │   ├── LexAsciidoc.cxx
│   │   ├── LexAsm.cxx
│   │   ├── LexAsn1.cxx
│   │   ├── LexBaan.cxx
│   │   ├── LexBash.cxx
│   │   ├── LexBasic.cxx
│   │   ├── LexBatch.cxx
│   │   ├── LexBibTeX.cxx
│   │   ├── LexBullant.cxx
│   │   ├── LexCIL.cxx
│   │   ├── LexCLW.cxx
│   │   ├── LexCOBOL.cxx
│   │   ├── LexCPP.cxx
│   │   ├── LexCSS.cxx
│   │   ├── LexCaml.cxx
│   │   ├── LexCmake.cxx
│   │   ├── LexCoffeeScript.cxx
│   │   ├── LexConf.cxx
│   │   ├── LexCrontab.cxx
│   │   ├── LexCsound.cxx
│   │   ├── LexD.cxx
│   │   ├── LexDMAP.cxx
│   │   ├── LexDMIS.cxx
│   │   ├── LexDataflex.cxx
│   │   ├── LexDiff.cxx
│   │   ├── LexECL.cxx
│   │   ├── LexEDIFACT.cxx
│   │   ├── LexEScript.cxx
│   │   ├── LexEiffel.cxx
│   │   ├── LexErlang.cxx
│   │   ├── LexErrorList.cxx
│   │   ├── LexFSharp.cxx
│   │   ├── LexFlagship.cxx
│   │   ├── LexForth.cxx
│   │   ├── LexFortran.cxx
│   │   ├── LexGAP.cxx
│   │   ├── LexGDScript.cxx
│   │   ├── LexGui4Cli.cxx
│   │   ├── LexHTML.cxx
│   │   ├── LexHaskell.cxx
│   │   ├── LexHex.cxx
│   │   ├── LexHollywood.cxx
│   │   ├── LexIndent.cxx
│   │   ├── LexInno.cxx
│   │   ├── LexJSON.cxx
│   │   ├── LexJulia.cxx
│   │   ├── LexKVIrc.cxx
│   │   ├── LexKix.cxx
│   │   ├── LexLaTeX.cxx
│   │   ├── LexLisp.cxx
│   │   ├── LexLout.cxx
│   │   ├── LexLua.cxx
│   │   ├── LexMMIXAL.cxx
│   │   ├── LexMPT.cxx
│   │   ├── LexMSSQL.cxx
│   │   ├── LexMagik.cxx
│   │   ├── LexMake.cxx
│   │   ├── LexMarkdown.cxx
│   │   ├── LexMatlab.cxx
│   │   ├── LexMaxima.cxx
│   │   ├── LexMetapost.cxx
│   │   ├── LexModula.cxx
│   │   ├── LexMySQL.cxx
│   │   ├── LexNim.cxx
│   │   ├── LexNimrod.cxx
│   │   ├── LexNsis.cxx
│   │   ├── LexNull.cxx
│   │   ├── LexOScript.cxx
│   │   ├── LexOpal.cxx
│   │   ├── LexPB.cxx
│   │   ├── LexPLM.cxx
│   │   ├── LexPO.cxx
│   │   ├── LexPOV.cxx
│   │   ├── LexPS.cxx
│   │   ├── LexPascal.cxx
│   │   ├── LexPerl.cxx
│   │   ├── LexPowerPro.cxx
│   │   ├── LexPowerShell.cxx
│   │   ├── LexProgress.cxx
│   │   ├── LexProps.cxx
│   │   ├── LexPython.cxx
│   │   ├── LexR.cxx
│   │   ├── LexRaku.cxx
│   │   ├── LexRebol.cxx
│   │   ├── LexRegistry.cxx
│   │   ├── LexRuby.cxx
│   │   ├── LexRust.cxx
│   │   ├── LexSAS.cxx
│   │   ├── LexSML.cxx
│   │   ├── LexSQL.cxx
│   │   ├── LexSTTXT.cxx
│   │   ├── LexScriptol.cxx
│   │   ├── LexSmalltalk.cxx
│   │   ├── LexSorcus.cxx
│   │   ├── LexSpecman.cxx
│   │   ├── LexSpice.cxx
│   │   ├── LexStata.cxx
│   │   ├── LexTACL.cxx
│   │   ├── LexTADS3.cxx
│   │   ├── LexTAL.cxx
│   │   ├── LexTCL.cxx
│   │   ├── LexTCMD.cxx
│   │   ├── LexTeX.cxx
│   │   ├── LexTxt2tags.cxx
│   │   ├── LexVB.cxx
│   │   ├── LexVHDL.cxx
│   │   ├── LexVerilog.cxx
│   │   ├── LexVisualProlog.cxx
│   │   ├── LexX12.cxx
│   │   └── LexYAML.cxx
│   ├── lexlib/
│   │   ├── Accessor.cxx
│   │   ├── Accessor.h
│   │   ├── CatalogueModules.h
│   │   ├── CharacterCategory.cxx
│   │   ├── CharacterCategory.h
│   │   ├── CharacterSet.cxx
│   │   ├── CharacterSet.h
│   │   ├── DefaultLexer.cxx
│   │   ├── DefaultLexer.h
│   │   ├── InList.cxx
│   │   ├── InList.h
│   │   ├── LexAccessor.cxx
│   │   ├── LexAccessor.h
│   │   ├── LexerBase.cxx
│   │   ├── LexerBase.h
│   │   ├── LexerModule.cxx
│   │   ├── LexerModule.h
│   │   ├── LexerNoExceptions.cxx
│   │   ├── LexerNoExceptions.h
│   │   ├── LexerSimple.cxx
│   │   ├── LexerSimple.h
│   │   ├── OptionSet.h
│   │   ├── PropSetSimple.cxx
│   │   ├── PropSetSimple.h
│   │   ├── SparseState.h
│   │   ├── StringCopy.h
│   │   ├── StyleContext.cxx
│   │   ├── StyleContext.h
│   │   ├── SubStyles.h
│   │   ├── WordList.cxx
│   │   └── WordList.h
│   ├── scripts/
│   │   ├── HeaderOrder.txt
│   │   ├── LexFacer.py
│   │   ├── LexillaData.py
│   │   ├── LexillaGen.py
│   │   ├── LexillaLogo.py
│   │   ├── PromoteNew.bat
│   │   ├── RunTest.bat
│   │   └── RunTest.sh
│   ├── src/
│   │   ├── DepGen.py
│   │   ├── Lexilla/
│   │   │   ├── Info.plist
│   │   │   └── Lexilla.xcodeproj/
│   │   │       ├── project.pbxproj
│   │   │       └── project.xcworkspace/
│   │   │           └── contents.xcworkspacedata
│   │   ├── Lexilla.cxx
│   │   ├── Lexilla.def
│   │   ├── Lexilla.pro
│   │   ├── Lexilla.ruleset
│   │   ├── Lexilla.vcxproj
│   │   ├── LexillaVersion.rc
│   │   ├── deps.mak
│   │   ├── lexilla.mak
│   │   ├── makefile
│   │   └── nmdeps.mak
│   ├── test/
│   │   ├── README
│   │   ├── TestDocument.cxx
│   │   ├── TestDocument.h
│   │   ├── TestLexers.cxx
│   │   ├── TestLexers.vcxproj
│   │   ├── examples/
│   │   │   ├── asciidoc/
│   │   │   │   ├── AllStyles.adoc
│   │   │   │   ├── AllStyles.adoc.folded
│   │   │   │   ├── AllStyles.adoc.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── asm/
│   │   │   │   ├── AllStyles.asm
│   │   │   │   ├── AllStyles.asm.folded
│   │   │   │   ├── AllStyles.asm.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── bash/
│   │   │   │   ├── 197ArithmeticOperator.bsh
│   │   │   │   ├── 197ArithmeticOperator.bsh.folded
│   │   │   │   ├── 197ArithmeticOperator.bsh.styled
│   │   │   │   ├── 199Numbers.bsh
│   │   │   │   ├── 199Numbers.bsh.folded
│   │   │   │   ├── 199Numbers.bsh.styled
│   │   │   │   ├── 202LineStartOption.bsh
│   │   │   │   ├── 202LineStartOption.bsh.folded
│   │   │   │   ├── 202LineStartOption.bsh.styled
│   │   │   │   ├── 203TestOption.bsh
│   │   │   │   ├── 203TestOption.bsh.folded
│   │   │   │   ├── 203TestOption.bsh.styled
│   │   │   │   ├── AllStyles.bsh
│   │   │   │   ├── AllStyles.bsh.folded
│   │   │   │   ├── AllStyles.bsh.styled
│   │   │   │   ├── Issue180.bsh
│   │   │   │   ├── Issue180.bsh.folded
│   │   │   │   ├── Issue180.bsh.styled
│   │   │   │   ├── Issue182.bsh
│   │   │   │   ├── Issue182.bsh.folded
│   │   │   │   ├── Issue182.bsh.styled
│   │   │   │   ├── Issue184.bsh
│   │   │   │   ├── Issue184.bsh.folded
│   │   │   │   ├── Issue184.bsh.styled
│   │   │   │   ├── Issue184Copy.bsh
│   │   │   │   ├── Issue184Copy.bsh.folded
│   │   │   │   ├── Issue184Copy.bsh.styled
│   │   │   │   ├── Nested.bsh
│   │   │   │   ├── Nested.bsh.folded
│   │   │   │   ├── Nested.bsh.styled
│   │   │   │   ├── NestedRich.bsh
│   │   │   │   ├── NestedRich.bsh.folded
│   │   │   │   ├── NestedRich.bsh.styled
│   │   │   │   ├── NestedStyledInside.bsh
│   │   │   │   ├── NestedStyledInside.bsh.folded
│   │   │   │   ├── NestedStyledInside.bsh.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── continuation.bsh
│   │   │   │   ├── continuation.bsh.folded
│   │   │   │   ├── continuation.bsh.styled
│   │   │   │   ├── hash.zsh
│   │   │   │   ├── hash.zsh.folded
│   │   │   │   ├── hash.zsh.styled
│   │   │   │   ├── x.bsh
│   │   │   │   ├── x.bsh.folded
│   │   │   │   └── x.bsh.styled
│   │   │   ├── batch/
│   │   │   │   ├── Issue115.bat
│   │   │   │   ├── Issue115.bat.folded
│   │   │   │   ├── Issue115.bat.styled
│   │   │   │   ├── Issue222.bat
│   │   │   │   ├── Issue222.bat.folded
│   │   │   │   ├── Issue222.bat.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.bat
│   │   │   │   ├── x.bat.folded
│   │   │   │   └── x.bat.styled
│   │   │   ├── caml/
│   │   │   │   ├── AllStyles.ml
│   │   │   │   ├── AllStyles.ml.folded
│   │   │   │   ├── AllStyles.ml.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── cmake/
│   │   │   │   ├── Bug77_0.cmake
│   │   │   │   ├── Bug77_0.cmake.folded
│   │   │   │   ├── Bug77_0.cmake.styled
│   │   │   │   ├── Bug77_1.cmake
│   │   │   │   ├── Bug77_1.cmake.folded
│   │   │   │   ├── Bug77_1.cmake.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── cobol/
│   │   │   │   ├── 229.cob
│   │   │   │   ├── 229.cob.folded
│   │   │   │   ├── 229.cob.styled
│   │   │   │   ├── 230.cob
│   │   │   │   ├── 230.cob.folded
│   │   │   │   ├── 230.cob.styled
│   │   │   │   ├── 231.cob
│   │   │   │   ├── 231.cob.folded
│   │   │   │   ├── 231.cob.styled
│   │   │   │   ├── AllStyles.cob
│   │   │   │   ├── AllStyles.cob.folded
│   │   │   │   ├── AllStyles.cob.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── cpp/
│   │   │   │   ├── 130NonAsciiKeyword.cxx
│   │   │   │   ├── 130NonAsciiKeyword.cxx.folded
│   │   │   │   ├── 130NonAsciiKeyword.cxx.styled
│   │   │   │   ├── 149KeywordCase.cxx
│   │   │   │   ├── 149KeywordCase.cxx.folded
│   │   │   │   ├── 149KeywordCase.cxx.styled
│   │   │   │   ├── 94Template.cxx
│   │   │   │   ├── 94Template.cxx.folded
│   │   │   │   ├── 94Template.cxx.styled
│   │   │   │   ├── AllStyles.cxx
│   │   │   │   ├── AllStyles.cxx.folded
│   │   │   │   ├── AllStyles.cxx.styled
│   │   │   │   ├── Bug2245.cxx
│   │   │   │   ├── Bug2245.cxx.folded
│   │   │   │   ├── Bug2245.cxx.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.cxx
│   │   │   │   ├── x.cxx.folded
│   │   │   │   └── x.cxx.styled
│   │   │   ├── css/
│   │   │   │   ├── AllStyles.css
│   │   │   │   ├── AllStyles.css.folded
│   │   │   │   ├── AllStyles.css.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── d/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.d
│   │   │   │   ├── x.d.folded
│   │   │   │   └── x.d.styled
│   │   │   ├── diff/
│   │   │   │   ├── AllStyles.diff
│   │   │   │   ├── AllStyles.diff.folded
│   │   │   │   ├── AllStyles.diff.styled
│   │   │   │   ├── LongLine.diff
│   │   │   │   ├── LongLine.diff.folded
│   │   │   │   ├── LongLine.diff.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── erlang/
│   │   │   │   ├── AllStyles.erl
│   │   │   │   ├── AllStyles.erl.folded
│   │   │   │   ├── AllStyles.erl.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── errorlist/
│   │   │   │   ├── AllStyles.err
│   │   │   │   ├── AllStyles.err.folded
│   │   │   │   ├── AllStyles.err.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── fortran/
│   │   │   │   ├── AllStyles.f
│   │   │   │   ├── AllStyles.f.folded
│   │   │   │   ├── AllStyles.f.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── fsharp/
│   │   │   │   ├── FmtSpecs.fs
│   │   │   │   ├── FmtSpecs.fs.folded
│   │   │   │   ├── FmtSpecs.fs.styled
│   │   │   │   ├── Issue56.fs
│   │   │   │   ├── Issue56.fs.folded
│   │   │   │   ├── Issue56.fs.styled
│   │   │   │   ├── Issue93.fs
│   │   │   │   ├── Issue93.fs.folded
│   │   │   │   ├── Issue93.fs.styled
│   │   │   │   ├── Literals.fs
│   │   │   │   ├── Literals.fs.folded
│   │   │   │   ├── Literals.fs.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.fs
│   │   │   │   ├── x.fs.folded
│   │   │   │   └── x.fs.styled
│   │   │   ├── gdscript/
│   │   │   │   ├── AllStyles.gd
│   │   │   │   ├── AllStyles.gd.folded
│   │   │   │   ├── AllStyles.gd.styled
│   │   │   │   ├── NodePath.gd
│   │   │   │   ├── NodePath.gd.folded
│   │   │   │   ├── NodePath.gd.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── gui4cli/
│   │   │   │   ├── AllStyles.gui
│   │   │   │   ├── AllStyles.gui.folded
│   │   │   │   ├── AllStyles.gui.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── hypertext/
│   │   │   │   ├── Bug2207.html
│   │   │   │   ├── Bug2207.html.folded
│   │   │   │   ├── Bug2207.html.styled
│   │   │   │   ├── Bug2219.html
│   │   │   │   ├── Bug2219.html.folded
│   │   │   │   ├── Bug2219.html.styled
│   │   │   │   ├── Issue19.php
│   │   │   │   ├── Issue19.php.folded
│   │   │   │   ├── Issue19.php.styled
│   │   │   │   ├── Issue192.html
│   │   │   │   ├── Issue192.html.folded
│   │   │   │   ├── Issue192.html.styled
│   │   │   │   ├── Issue20Numbers.php
│   │   │   │   ├── Issue20Numbers.php.folded
│   │   │   │   ├── Issue20Numbers.php.styled
│   │   │   │   ├── Issue47.html
│   │   │   │   ├── Issue47.html.folded
│   │   │   │   ├── Issue47.html.styled
│   │   │   │   ├── Issue53.html
│   │   │   │   ├── Issue53.html.folded
│   │   │   │   ├── Issue53.html.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── ServerBasic.aspx
│   │   │   │   ├── ServerBasic.aspx.folded
│   │   │   │   ├── ServerBasic.aspx.styled
│   │   │   │   ├── ServerJavaScript.aspx
│   │   │   │   ├── ServerJavaScript.aspx.folded
│   │   │   │   ├── ServerJavaScript.aspx.styled
│   │   │   │   ├── apostophe.php
│   │   │   │   ├── apostophe.php.folded
│   │   │   │   ├── apostophe.php.styled
│   │   │   │   ├── comment.html
│   │   │   │   ├── comment.html.folded
│   │   │   │   ├── comment.html.styled
│   │   │   │   ├── mako.html
│   │   │   │   ├── mako.html.folded
│   │   │   │   ├── mako.html.styled
│   │   │   │   ├── x.asp
│   │   │   │   ├── x.asp.folded
│   │   │   │   ├── x.asp.styled
│   │   │   │   ├── x.html
│   │   │   │   ├── x.html.folded
│   │   │   │   ├── x.html.styled
│   │   │   │   ├── x.php
│   │   │   │   ├── x.php.folded
│   │   │   │   └── x.php.styled
│   │   │   ├── inno/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.iss
│   │   │   │   ├── x.iss.folded
│   │   │   │   └── x.iss.styled
│   │   │   ├── json/
│   │   │   │   ├── AllStyles.json
│   │   │   │   ├── AllStyles.json.folded
│   │   │   │   ├── AllStyles.json.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── julia/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.jl
│   │   │   │   ├── x.jl.folded
│   │   │   │   └── x.jl.styled
│   │   │   ├── latex/
│   │   │   │   ├── AllStyles.tex
│   │   │   │   ├── AllStyles.tex.folded
│   │   │   │   ├── AllStyles.tex.styled
│   │   │   │   ├── Feature1358.tex
│   │   │   │   ├── Feature1358.tex.folded
│   │   │   │   ├── Feature1358.tex.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── lua/
│   │   │   │   ├── AllStyles.lua
│   │   │   │   ├── AllStyles.lua.folded
│   │   │   │   ├── AllStyles.lua.styled
│   │   │   │   ├── Bug2205.lua
│   │   │   │   ├── Bug2205.lua.folded
│   │   │   │   ├── Bug2205.lua.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── folding.lua
│   │   │   │   ├── folding.lua.folded
│   │   │   │   ├── folding.lua.styled
│   │   │   │   ├── x.lua
│   │   │   │   ├── x.lua.folded
│   │   │   │   └── x.lua.styled
│   │   │   ├── makefile/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── longline.mak
│   │   │   │   ├── longline.mak.folded
│   │   │   │   ├── longline.mak.styled
│   │   │   │   ├── x.mak
│   │   │   │   ├── x.mak.folded
│   │   │   │   └── x.mak.styled
│   │   │   ├── markdown/
│   │   │   │   ├── AllStyles.md
│   │   │   │   ├── AllStyles.md.folded
│   │   │   │   ├── AllStyles.md.styled
│   │   │   │   ├── Bug1216.md
│   │   │   │   ├── Bug1216.md.folded
│   │   │   │   ├── Bug1216.md.styled
│   │   │   │   ├── Bug2235.md
│   │   │   │   ├── Bug2235.md.folded
│   │   │   │   ├── Bug2235.md.styled
│   │   │   │   ├── Bug2247.md
│   │   │   │   ├── Bug2247.md.folded
│   │   │   │   ├── Bug2247.md.styled
│   │   │   │   ├── HeaderEOLFill_0.md
│   │   │   │   ├── HeaderEOLFill_0.md.folded
│   │   │   │   ├── HeaderEOLFill_0.md.styled
│   │   │   │   ├── HeaderEOLFill_1.md
│   │   │   │   ├── HeaderEOLFill_1.md.folded
│   │   │   │   ├── HeaderEOLFill_1.md.styled
│   │   │   │   ├── Issue117.md
│   │   │   │   ├── Issue117.md.folded
│   │   │   │   ├── Issue117.md.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── matlab/
│   │   │   │   ├── AllStyles.m.matlab
│   │   │   │   ├── AllStyles.m.matlab.folded
│   │   │   │   ├── AllStyles.m.matlab.styled
│   │   │   │   ├── AllStyles.m.octave
│   │   │   │   ├── AllStyles.m.octave.folded
│   │   │   │   ├── AllStyles.m.octave.styled
│   │   │   │   ├── ArgumentsBlock.m.matlab
│   │   │   │   ├── ArgumentsBlock.m.matlab.folded
│   │   │   │   ├── ArgumentsBlock.m.matlab.styled
│   │   │   │   ├── ClassDefinition.m.matlab
│   │   │   │   ├── ClassDefinition.m.matlab.folded
│   │   │   │   ├── ClassDefinition.m.matlab.styled
│   │   │   │   ├── FoldPoints.m.matlab
│   │   │   │   ├── FoldPoints.m.matlab.folded
│   │   │   │   ├── FoldPoints.m.matlab.styled
│   │   │   │   ├── Issue18_EscapeSequence.m.matlab
│   │   │   │   ├── Issue18_EscapeSequence.m.matlab.folded
│   │   │   │   ├── Issue18_EscapeSequence.m.matlab.styled
│   │   │   │   ├── Issue18_EscapeSequence.m.octave
│   │   │   │   ├── Issue18_EscapeSequence.m.octave.folded
│   │   │   │   ├── Issue18_EscapeSequence.m.octave.styled
│   │   │   │   ├── NumericLiterals.m.matlab
│   │   │   │   ├── NumericLiterals.m.matlab.folded
│   │   │   │   ├── NumericLiterals.m.matlab.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── mmixal/
│   │   │   │   ├── AllStyles.mms
│   │   │   │   ├── AllStyles.mms.folded
│   │   │   │   ├── AllStyles.mms.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── references.mms
│   │   │   │   ├── references.mms.folded
│   │   │   │   ├── references.mms.styled
│   │   │   │   ├── x.mms
│   │   │   │   ├── x.mms.folded
│   │   │   │   └── x.mms.styled
│   │   │   ├── modula/
│   │   │   │   ├── 128Endless.m3
│   │   │   │   ├── 128Endless.m3.folded
│   │   │   │   ├── 128Endless.m3.styled
│   │   │   │   ├── Issue129.m3
│   │   │   │   ├── Issue129.m3.folded
│   │   │   │   ├── Issue129.m3.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── mssql/
│   │   │   │   ├── AllStyles.tsql
│   │   │   │   ├── AllStyles.tsql.folded
│   │   │   │   ├── AllStyles.tsql.styled
│   │   │   │   ├── Issue87.tsql
│   │   │   │   ├── Issue87.tsql.folded
│   │   │   │   ├── Issue87.tsql.styled
│   │   │   │   ├── Issue90.tsql
│   │   │   │   ├── Issue90.tsql.folded
│   │   │   │   ├── Issue90.tsql.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── Various.tsql
│   │   │   │   ├── Various.tsql.folded
│   │   │   │   └── Various.tsql.styled
│   │   │   ├── mysql/
│   │   │   │   ├── AllStyles.sql
│   │   │   │   ├── AllStyles.sql.folded
│   │   │   │   ├── AllStyles.sql.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── nim/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.nim
│   │   │   │   ├── x.nim.folded
│   │   │   │   └── x.nim.styled
│   │   │   ├── perl/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── perl-test-5220delta.pl
│   │   │   │   ├── perl-test-5220delta.pl.folded
│   │   │   │   ├── perl-test-5220delta.pl.styled
│   │   │   │   ├── perl-test-sub-prototypes.pl
│   │   │   │   ├── perl-test-sub-prototypes.pl.folded
│   │   │   │   ├── perl-test-sub-prototypes.pl.styled
│   │   │   │   ├── x.pl
│   │   │   │   ├── x.pl.folded
│   │   │   │   └── x.pl.styled
│   │   │   ├── powershell/
│   │   │   │   ├── AllStyles.ps1
│   │   │   │   ├── AllStyles.ps1.folded
│   │   │   │   ├── AllStyles.ps1.styled
│   │   │   │   ├── CharacterTruncation.ps1
│   │   │   │   ├── CharacterTruncation.ps1.folded
│   │   │   │   ├── CharacterTruncation.ps1.styled
│   │   │   │   ├── NumericLiterals.ps1
│   │   │   │   ├── NumericLiterals.ps1.folded
│   │   │   │   ├── NumericLiterals.ps1.styled
│   │   │   │   ├── Pull92.ps1
│   │   │   │   ├── Pull92.ps1.folded
│   │   │   │   ├── Pull92.ps1.styled
│   │   │   │   ├── Pull99Comment.ps1
│   │   │   │   ├── Pull99Comment.ps1.folded
│   │   │   │   ├── Pull99Comment.ps1.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── props/
│   │   │   │   ├── Issue96Folding.props
│   │   │   │   ├── Issue96Folding.props.folded
│   │   │   │   ├── Issue96Folding.props.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── example.session
│   │   │   │   ├── example.session.folded
│   │   │   │   └── example.session.styled
│   │   │   ├── python/
│   │   │   │   ├── AllStyles.py
│   │   │   │   ├── AllStyles.py.folded
│   │   │   │   ├── AllStyles.py.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── attributes/
│   │   │   │   │   ├── SciTE.properties
│   │   │   │   │   ├── attributes.py
│   │   │   │   │   ├── attributes.py.folded
│   │   │   │   │   └── attributes.py.styled
│   │   │   │   ├── f-strings.py
│   │   │   │   ├── f-strings.py.folded
│   │   │   │   ├── f-strings.py.styled
│   │   │   │   ├── matchcase.py
│   │   │   │   ├── matchcase.py.folded
│   │   │   │   ├── matchcase.py.styled
│   │   │   │   ├── strings.py
│   │   │   │   ├── strings.py.folded
│   │   │   │   ├── strings.py.styled
│   │   │   │   ├── x.py
│   │   │   │   ├── x.py.folded
│   │   │   │   └── x.py.styled
│   │   │   ├── r/
│   │   │   │   ├── 102Backticks.r
│   │   │   │   ├── 102Backticks.r.folded
│   │   │   │   ├── 102Backticks.r.styled
│   │   │   │   ├── AllStyles.r
│   │   │   │   ├── AllStyles.r.folded
│   │   │   │   ├── AllStyles.r.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── raku/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.p6
│   │   │   │   ├── x.p6.folded
│   │   │   │   └── x.p6.styled
│   │   │   ├── ruby/
│   │   │   │   ├── 225NumberDotMethod.rb
│   │   │   │   ├── 225NumberDotMethod.rb.folded
│   │   │   │   ├── 225NumberDotMethod.rb.styled
│   │   │   │   ├── 234HereDoc.rb
│   │   │   │   ├── 234HereDoc.rb.folded
│   │   │   │   ├── 234HereDoc.rb.styled
│   │   │   │   ├── AllStyles.rb
│   │   │   │   ├── AllStyles.rb.folded
│   │   │   │   ├── AllStyles.rb.styled
│   │   │   │   ├── Issue132.rb
│   │   │   │   ├── Issue132.rb.folded
│   │   │   │   ├── Issue132.rb.styled
│   │   │   │   ├── Issue135.rb
│   │   │   │   ├── Issue135.rb.folded
│   │   │   │   ├── Issue135.rb.styled
│   │   │   │   ├── Issue136.rb
│   │   │   │   ├── Issue136.rb.folded
│   │   │   │   ├── Issue136.rb.styled
│   │   │   │   ├── Issue140.rb
│   │   │   │   ├── Issue140.rb.folded
│   │   │   │   ├── Issue140.rb.styled
│   │   │   │   ├── Issue65.rb
│   │   │   │   ├── Issue65.rb.folded
│   │   │   │   ├── Issue65.rb.styled
│   │   │   │   ├── Issue66.rb
│   │   │   │   ├── Issue66.rb.folded
│   │   │   │   ├── Issue66.rb.styled
│   │   │   │   ├── Issue67.rb
│   │   │   │   ├── Issue67.rb.folded
│   │   │   │   ├── Issue67.rb.styled
│   │   │   │   ├── Issue69.rb
│   │   │   │   ├── Issue69.rb.folded
│   │   │   │   ├── Issue69.rb.styled
│   │   │   │   ├── PercentEquals124.rb
│   │   │   │   ├── PercentEquals124.rb.folded
│   │   │   │   ├── PercentEquals124.rb.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.rb
│   │   │   │   ├── x.rb.folded
│   │   │   │   └── x.rb.styled
│   │   │   ├── rust/
│   │   │   │   ├── Issue239.rs
│   │   │   │   ├── Issue239.rs.folded
│   │   │   │   ├── Issue239.rs.styled
│   │   │   │   ├── Issue33.rs
│   │   │   │   ├── Issue33.rs.folded
│   │   │   │   ├── Issue33.rs.styled
│   │   │   │   ├── Issue34.rs
│   │   │   │   ├── Issue34.rs.folded
│   │   │   │   ├── Issue34.rs.styled
│   │   │   │   ├── Issue35.rs
│   │   │   │   ├── Issue35.rs.folded
│   │   │   │   ├── Issue35.rs.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── sql/
│   │   │   │   ├── AllStyles.sql
│   │   │   │   ├── AllStyles.sql.folded
│   │   │   │   ├── AllStyles.sql.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── tcl/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.tcl
│   │   │   │   ├── x.tcl.folded
│   │   │   │   └── x.tcl.styled
│   │   │   ├── vb/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.vb
│   │   │   │   ├── x.vb.folded
│   │   │   │   └── x.vb.styled
│   │   │   ├── verilog/
│   │   │   │   ├── AllStyles.vh
│   │   │   │   ├── AllStyles.vh.folded
│   │   │   │   ├── AllStyles.vh.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── vhdl/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.vhd
│   │   │   │   ├── x.vhd.folded
│   │   │   │   └── x.vhd.styled
│   │   │   ├── visualprolog/
│   │   │   │   ├── AllStyles.pl
│   │   │   │   ├── AllStyles.pl.folded
│   │   │   │   ├── AllStyles.pl.styled
│   │   │   │   ├── AllStyles.pro
│   │   │   │   ├── AllStyles.pro.folded
│   │   │   │   ├── AllStyles.pro.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── x12/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── empty.x12
│   │   │   │   ├── empty.x12.folded
│   │   │   │   ├── empty.x12.styled
│   │   │   │   ├── x.x12
│   │   │   │   ├── x.x12.folded
│   │   │   │   └── x.x12.styled
│   │   │   └── yaml/
│   │   │       ├── SciTE.properties
│   │   │       ├── longline.yaml
│   │   │       ├── longline.yaml.folded
│   │   │       ├── longline.yaml.styled
│   │   │       ├── x.yaml
│   │   │       ├── x.yaml.folded
│   │   │       └── x.yaml.styled
│   │   ├── makefile
│   │   ├── testlexers.mak
│   │   └── unit/
│   │       ├── LICENSE_1_0.txt
│   │       ├── README
│   │       ├── Sci.natvis
│   │       ├── SciTE.properties
│   │       ├── UnitTester.cxx
│   │       ├── UnitTester.vcxproj
│   │       ├── catch.hpp
│   │       ├── makefile
│   │       ├── test.mak
│   │       ├── testCharacterSet.cxx
│   │       ├── testInList.cxx
│   │       ├── testLexerSimple.cxx
│   │       ├── testOptionSet.cxx
│   │       ├── testPropSetSimple.cxx
│   │       ├── testSparseState.cxx
│   │       ├── testWordList.cxx
│   │       └── unitTest.cxx
│   ├── tgzsrc
│   ├── version.txt
│   └── zipsrc.bat
├── makedb/
│   ├── CMakeLists.txt
│   ├── cs2sq.cpp
│   ├── cs2sq.h
│   ├── cscommon.h
│   ├── csdbheader.cpp
│   ├── csdbheader.h
│   ├── csdbparser.cpp
│   ├── csdbparser.h
│   ├── ctagread.cpp
│   ├── ctagread.h
│   ├── main.cpp
│   ├── sqlbase.cpp
│   ├── sqlbase.h
│   └── swver.h
├── querylib/
│   ├── CMakeLists.txt
│   ├── README.txt
│   ├── getopt2.cpp
│   ├── getopt2.h
│   ├── small_lib.cpp
│   ├── small_lib.h
│   ├── sqlquery.cpp
│   └── sqlquery.h
├── release.json
├── scintilla/
│   ├── .editorconfig
│   ├── .hg_archival.txt
│   ├── .hgeol
│   ├── .hgignore
│   ├── .hgtags
│   ├── CONTRIBUTING
│   ├── License.txt
│   ├── README
│   ├── call/
│   │   └── ScintillaCall.cxx
│   ├── cocoa/
│   │   ├── InfoBar.h
│   │   ├── InfoBar.mm
│   │   ├── InfoBarCommunicator.h
│   │   ├── PlatCocoa.h
│   │   ├── PlatCocoa.mm
│   │   ├── QuartzTextLayout.h
│   │   ├── QuartzTextStyle.h
│   │   ├── QuartzTextStyleAttribute.h
│   │   ├── Scintilla/
│   │   │   ├── Info.plist
│   │   │   ├── Scintilla.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── project.xcworkspace/
│   │   │   │       ├── contents.xcworkspacedata
│   │   │   │       └── xcshareddata/
│   │   │   │           └── IDEWorkspaceChecks.plist
│   │   │   └── module.modulemap
│   │   ├── ScintillaCocoa.h
│   │   ├── ScintillaCocoa.mm
│   │   ├── ScintillaTest/
│   │   │   ├── AppController.h
│   │   │   ├── AppController.mm
│   │   │   ├── Info.plist
│   │   │   ├── Scintilla-Info.plist
│   │   │   ├── ScintillaTest.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── project.xcworkspace/
│   │   │   │       ├── contents.xcworkspacedata
│   │   │   │       └── xcshareddata/
│   │   │   │           └── IDEWorkspaceChecks.plist
│   │   │   ├── ScintillaTest_Prefix.pch
│   │   │   ├── TestData.sql
│   │   │   ├── en.lproj/
│   │   │   │   ├── InfoPlist.strings
│   │   │   │   └── MainMenu.xib
│   │   │   └── main.m
│   │   ├── ScintillaView.h
│   │   ├── ScintillaView.mm
│   │   └── checkbuildosx.sh
│   ├── cppcheck.suppress
│   ├── delbin.bat
│   ├── doc/
│   │   ├── AddSource.txt
│   │   ├── Design.html
│   │   ├── Icons.html
│   │   ├── Lexer.txt
│   │   ├── Privacy.html
│   │   ├── SciCoding.html
│   │   ├── Scintilla5Migration.html
│   │   ├── ScintillaDoc.html
│   │   ├── ScintillaDownload.html
│   │   ├── ScintillaHistory.html
│   │   ├── ScintillaRelated.html
│   │   ├── ScintillaToDo.html
│   │   ├── ScintillaUsage.html
│   │   ├── Steps.html
│   │   ├── StyleMetadata.html
│   │   └── index.html
│   ├── gtk/
│   │   ├── Converter.h
│   │   ├── DepGen.py
│   │   ├── PlatGTK.cxx
│   │   ├── ScintillaGTK.cxx
│   │   ├── ScintillaGTK.h
│   │   ├── ScintillaGTKAccessible.cxx
│   │   ├── ScintillaGTKAccessible.h
│   │   ├── Wrappers.h
│   │   ├── deps.mak
│   │   ├── makefile
│   │   ├── scintilla-marshal.c
│   │   ├── scintilla-marshal.h
│   │   └── scintilla-marshal.list
│   ├── include/
│   │   ├── ILexer.h
│   │   ├── ILoader.h
│   │   ├── Sci_Position.h
│   │   ├── Scintilla.h
│   │   ├── Scintilla.iface
│   │   ├── ScintillaCall.h
│   │   ├── ScintillaMessages.h
│   │   ├── ScintillaStructures.h
│   │   ├── ScintillaTypes.h
│   │   └── ScintillaWidget.h
│   ├── qt/
│   │   ├── README
│   │   ├── ScintillaEdit/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── ScintillaDocument.cpp
│   │   │   ├── ScintillaDocument.h
│   │   │   ├── ScintillaEdit.cpp
│   │   │   ├── ScintillaEdit.cpp.template
│   │   │   ├── ScintillaEdit.h
│   │   │   ├── ScintillaEdit.h.template
│   │   │   ├── ScintillaEdit.pro
│   │   │   └── WidgetGen.py
│   │   └── ScintillaEditBase/
│   │       ├── Notes.txt
│   │       ├── PlatQt.cpp
│   │       ├── PlatQt.h
│   │       ├── ScintillaEditBase.cpp
│   │       ├── ScintillaEditBase.h
│   │       ├── ScintillaEditBase.pro
│   │       ├── ScintillaQt.cpp
│   │       └── ScintillaQt.h
│   ├── scripts/
│   │   ├── CheckMentioned.py
│   │   ├── Dependencies.py
│   │   ├── Face.py
│   │   ├── FileGenerator.py
│   │   ├── GenerateCaseConvert.py
│   │   ├── GenerateCharacterCategory.py
│   │   ├── HFacer.py
│   │   ├── HeaderCheck.py
│   │   ├── HeaderOrder.txt
│   │   ├── LexGen.py
│   │   ├── ScintillaAPIFacer.py
│   │   ├── ScintillaData.py
│   │   ├── __init__.py
│   │   └── archive.sh
│   ├── src/
│   │   ├── AutoComplete.cxx
│   │   ├── AutoComplete.h
│   │   ├── CallTip.cxx
│   │   ├── CallTip.h
│   │   ├── CaseConvert.cxx
│   │   ├── CaseConvert.h
│   │   ├── CaseFolder.cxx
│   │   ├── CaseFolder.h
│   │   ├── CellBuffer.cxx
│   │   ├── CellBuffer.h
│   │   ├── ChangeHistory.cxx
│   │   ├── ChangeHistory.h
│   │   ├── CharClassify.cxx
│   │   ├── CharClassify.h
│   │   ├── CharacterCategoryMap.cxx
│   │   ├── CharacterCategoryMap.h
│   │   ├── CharacterType.cxx
│   │   ├── CharacterType.h
│   │   ├── ContractionState.cxx
│   │   ├── ContractionState.h
│   │   ├── DBCS.cxx
│   │   ├── DBCS.h
│   │   ├── Debugging.h
│   │   ├── Decoration.cxx
│   │   ├── Decoration.h
│   │   ├── Document.cxx
│   │   ├── Document.h
│   │   ├── EditModel.cxx
│   │   ├── EditModel.h
│   │   ├── EditView.cxx
│   │   ├── EditView.h
│   │   ├── Editor.cxx
│   │   ├── Editor.h
│   │   ├── ElapsedPeriod.h
│   │   ├── Geometry.cxx
│   │   ├── Geometry.h
│   │   ├── Indicator.cxx
│   │   ├── Indicator.h
│   │   ├── KeyMap.cxx
│   │   ├── KeyMap.h
│   │   ├── LineMarker.cxx
│   │   ├── LineMarker.h
│   │   ├── MarginView.cxx
│   │   ├── MarginView.h
│   │   ├── Partitioning.h
│   │   ├── PerLine.cxx
│   │   ├── PerLine.h
│   │   ├── Platform.h
│   │   ├── Position.h
│   │   ├── PositionCache.cxx
│   │   ├── PositionCache.h
│   │   ├── RESearch.cxx
│   │   ├── RESearch.h
│   │   ├── RunStyles.cxx
│   │   ├── RunStyles.h
│   │   ├── SciTE.properties
│   │   ├── ScintillaBase.cxx
│   │   ├── ScintillaBase.h
│   │   ├── Selection.cxx
│   │   ├── Selection.h
│   │   ├── SparseVector.h
│   │   ├── SplitVector.h
│   │   ├── Style.cxx
│   │   ├── Style.h
│   │   ├── UndoHistory.cxx
│   │   ├── UndoHistory.h
│   │   ├── UniConversion.cxx
│   │   ├── UniConversion.h
│   │   ├── UniqueString.cxx
│   │   ├── UniqueString.h
│   │   ├── ViewStyle.cxx
│   │   ├── ViewStyle.h
│   │   ├── XPM.cxx
│   │   └── XPM.h
│   ├── test/
│   │   ├── MessageNumbers.py
│   │   ├── README
│   │   ├── ScintillaCallable.py
│   │   ├── XiteMenu.py
│   │   ├── XiteWin.py
│   │   ├── gi/
│   │   │   ├── Scintilla-0.1.gir.good
│   │   │   ├── filter-scintilla-h.py
│   │   │   ├── gi-test.py
│   │   │   └── makefile
│   │   ├── performanceTests.py
│   │   ├── simpleTests.py
│   │   ├── unit/
│   │   │   ├── LICENSE_1_0.txt
│   │   │   ├── README
│   │   │   ├── Sci.natvis
│   │   │   ├── SciTE.properties
│   │   │   ├── UnitTester.cxx
│   │   │   ├── UnitTester.vcxproj
│   │   │   ├── catch.hpp
│   │   │   ├── makefile
│   │   │   ├── test.mak
│   │   │   ├── testCellBuffer.cxx
│   │   │   ├── testCharClassify.cxx
│   │   │   ├── testCharacterCategoryMap.cxx
│   │   │   ├── testContractionState.cxx
│   │   │   ├── testDecoration.cxx
│   │   │   ├── testDocument.cxx
│   │   │   ├── testGeometry.cxx
│   │   │   ├── testPartitioning.cxx
│   │   │   ├── testPerLine.cxx
│   │   │   ├── testRESearch.cxx
│   │   │   ├── testRunStyles.cxx
│   │   │   ├── testSparseVector.cxx
│   │   │   ├── testSplitVector.cxx
│   │   │   ├── testUniConversion.cxx
│   │   │   └── unitTest.cxx
│   │   ├── win32Tests.py
│   │   └── xite.py
│   ├── tgzsrc
│   ├── version.txt
│   ├── win32/
│   │   ├── DepGen.py
│   │   ├── HanjaDic.cxx
│   │   ├── HanjaDic.h
│   │   ├── PlatWin.cxx
│   │   ├── PlatWin.h
│   │   ├── SciTE.properties
│   │   ├── ScintRes.rc
│   │   ├── Scintilla.def
│   │   ├── Scintilla.vcxproj
│   │   ├── ScintillaDLL.cxx
│   │   ├── ScintillaWin.cxx
│   │   ├── ScintillaWin.h
│   │   ├── WinTypes.h
│   │   ├── deps.mak
│   │   ├── makefile
│   │   ├── nmdeps.mak
│   │   └── scintilla.mak
│   └── zipsrc.bat
├── showgraph/
│   ├── CMakeLists.txt
│   ├── Graph/
│   │   ├── README.txt
│   │   ├── agraph.h
│   │   ├── edge.cpp
│   │   ├── edge.h
│   │   ├── edge_inline.h
│   │   ├── graph.cpp
│   │   ├── graph.h
│   │   ├── graph_iface.h
│   │   ├── graph_inline.h
│   │   ├── marker.h
│   │   ├── node.cpp
│   │   ├── node.h
│   │   ├── node_inline.h
│   │   ├── node_iter.h
│   │   ├── num.h
│   │   └── predecls.h
│   ├── GraphView/
│   │   ├── edge_helper.cpp
│   │   ├── edge_helper.h
│   │   ├── edge_item.cpp
│   │   ├── edge_item.h
│   │   ├── graph_view.cpp
│   │   ├── graph_view.h
│   │   ├── gstyle.h
│   │   ├── gview_iface.h
│   │   ├── gview_impl.h
│   │   ├── navigation.cpp
│   │   ├── navigation.h
│   │   ├── node_item.cpp
│   │   ├── node_item.h
│   │   ├── style_edit.cpp
│   │   ├── style_edit.h
│   │   ├── visible_edge.cpp
│   │   └── visible_edge.h
│   ├── LICENSE.txt
│   ├── Layout/
│   │   ├── aux_edge.h
│   │   ├── aux_graph.cpp
│   │   ├── aux_graph.h
│   │   ├── aux_node.h
│   │   ├── layout.cpp
│   │   ├── layout_iface.h
│   │   ├── node_group.cpp
│   │   └── node_group.h
│   ├── README.txt
│   ├── Utils/
│   │   ├── asrt.h
│   │   ├── conf.cpp
│   │   ├── conf.h
│   │   ├── conf_utest.cpp
│   │   ├── list.h
│   │   ├── list_utest.cpp
│   │   ├── mem.h
│   │   ├── mem_chunk.h
│   │   ├── mem_entry.h
│   │   ├── mem_fixed_pool.h
│   │   ├── mem_mgr.cpp
│   │   ├── mem_mgr.h
│   │   ├── mem_obj.h
│   │   ├── mem_pool.cpp
│   │   ├── mem_pool.h
│   │   ├── mem_ref.h
│   │   ├── mem_utest.cpp
│   │   ├── misc.h
│   │   ├── print.h
│   │   ├── singleton.h
│   │   ├── ulist.h
│   │   ├── utils.cpp
│   │   ├── utils_iface.h
│   │   └── utils_utest.cpp
│   ├── core_iface.h
│   ├── showgraph.cpp
│   └── showgraph.h
└── windows-install/
    ├── qt5/
    │   ├── buildqt5.bat
    │   ├── buildqt5_github.bat
    │   ├── codequeryqt5.wxs
    │   ├── packqt5_github.bat
    │   └── testqt5_github.bat
    ├── qt6/
    │   ├── buildqt6.bat
    │   ├── buildqt6_github.bat
    │   ├── codequeryqt661.wxs
    │   ├── codequeryqt671.wxs
    │   ├── codequeryqt690.wxs
    │   ├── packqt6_github.bat
    │   └── testqt6_github.bat
    └── wincommon/
        ├── HOWTO-WINDOWS.txt
        ├── LICENSE.rtf
        ├── LICENSE.txt
        ├── README.txt
        └── uninstall.bat

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/workflows/cmake.yml
================================================
# Heavily inspired (i.e. copy/paste) from https://gist.github.com/NickNaso/0d478f1481686d5bcc868cac06620a60
name: CMake Build Matrix

# Controls when the action will run. Triggers the workflow on push
on: 
  push:
  pull_request:
  release:
    # tags:
    # - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    name: ${{ matrix.config.name }}
    runs-on: ${{ matrix.config.os }}
    strategy:
      fail-fast: false
      matrix:
        config: 
        - {
            name: "Ubuntu-latest GCC NoGui",
            os: ubuntu-latest,
            build_type: "Debug",
            cc: "gcc",
            cxx: "g++"
          }
        - {
            name: "Ubuntu-latest GCC Qt6",
            os: ubuntu-latest,
            build_type: "Debug",
            cc: "gcc",
            cxx: "g++",
          }
        - {
            name: "Ubuntu-latest GCC Qt5",
            os: ubuntu-latest,
            build_type: "Debug",
            cc: "gcc",
            cxx: "g++",
          }
        - {
            name: "Ubuntu 22.04 GCC Qt5",
            os: ubuntu-22.04,
            build_type: "Debug",
            cc: "gcc",
            cxx: "g++"
          }
        - {
            name: "macOS Clang Qt6",
            os: macos-latest,
            build_type: "Debug",
            cc: "clang",
            cxx: "clang++"
          }
        - {
            name: "macOS Clang Qt5",
            os: macos-latest,
            build_type: "Debug",
            cc: "clang",
            cxx: "clang++"
          }
        - {
            name: "Windows MinGW Qt6",
            os: windows-latest,
            build_type: "Debug",
            cc: "gcc",
            cxx: "g++"
          }
        - {
            name: "Windows MinGW Qt5",
            os: windows-latest,
            build_type: "Debug",
            cc: "gcc",
            cxx: "g++"
          }

    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v4

      - name: Print env
        run: |
          echo github.event.action: ${{ github.event.action }}
          echo github.event_name: ${{ github.event_name }}

      - name: Install common dependencies on all Ubuntu
        if: "startsWith(matrix.config.name, 'Ubuntu')"
        run: |
          sudo apt-get update
          sudo apt-get install build-essential g++ git cmake ninja-build sqlite3 libsqlite3-dev cscope exuberant-ctags
          uname -a
          lsb_release -a
          gcc -v && g++ -v && cmake --version && ninja --version

      - name: Install dependencies on Ubuntu-latest GCC Qt6
        if: "startsWith(matrix.config.name, 'Ubuntu-latest GCC Qt6')"
        run: |
          sudo apt-get install libglx-dev libgl1-mesa-dev libvulkan-dev libxkbcommon-dev
          sudo apt-get install qt6-base-dev qt6-base-dev-tools qt6-tools-dev qt6-tools-dev-tools
          sudo apt-get install libqt6core5compat6-dev qt6-l10n-tools qt6-wayland

      - name: Install dependencies on Ubuntu-latest GCC Qt5
        if: "startsWith(matrix.config.name, 'Ubuntu-latest GCC Qt5')"
        run: |
          sudo apt-get install qtcreator qtbase5-dev qt5-qmake qttools5-dev-tools qttools5-dev

      - name: Install dependencies on Ubuntu 22.04 GCC Qt5
        if: "startsWith(matrix.config.name, 'Ubuntu 22.04 GCC Qt5')"
        run: |
          sudo apt-get install qtcreator qtbase5-dev qt5-qmake qttools5-dev-tools qttools5-dev

      - name: Install dependencies on macOS Clang Qt6
        if: startsWith(matrix.config.name, 'macOS Clang Qt6')
        run: |
          brew install cmake ninja qt@6 sqlite cscope ctags vulkan-headers
          clang -v
          cmake --version
          ninja --version
          brew info qt@6

      - name: Install dependencies on macOS Clang Qt5
        if: startsWith(matrix.config.name, 'macOS Clang Qt5')
        run: |
          brew install cmake ninja qt@5 sqlite cscope ctags
          clang -v
          cmake --version
          ninja --version
          brew info qt@5

      - name: Install Qt6 on Windows
        if: startsWith(matrix.config.name, 'Windows MinGW Qt6')
        uses: jurplel/install-qt-action@v4
        with:
          version: '6.9.*'
          host: 'windows'
          target: 'desktop'
          arch: 'win64_mingw'
          modules: 'qt5compat'
          cache: 'false'

      - name: Install Qt5 on Windows
        if: startsWith(matrix.config.name, 'Windows MinGW Qt5')
        uses: jurplel/install-qt-action@v4
        with:
          version: '5.15.2'
          host: 'windows'
          target: 'desktop'
          arch: 'win64_mingw81'
          cache: 'false'

      - name: Install sqlite3 on Windows
        shell: cmd
        if: startsWith(matrix.config.name, 'Windows MinGW')
        run: vcpkg install sqlite3:x64-windows

      - name: Install ninja on Windows
        if: startsWith(matrix.config.name, 'Windows MinGW')
        uses: seanmiddleditch/gha-setup-ninja@master

      - name: Configure CMake and Build on Ubuntu GCC Qt6
        shell: bash
        if: "contains(matrix.config.name, 'Ubuntu-latest GCC Qt6')"
        run: |
          export CC=gcc
          export CXX=g++
          cmake -G Ninja -S . -B build
          cmake --build build
          sudo cmake --install build

      - name: Configure CMake and Build on Ubuntu GCC Qt5
        shell: bash
        if: "contains(matrix.config.name, 'Ubuntu-latest GCC Qt5') || contains(matrix.config.name, 'Ubuntu 22.04 GCC Qt5')"
        run: |
          export CC=gcc
          export CXX=g++
          cmake -G Ninja -DBUILD_QT5=ON -S . -B build
          cmake --build build
          sudo cmake --install build
          
      - name: Configure CMake and Build on Ubuntu-latest GCC NoGui
        shell: bash
        if: contains(matrix.config.name, 'Ubuntu-latest GCC NoGui')
        run: |
          export CC=gcc
          export CXX=g++
          cmake -G Ninja -DNO_GUI=ON -S . -B build
          cmake --build build
          sudo cmake --install build

      - name: Configure CMake and Build on macOS Clang Qt6
        shell: bash
        if: contains(matrix.config.name, 'macOS Clang Qt6')
        run: |
          export CC=clang
          export CXX=clang++
          cmake -G Ninja -DCMAKE_PREFIX_PATH=/usr/local/opt/qt@6/lib/cmake -S . -B build
          cmake --build build
          sudo cmake --install build

      - name: Configure CMake and Build on macOS Clang Qt5
        shell: bash
        if: contains(matrix.config.name, 'macOS Clang Qt5')
        run: |
          export CC=clang
          export CXX=clang++
          cmake -G Ninja -DBUILD_QT5=ON -DCMAKE_PREFIX_PATH=/opt/homebrew/opt/qt@5/lib/cmake -S . -B build
          cmake --build build
          sudo cmake --install build

      - name: Configure CMake and Build on Windows MinGW Qt6
        shell: cmd
        if: contains(matrix.config.name, 'Windows MinGW Qt6')
        run: call "windows-install/qt6/buildqt6_github.bat"

      - name: Configure CMake and Build on Windows MinGW Qt5
        shell: cmd
        if: contains(matrix.config.name, 'Windows MinGW Qt5')
        run: call "windows-install/qt5/buildqt5_github.bat"

      - name: Test on Linux, MacOS
        shell: bash
        if: ${{ !contains(matrix.config.name, 'Windows MinGW') }}
        run: |
          find . -name "*.h" > cscope.files
          find . -name "*.c" >> cscope.files
          find . -name "*.cpp" >> cscope.files
          find . -name "*.cxx" >> cscope.files
          cqmakedb -v
          cscope -cb
          ctags --fields=+i -n -L cscope.files
          cqmakedb -s cq.db -c cscope.out -t tags -p -d
          cqsearch -s cq.db -p 1 -t CODEQUERY_SW_VERSION -u
          cscope -b -f cscope1.out
          cqmakedb -s cq1.db -c cscope1.out -t tags -p -d
          cqsearch -s cq1.db -p 1 -t CODEQUERY_SW_VERSION -u

      - name: Test on Windows Qt6
        shell: cmd
        if: contains(matrix.config.name, 'Windows MinGW Qt6')
        run: call "windows-install/qt6/testqt6_github.bat"

      - name: Test on Windows Qt5
        shell: cmd
        if: contains(matrix.config.name, 'Windows MinGW Qt5')
        run: call "windows-install/qt5/testqt5_github.bat"

      - name: Pack on Windows Qt6
        shell: cmd
        if: contains(matrix.config.name, 'Windows MinGW Qt6')
        run: call "windows-install/qt6/packqt6_github.bat"

      - name: Pack on Windows Qt5
        shell: cmd
        if: contains(matrix.config.name, 'Windows MinGW Qt5')
        run: call "windows-install/qt5/packqt5_github.bat"



================================================
FILE: .gitignore
================================================
# Compiled Object files
*.slo
*.lo
*.o

# Compiled Dynamic libraries
*.so
*.dylib

# Compiled Static libraries
*.lai
*.la
*.a

# Ignore backups
*~
*.bak

# Ignore the following directories
build/
buildnogui/
buildqt4/
buildqt5/
buildqt6/
output/
Output/
bin/
html/
.vscode/

# Ignore cscope and ctags files, and our db files
cscope*.files
cscope*.out
tags
*.db




================================================
FILE: CMakeLists.txt
================================================
#
# CodeQuery
# Copyright (C) 2013-2018 ruben2020 https://github.com/ruben2020/
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#

cmake_minimum_required(VERSION 3.16.0)
project(CodeQuery)

option(BUILD_QT6 "Qt6 option"    ON)
option(BUILD_QT5 "Qt5 option"    OFF)
option(NO_GUI    "No GUI option" OFF)
option(GHAWIN    "GitHub Actions on Windows" OFF)

if (NO_GUI)
MESSAGE("-- NO_GUI = " ${NO_GUI})
else (NO_GUI)

if (BUILD_QT5)
message("-- BUILD_QT5 = " ${BUILD_QT5})
else (BUILD_QT5)
message("-- BUILD_QT6 = " ${BUILD_QT6})
endif(BUILD_QT5)

endif(NO_GUI)

if (GHAWIN)
MESSAGE("-- GHAWIN = " ${GHAWIN})
else (GHAWIN)
endif(GHAWIN)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmakefind/")


# C++17 now always required
SET( CMAKE_CXX_STANDARD 17 )
SET( CMAKE_CXX_STANDARD_REQUIRED ON )

#set(CMAKE_BUILD_TYPE Debug)
#SET(CMAKE_C_FLAGS_DEBUG "-g -ggdb -O0 -Wno-unused-result -Wno-return-type")
#SET(CMAKE_CXX_FLAGS_DEBUG "-g -ggdb -O0 -Wno-unused-result -Wno-return-type")

IF(MSVC)
ADD_DEFINITIONS(/D _CRT_SECURE_NO_WARNINGS)
ELSE(MSVC)
SET( CMAKE_CXX_FLAGS  "-O2 -Wno-unused-result -Wno-return-type ${CMAKE_CXX_FLAGS}")
SET( CMAKE_CXX_FLAGS_DEBUG  "-g -ggdb -O0 -Wno-unused-result -Wno-return-type ${CMAKE_CXX_FLAGS_DEBUG}" )
SET( CMAKE_CXX_FLAGS_RELEASE  "-O2 -Wno-unused-result -Wno-return-type ${CMAKE_CXX_FLAGS_RELEASE}" )
ENDIF(MSVC)


set( EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR} )


add_subdirectory( "querylib" )
add_subdirectory( "makedb" )
add_subdirectory( "cli" )

if (NO_GUI)
else (NO_GUI)
add_subdirectory( "lexilla" )
add_subdirectory( "scintilla/qt/ScintillaEdit" )
add_subdirectory( "showgraph" )
add_subdirectory( "gui" )
endif (NO_GUI)


================================================
FILE: LICENSE.md
================================================
Mozilla Public License Version 2.0
==================================

### 1. Definitions

**1.1. “Contributor”**  
    means each individual or legal entity that creates, contributes to
    the creation of, or owns Covered Software.

**1.2. “Contributor Version”**  
    means the combination of the Contributions of others (if any) used
    by a Contributor and that particular Contributor's Contribution.

**1.3. “Contribution”**  
    means Covered Software of a particular Contributor.

**1.4. “Covered Software”**  
    means Source Code Form to which the initial Contributor has attached
    the notice in Exhibit A, the Executable Form of such Source Code
    Form, and Modifications of such Source Code Form, in each case
    including portions thereof.

**1.5. “Incompatible With Secondary Licenses”**  
    means

* **(a)** that the initial Contributor has attached the notice described
    in Exhibit B to the Covered Software; or
* **(b)** that the Covered Software was made available under the terms of
    version 1.1 or earlier of the License, but not also under the
    terms of a Secondary License.

**1.6. “Executable Form”**  
    means any form of the work other than Source Code Form.

**1.7. “Larger Work”**  
    means a work that combines Covered Software with other material, in 
    a separate file or files, that is not Covered Software.

**1.8. “License”**  
    means this document.

**1.9. “Licensable”**  
    means having the right to grant, to the maximum extent possible,
    whether at the time of the initial grant or subsequently, any and
    all of the rights conveyed by this License.

**1.10. “Modifications”**  
    means any of the following:

* **(a)** any file in Source Code Form that results from an addition to,
    deletion from, or modification of the contents of Covered
    Software; or
* **(b)** any new file in Source Code Form that contains any Covered
    Software.

**1.11. “Patent Claims” of a Contributor**  
    means any patent claim(s), including without limitation, method,
    process, and apparatus claims, in any patent Licensable by such
    Contributor that would be infringed, but for the grant of the
    License, by the making, using, selling, offering for sale, having
    made, import, or transfer of either its Contributions or its
    Contributor Version.

**1.12. “Secondary License”**  
    means either the GNU General Public License, Version 2.0, the GNU
    Lesser General Public License, Version 2.1, the GNU Affero General
    Public License, Version 3.0, or any later versions of those
    licenses.

**1.13. “Source Code Form”**  
    means the form of the work preferred for making modifications.

**1.14. “You” (or “Your”)**  
    means an individual or a legal entity exercising rights under this
    License. For legal entities, “You” includes any entity that
    controls, is controlled by, or is under common control with You. For
    purposes of this definition, “control” means **(a)** the power, direct
    or indirect, to cause the direction or management of such entity,
    whether by contract or otherwise, or **(b)** ownership of more than
    fifty percent (50%) of the outstanding shares or beneficial
    ownership of such entity.


### 2. License Grants and Conditions

#### 2.1. Grants

Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:

* **(a)** under intellectual property rights (other than patent or trademark)
    Licensable by such Contributor to use, reproduce, make available,
    modify, display, perform, distribute, and otherwise exploit its
    Contributions, either on an unmodified basis, with Modifications, or
    as part of a Larger Work; and
* **(b)** under Patent Claims of such Contributor to make, use, sell, offer
    for sale, have made, import, and otherwise transfer either its
    Contributions or its Contributor Version.

#### 2.2. Effective Date

The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.

#### 2.3. Limitations on Grant Scope

The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:

* **(a)** for any code that a Contributor has removed from Covered Software;
    or
* **(b)** for infringements caused by: **(i)** Your and any other third party's
    modifications of Covered Software, or **(ii)** the combination of its
    Contributions with other software (except as part of its Contributor
    Version); or
* **(c)** under Patent Claims infringed by Covered Software in the absence of
    its Contributions.

This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).

#### 2.4. Subsequent Licenses

No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).

#### 2.5. Representation

Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.

#### 2.6. Fair Use

This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.

#### 2.7. Conditions

Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.


### 3. Responsibilities

#### 3.1. Distribution of Source Form

All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.

#### 3.2. Distribution of Executable Form

If You distribute Covered Software in Executable Form then:

* **(a)** such Covered Software must also be made available in Source Code
    Form, as described in Section 3.1, and You must inform recipients of
    the Executable Form how they can obtain a copy of such Source Code
    Form by reasonable means in a timely manner, at a charge no more
    than the cost of distribution to the recipient; and

* **(b)** You may distribute such Executable Form under the terms of this
    License, or sublicense it under different terms, provided that the
    license for the Executable Form does not attempt to limit or alter
    the recipients' rights in the Source Code Form under this License.

#### 3.3. Distribution of a Larger Work

You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).

#### 3.4. Notices

You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.

#### 3.5. Application of Additional Terms

You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.


### 4. Inability to Comply Due to Statute or Regulation

If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: **(a)** comply with
the terms of this License to the maximum extent possible; and **(b)**
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.


### 5. Termination

**5.1.** The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated **(a)** provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and **(b)** on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.

**5.2.** If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.

**5.3.** In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.


### 6. Disclaimer of Warranty

> Covered Software is provided under this License on an “as is”
> basis, without warranty of any kind, either expressed, implied, or
> statutory, including, without limitation, warranties that the
> Covered Software is free of defects, merchantable, fit for a
> particular purpose or non-infringing. The entire risk as to the
> quality and performance of the Covered Software is with You.
> Should any Covered Software prove defective in any respect, You
> (not any Contributor) assume the cost of any necessary servicing,
> repair, or correction. This disclaimer of warranty constitutes an
> essential part of this License. No use of any Covered Software is
> authorized under this License except under this disclaimer.

### 7. Limitation of Liability

> Under no circumstances and under no legal theory, whether tort
> (including negligence), contract, or otherwise, shall any
> Contributor, or anyone who distributes Covered Software as
> permitted above, be liable to You for any direct, indirect,
> special, incidental, or consequential damages of any character
> including, without limitation, damages for lost profits, loss of
> goodwill, work stoppage, computer failure or malfunction, or any
> and all other commercial damages or losses, even if such party
> shall have been informed of the possibility of such damages. This
> limitation of liability shall not apply to liability for death or
> personal injury resulting from such party's negligence to the
> extent applicable law prohibits such limitation. Some
> jurisdictions do not allow the exclusion or limitation of
> incidental or consequential damages, so this exclusion and
> limitation may not apply to You.


### 8. Litigation

Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.


### 9. Miscellaneous

This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.


### 10. Versions of the License

#### 10.1. New Versions

Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.

#### 10.2. Effect of New Versions

You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.

#### 10.3. Modified Versions

If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).

#### 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses

If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.

## Exhibit A - Source Code Form License Notice

    This Source Code Form is subject to the terms of the Mozilla Public
    License, v. 2.0. If a copy of the MPL was not distributed with this
    file, You can obtain one at http://mozilla.org/MPL/2.0/.

If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.

You may add additional accurate notices of copyright ownership.

## Exhibit B - “Incompatible With Secondary Licenses” Notice

    This Source Code Form is "Incompatible With Secondary Licenses", as
    defined by the Mozilla Public License, v. 2.0.




================================================
FILE: NEWS.md
================================================
Changelog
=========

Version 1.0.1 - July 14, 2025
-----------------------------
Minor code changes to avoid compilation errors with certain versions of the dependent libraries          
Added THIRDPARTY.md file to provide info on third party dependencies

Version 1.0.0 - May 24, 2024
-----------------------------
Enhancement: Migrated to Qt6, which is now the default build option           
Enhancement: Updated Scintilla to 5.5.0          
Qt5 and NO_GUI remain additional build options           
Qt4 and 32-bit Windows support removed

Version 0.27.0 - Jan 25, 2024
-----------------------------
Enhancement: Compressed cscope.out (built without -c) supported experimentally          
Enhancement: CodeQuery database file can be opened by CodeQuery GUI through command line argument

Version 0.26.0 - Dec 19, 2022
-----------------------------
Bugfix: File path label with too large contents extending window beyond viewport GUI bug fixed          
Enhancement: Default external editor configuration for MacOS added

Version 0.25.0 - Apr 17, 2022
-----------------------------
Enhancement: Workaround for pycscope trailer start offset bug running on Python 3.8         
Enhancement: Updated Scintilla to 3.21.1        
Enhancement: Removed warnings for Qt 5.15         
Enhancement: Windows installer now includes Qt 5.15.2 and sqlite 3.38.2 binaries       
Enhancement: Moved from Travis CI to Github Actions (for Linux, MacOS and Windows builds)        

Version 0.24.0 - Jan 17, 2021
-----------------------------
Enhancement: Improved German translation for CodeQuery GUI, contributed by stweise       

Version 0.23.0 - Apr 15, 2020
-----------------------------
The CMake build directory is now moveable and renameable, which is useful for Debian source package creation      

Version 0.22.0 - Apr 12, 2020
-----------------------------
Enhancement: Added build option for no GUI      
Enhancement: Updated Scintilla to 3.11.2      
Enhancement: Performance improvement by using QString instead of STL String for search through GUI      
Enhancement: Added ability to general call function and class inheritance graph through cqsearch CLI      
Enhancement: Added ability to filter by path added to cqsearch CLI      
Enhancement: Changing query type on the GUI dropbox will start a search immediately      
Enhancement: Clicking on a line in the GUI file viewer, will now highlight the appropriate function in the function list      
Enhancement: Now Qt5 becomes the default build option in CMakeLists.txt     
Enhancement: Windows installer changed from InnoSetup to Wix Toolset, to generate MSI installer     
Enhancement: Now Windows installer will be in two versions: Qt5, 64-bit or Qt4, 32-bit     
Bugfix: Default font selection for GUI file viewer, instead of becoming empty     
Bugfix: Improved annotation accuracy in GUI     
Bugfix: Improved brace highlighting in GUI     
Bugfix: Fixed the bug where function list next to GUI file viewer doesn't work properly for grep     

Version 0.21.1 - Sept 16, 2018
------------------------------
Fixed a build error due to new version of Qt5 (5.11)    

Version 0.21.0 - Apr 30, 2017
-----------------------------
Fixes in the ctags file parser     
"List of files" button added to the GUI     
Improved "full path for file" results list in GUI      

Version 0.20.0 - Apr 9, 2017
----------------------------
Major bug fix for a performance issue in the GUI, wrt clearing of the search results list    
Other minor bug fixes    

Version 0.19.0 - Apr 2, 2017
----------------------------
Migrated from GPLv2 to MPLv2 because of incompatibility with Qt5's license    
Now officially supporting Qt5 for Linux and Mac, but Qt4 for Windows    
Replaced QScintilla (by Riverbank Computing) with Scintilla (by Neil Hodgson), to avoid GPLv3    
Unicode UTF-8 files now viewable on CodeQuery GUI    
Source code preview text line length now unlimited in database    
CodeQuery CLI now has feature to change the source code preview text line truncation length    
Golang syntax highlighting added    
Travis script now also builds with clang and Qt5 for Mac build testing    
Fixed a build bug in CMake scripts for Arch Linux    
Debian and tarball packages would now be separated into Qt5 and Qt4    

Version 0.18.0 - Oct 9, 2016
----------------------------
Migrated from GPLv3 to GPLv2 because some companies ban GPLv3 software    
List of functions in the file viewer area is a major new feature    
Now the selection of one or two levels has been added for function call graphs    
Replaced Dipperstein's optlist with Sittler's getopt replacement (MIT licensed), to avoid LGPLv3    
Updated showgraph (now BSD licensed), with rebase from the git repo    
Various bug fixes for the file viewer    

Version 0.17.0 - Sept 25, 2016
------------------------------
Now Javascript is officially supported through starscope    
The full file path option is added to the command-line version of the tool for vim support    
HOWTO documentation updated for compatibility with Mac OS    
CodeQuery now officially built using Qt5 for Mac OS, but still in Qt4 for Windows and Linux    
Travis script updated to include Coverity scanning    

Version 0.16.0 - May 2, 2015
----------------------------
Brace matching on the file viewer    
Better handling for current line highlight    
Annotation in file viewer to quickly and easily identify the selected item    
Changed version to the semantic versioning scheme MAJOR.MINOR.PATCH    
Qt4 (default) and Qt5 now supported by CMake build option    

Version 0.15 - Aug 12, 2014
---------------------------
Added support for Mac OS    
Allowed -q in cscope.out header    
Added info to HOWTOs on how to exclude standard include paths    

Version 0.14 - Mar 9, 2014
--------------------------
Fixed Java and Ruby syntax highlight bug    
Fixed bug where database file combobox becomes too large due to very long filename    

Version 0.13 - Mar 1, 2014
--------------------------
Grep feature added    
Last search history stored persistently    

Version 0.12 - Feb 23, 2014
---------------------------
QScintilla used for code editing widget    
Imported a number of syntax highlight themes from Notepad++    
Ruby and Go now officially supported through starscope    
RPM packages will now be generated also    

Version 0.11 - Dec 31, 2013
---------------------------
File path filter    
New query type: Calls of this function    
Search results traversing within same file    
Improvements on graph's initial size and zoom    
Bug fix on external editor settings text    

Version 0.10 - Aug 10, 2013
---------------------------
ctags file processing optimization    
New GUI features: Header files only, Functions inside this file, new About box    
New GUI features: Ability to change file viewer font and tab space width    
Autocomplete made asynchronous and optimized    

Version 0.09 - Apr 20, 2013
---------------------------
Fixed some cscope.out parser and SQL handling bugs    
Added font resize buttons for file viewer    

Version 0.08 - Apr 14, 2013
---------------------------
Fixed Windows app icon and taskbar bugs    

Version 0.07 - Apr 13, 2013
---------------------------
Added ability to parse cscope.out generated by pycscope (for Python support)    
Added syntax highlighting for Python and Java    
File path can now be selected and copied in the GUI tool    

Version 0.06 - Feb 27, 2013
---------------------------
Fixed syntax highlight bug, added user warning if CQ database is older than viewed source file,    
removed the extra console window appearing alongside the GUI app in Windows    

Version 0.05 - Feb 25, 2013
---------------------------
Fixed file path bug in Windows and initial version of cqsearch CLI tool    

Version 0.04 - Feb 24, 2013
---------------------------
Initial version of visualization for function call graph and class inheritance is now working.    

Version 0.03 - Feb 22, 2013
---------------------------
Added wildcard search * and ?. Added previous and next history browsing for search.    

Version 0.02 - Feb 19, 2013
---------------------------
Fixed external editor file path recognition bug for Windows    
(could not recognize spaces e.g. C:\Program Files).    

Version 0.01 - Feb 18, 2013
---------------------------
Initial release    



================================================
FILE: README.md
================================================
![CodeQuery](doc/logotitle.png)
===============================

This is a tool to index, then query or search C, C++, Java, Python, Ruby, Go and Javascript source code.

It builds upon the databases of [cscope](http://cscope.sourceforge.net/) and [Exuberant ctags](http://ctags.sourceforge.net/). It can also work with [Universal ctags](https://github.com/universal-ctags/ctags/), which is a drop-in replacement for Exuberant ctags.

The databases of *cscope* and *ctags* would be processed by the *cqmakedb* tool to generate the CodeQuery database file.

The CodeQuery database file can be viewed and queried using the *codequery* GUI tool.

[![Build Status](https://github.com/ruben2020/codequery/actions/workflows/cmake.yml/badge.svg?branch=master)](https://github.com/ruben2020/codequery/actions)        [![Coverity Status](https://scan.coverity.com/projects/10066/badge.svg)](https://scan.coverity.com/projects/ruben2020-codequery)
      

## Latest version = 1.0.1

Windows binaries available here for download: [CodeQuery@sourceforge downloads](https://sourceforge.net/projects/codequery/files/)

On Debian and Ubuntu Linux, the software can be installed using `apt-get install codequery`.

To build on Linux, please read the [INSTALL-LINUX](doc/INSTALL-LINUX.md) file.

On Mac, the software can be installed through [Brew](http://brew.sh/) using `brew install codequery`.

Please read [NEWS](NEWS.md) to find out more.


## How is it different from cscope and ctags? What are the advantages?

Both cscope and ctags can do symbol lookup and identify functions, macros, classes and structs.

cscope is very C-centric, but is fuzzy enough to cover C++ and Java, but not very well for e.g. it doesn't understand destructors and class member instantiations. It can't provide relationships of class inheritance and membership. cscope can do "functions that call this function" and "functions called by this function". This is a very powerful feature that makes cscope stand out among comparable tools.

ctags does many languages well and understands destructors, member instantiations, and the relationships of class membership and inheritance. From ctags, we can find out "members and methods of this class", "class which owns this member or method", "parent of this class", "child of this class" etc. However, it doesn't do "functions that call this function" or "functions called by this function".

So both these tools have their pros and cons, but complement each other.

CodeQuery is a project that attempts to combine the features available from both cscope and ctags, provide faster database access compared to cscope (because it uses sqlite) and provides a nice GUI tool as well. Due to this faster database access, fast auto-completion of search terms and multiple complex queries to perform visualization is possible.

In addition, [pycscope](https://github.com/portante/pycscope) is used to add support for Python, in place of cscope.

In addition, [starscope](https://github.com/eapache/starscope) is used to add support for Ruby, Go and Javascript, in place of cscope.


## What features does CodeQuery have?

* Combines the best of both cscope and ctags
* Faster due to the use of sqlite for the CodeQuery database
* Cross-platform GUI tool
* Fast auto-completion of search term
* Case-insensitive, partial keyword search - wildcard search supported * and ?
* Exact match search
* Filter search results by file path
* File viewer with syntax highlighting, for UTF-8 encoded source files
* Ability to open viewed file in an external editor or IDE
* Visualization of function call graph and class inheritance based on search term
* Visualization graphs can be saved to PNG or Graphviz DOT files


## What types of query can I make?

* Symbol
* Function or macro definition
* Class or struct
* Functions calling this function
* Functions called by this function
* Calls of this function or macro
* Class which owns this member or method
* Members and methods of this class
* Parent of this class (inheritance)
* Children of this class (inheritance)
* Files including this file
* Full path for file
* Functions and macros inside this file
* Grep


## What does it look like?

![CodeQuery screenshot](doc/screenshot.png)


## How does the visualization look like?

Here's a function call graph based on the search term of "updateFilePathLabel". A -> B means A calls B:    
![Visualization screenshot](doc/screenshot2.png)


## Are other editors like vim or emacs or Visual Studio Code supported?

Yes!

There is a vim plugin for CodeQuery called [vim-codequery](https://github.com/devjoe/vim-codequery) by [devjoe](https://github.com/devjoe).

There is a Visual Studio Code extension for CodeQuery called [codequery4vscode](https://github.com/ruben2020/codequery4vscode) by [ruben2020](https://github.com/ruben2020). The Visual Studio Code Extension Marketplace page for this extension is [ruben2020.codequery4vscode](https://marketplace.visualstudio.com/items?itemName=ruben2020.codequery4vscode).

We welcome contributors to develop plugins for other editors too.


## What does it cost? How is it licensed?

It's freeware and free open source software.

This software is licensed under the [Mozilla Public License, version 2.0 (MPL-2.0)](https://www.mozilla.org/en-US/MPL/2.0/). See [LICENSE.md](LICENSE.md) or [LICENSE.txt](windows-install/wincommon/LICENSE.txt). This applies to both the distributed Source Code Form and the distributed Executable Form of the software.

To understand the MPL-2.0 license, please read the [MPL-2.0 FAQ by mozilla.org](https://www.mozilla.org/en-US/MPL/2.0/FAQ/).

Files under the `querylib` directory are licensed under the [MIT license](http://opensource.org/licenses/MIT). See [QueryLib README](querylib/README.txt). This is a library to query CodeQuery database files. This library is MIT-licensed, so that it may be used to create plugins for editors, IDEs and other software without restrictions. It's only dependency is on sqlite3.

Third party software attribution can be found in [THIRDPARTY.md](THIRDPARTY.md).

## Can I use it in a commercial environment without purchasing, for an unlimited time?

Yes. However, donations are welcomed.


## Which platforms are supported?

It has been tested on Windows 10 64-bit, Mac OS X, Ubuntu and Arch Linux 64-bit.

Contributions are welcomed to attempt ports to other operating systems.


## Is the software available in other languages?

Yes. This applies only to the GUI tool.

Contributions are welcomed to update or provide new translations.


## How to install it?

On Windows, EXE setup packages will be provided here: [CodeQuery@sourceforge downloads](https://sourceforge.net/projects/codequery/files/). The EXE setup package shall also contain cscope.exe, ctags.exe and the required DLLs. So, everything you need is in one package. However, [pycscope](https://github.com/portante/pycscope) (optional - only for Python) and [starscope](https://github.com/eapache/starscope) (optional - only for Ruby, Go and Javascript) are not bundled together with this setup package and need to be installed separately.

On Debian and Ubuntu Linux, the software can be installed using `apt-get install codequery`.

On Mac, the software can be installed through [Brew](http://brew.sh/) using `brew install codequery`.

To build on Linux and Mac, please read the [INSTALL-LINUX](doc/INSTALL-LINUX.md) file.

Version 15.8a of [cscope](http://cscope.sourceforge.net/) or higher, works best with CodeQuery.


## How do I use it?

On Windows: [HOWTO-WINDOWS](windows-install/wincommon/HOWTO-WINDOWS.txt). This file is included in the EXE setup package.

On Linux and Mac: [HOWTO-LINUX](doc/HOWTO-LINUX.md)

Please read the HOWTO file provided for each platform. The workflow looks like this:
![CodeQuery workflow](doc/workflow.png)


## How do I generate whole-program call graphs or UML class diagrams?

CodeQuery cannot do this at the moment.

To generate whole-program call graphs, please use [GNU cflow](https://www.gnu.org/software/cflow/) or [CodeViz](https://github.com/petersenna/codeviz) for C and C++. For Java, there is [Javashot](http://code.google.com/p/javashot/). 

To generate whole-program UML class diagrams for various object-oriented languages, please use [tags2uml](https://github.com/ruben2020/tags2uml). 


## Are there any known limitations?

For C and C++, [inline assembly code](http://en.wikipedia.org/wiki/Inline_assembler) is not supported by all the tools. This mainly affects embedded software, OS and driver code.

Please exclude files with inline assembly code from the list of files (cscope.files) to be scanned.


## How do I contact the authors for support, issues, bug reports, fix patches, feature requests etc.?

Please see the email address below, and also the Issues tab in GitHub.

Email address:    
![Contact address](doc/emailaddr.png)

Website: [CodeQuery website](https://github.com/ruben2020/codequery)


## How can I contribute?

* Report bugs
* Provide feedback, new ideas, suggestions etc. What would you like to see?
* Tell your friends, recommend it on StackOverflow or social media
* Fix bugs (see Issues tab)
* Update translations (Deutsch, Francais, Japanese etc.)
* Port to other platforms
* Write plugins for emacs, eclipse, Notepad++, NetBeans, Jenkins etc.
* Add support for other languages e.g. Objective-C, Swift


## List of Contributors

[ruben2020](https://github.com/ruben2020)    
[naseer](https://github.com/naseer)    
[bruno-](https://github.com/bruno-)    
[devjoe](https://github.com/devjoe)    
[jonashaag](https://github.com/jonashaag)    
[ilovezfs](https://github.com/ilovezfs)    
[JCount](https://github.com/JCount)    
[brianonn](https://github.com/brianonn)    
[teungri](https://github.com/teungri)    
[stweise](https://github.com/stweise)    
(More welcomed)


## Credits

We thank the people behind the following projects:    
[cscope](http://cscope.sourceforge.net/) - our database is derived from this   
[Exuberant ctags](http://ctags.sourceforge.net/)- our database is derived from this   
[Universal ctags](https://github.com/universal-ctags/ctags/) - drop-in replacement for Exuberant ctags    
[pycscope](https://github.com/portante/pycscope) - our database (for Python) is derived from this    
[starscope](https://github.com/eapache/starscope) - our database (for Ruby, Go and Javascript) is derived from this    
[sqlite3](http://www.sqlite.org/) - our database is using this format    
[CMake](http://www.cmake.org/) - cross-platform build toolchain for CodeQuery    
[Qt open source](http://qt-project.org/) - GUI toolkit used to build CodeQuery    
[showgraph](http://code.google.com/p/showgraph/) - visualization done using this library    
[scintilla](http://www.scintilla.org/) - our code editing widget    
[vim-codequery](https://github.com/devjoe/vim-codequery) - vim plugin for CodeQuery    
[Axialis](http://www.axialis.com/iconworkshop) - free images for CodeQuery and this website    
[brew](http://brew.sh/) - binaries for Mac here    




================================================
FILE: THIRDPARTY.md
================================================
Third Party Software
====================

Both the source and binary distributions of this software are linked to some 
third party software. All the third party software included or linked is 
redistributed under the terms and conditions of their original licenses.
These licenses are compatible with the license of this software, 
for the purposes they are being used.

The following list provides attribution for these third party software
in accordance with the conditions of their licenses.

Qt6 open source
---------------
Title: Qt 6.x     
Author: The Qt Company Ltd. and other contributors.     
Source: https://www.qt.io/download-open-source     
License: LGPL-3.0-only     
License file: https://doc.qt.io/qt-6/lgpl.html     
Linking method: Dynamic linking       
Distribution method: Distributed together with CodeQuery for Windows

Scintilla
---------
Title: Scintilla 5.5.x     
Author: Neil Hodgson     
Source: https://www.scintilla.org/     
License: ISC-like license     
License file: [scintilla/License.txt](scintilla/License.txt)       
Linking method: Static linking       
Distribution method: Included in CodeQuery binaries

Lexilla
-------
Title: Lexilla 5.3.x     
Author: Neil Hodgson     
Source: https://www.scintilla.org/     
License: ISC-like license     
License file: [lexilla/License.txt](lexilla/License.txt)       
Linking method: Static linking         
Distribution method: Included in CodeQuery binaries

SQLite
-------
Title: SQLite 3.x     
Author: D. Richard Hipp, Dan Kennedy, Joe Mistachkin     
Source: https://www.sqlite.org/     
License: Public domain     
License file: https://www.sqlite.org/copyright.html     
Linking method: Dynamic linking         
Distribution method: Distributed together with CodeQuery for Windows

getopt2
-------
Title: getopt2     
Author: Russ Allbery, Benjamin Sittler     
Source: (unknown)     
License: MIT      
License file: [querylib/getopt2.h](querylib/getopt2.h)     
Linking method: Static linking       
Distribution method: Included in CodeQuery binaries

winmain.cpp from gosu project
-----------------------------
Title: WinMain.cpp (gosu)      
Author: Julian Raschke, Jan Lücker, cyberarm, and all       
Source: https://github.com/gosu/gosu/blob/master/src/WinMain.cpp       
License: MIT      
License file: [gui/winmain.cpp](gui/winmain.cpp)       
Linking method: Static linking       
Distribution method: Included in CodeQuery binaries for Windows

showgraph
---------
Title: showgraph     
Author: Boris Shurygin     
Source: https://github.com/boris-shurygin/showgraph     
License: BSD-3-Clause     
License file: [showgraph/LICENSE.txt](showgraph/LICENSE.txt)      
Linking method: Static linking         
Distribution method: Included in CodeQuery binaries

Axialis
-------
Title: Axialis Free Icons     
Author: Axialis Software SA     
Source: https://www.axialis.com/free/icons/     
License: CC BY-ND 4.0     
License file: https://www.axialis.com/icons/license.html#free       
Distribution method: Icon images used in the GUI app

cscope
------
Title: cscope 15.8a     
Author: Santa Cruz Operation Inc.     
Source: https://cscope.sourceforge.net/      
License: BSD-3-Clause     
License file: https://cscope.sourceforge.net/license.html        
Distribution method: Distributed together with CodeQuery for Windows

ctags
-----
Title: ctags 5.8      
Author: Darren Hiebert       
Source: https://ctags.sourceforge.net/       
License: GPL-2.0-only        
License file: https://sourceforge.net/projects/ctags/         
Distribution method: Distributed together with CodeQuery for Windows

Wix Toolset
-----------
Title: Wix Toolset     
Author: .NET Foundation and contributors     
Source: https://github.com/wixtoolset/web      
License: MS-RL      
License file: https://github.com/wixtoolset/web/blob/master/LICENSE.TXT         
Distribution method: Used to create the Windows installer for CodeQuery


================================================
FILE: cli/CMakeLists.txt
================================================
#
# CodeQuery
# Copyright (C) 2013-2018 ruben2020 https://github.com/ruben2020/
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#

cmake_minimum_required(VERSION 3.16.0)
project(CodeQueryCLI)

#add_definitions( -Wall )

find_package(Sqlite REQUIRED)

include_directories( "." )
include_directories( "../makedb" )
include_directories( "../querylib" )
include_directories( "${SQLITE_INCLUDE_DIR}" )

set( CQSEARCH_SRCS
     main_cli.cpp
   )

add_executable( cqsearch ${CQSEARCH_SRCS} )
target_link_libraries( cqsearch ${SQLITE_LIBRARIES} small_lib sqlquery_lib )

install(TARGETS cqsearch RUNTIME DESTINATION bin)




================================================
FILE: cli/README.md
================================================
CodeQuery command line interface
================================

This provides the command line interface (CLI) for CodeQuery's query interface.

Type the following to get help:    
```bash
cqsearch -h
```




================================================
FILE: cli/main_cli.cpp
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#include <stdio.h>
#include <stdlib.h>
#include <memory>
#include "small_lib.h"
#include "getopt2.h"
#include "sqlquery.h"
#include "swver.h"


void printhelp(const char* str)
{
	printf("Usage:\n");
	printf("%s [-s <sqdbfile> [-p <n>] [-g] [-t <term>] [-l <len>] -[e|f] [-u] [-b <path>]]  [-d] [-v] [-h]\n\n", str);
	printf("options:\n");
	printf("  -s : CodeQuery sqlite3 db file path\n");
	printf("  -p : parameter is a number denoted by n\n");
	printf("       default n = 1 (Symbol)\n");
	printf("  -g : Create GraphViz DOT output instead of search results\n");
	printf("       Applicable only for function or macro def(n=2) and\n");
	printf("       class or struct (n=3)\n");
	printf("  -t : search term without spaces\n");
	printf("       if Exact Match is switched off, wild card\n");
	printf("       searches are possible. Use * and ?\n");
	printf("  -l : limited line length for truncated source code preview text\n");
	printf("       Accepted range: 0 - 800 (use 0 for limitless)\n");
	printf("       By default it is 80\n");
	printf("  -e : Exact Match switched ON \n");
	printf("       Case-sensitive\n");
	printf("  -f : Exact Match switched OFF (fuzzy search)\n");
	printf("       Case-insensitive with wild card search (default)\n");
	printf("  -u : show full file path instead of file name\n");
	printf("  -b : filters the results by source file path term\n");
	printf("       For example, if the path term is \"test\" (without quotes),\n");
	printf("       then the results will be filtered by source files whose\n");
	printf("       path includes the term \"test\"\n");
	printf("  -d : debug\n");
	printf("  -v : version\n");
	printf("  -h : help\n\n");
	printf("The combinations possible are -s -t -e, -s -t -f -u\n");
	printf("The additional optional arguments are -d\n\n");
	printf("The possible values for n are:\n");
	printf("    1: Symbol (default)\n");
	printf("    2: Function or macro definition\n");
	printf("    3: Class or struct\n");
	printf("    4: Files including this file\n");
	printf("    5: Full file path\n");
	printf("    6: Functions calling this function\n");
	printf("    7: Functions called by this function\n");
	printf("    8: Calls of this function or macro\n");
	printf("    9: Members and methods of this class\n");
	printf("   10: Class which owns this member or method\n");
	printf("   11: Children of this class (inheritance)\n");
	printf("   12: Parent of this class (inheritance)\n");
	printf("   13: Functions or macros inside this file\n\n");
	printf("Example:\n%s -s myproject.db -p 6 -t read*file -f\n\n", str);
	printf("Example of using -g with GraphViz:\n");
	printf("%s -s myproject.db -p 2 -g -t read*file > functioncallgraph.dot\n", str);
	printf("dot -Tpng -ofunctioncallgraph.png functioncallgraph.dot\n\n");

}

void printlicense(void)
{
	printf(CODEQUERY_SW_VERSION);
	printf("\n");
	printf(CODEQUERY_SW_LICENSE);
}

bool fileexists(const char* fn)
{
	bool retval;
	FILE *fp;
	fp = fopen(fn, "r");
	retval = (fp != NULL);
	if (retval) fclose(fp);
	return retval;
}

void process_argwithopt(char* thisOpt, int option, bool& err, tStr& fnstr, bool filemustexist)
{
	if (thisOpt != NULL)
	{
		fnstr = thisOpt;
		if (filemustexist && (fileexists(fnstr.c_str()) == false))
		{
			printf("Error: File %s doesn't exist.\n", fnstr.c_str());
			err = true;
		}
	}
	else
	{
		printf("Error: -%c used without file option.\n", option);
		err = true;
	}
}

tStr limitcstr(int limitlen, tStr str)
{
	if (limitlen <= 0)
		return str;
	else
		return str.substr(0,limitlen);
}

int process_query(tStr sqfn, tStr term, tStr param, bool exact, 
		   bool full, bool debug, int limitlen, bool graph, tStr fpath)
{
	if ((sqfn.empty())||(term.empty())||(param.empty())) return 1;
	int retVal = 0;
	sqlquery sq;
	tStr lstr;
	sqlquery::en_filereadstatus filestatus = sq.open_dbfile(sqfn);
	tVecStr grpxml, grpdot;
	bool res = false;
	tStr errstr;
	switch (filestatus)
	{
		case sqlquery::sqlfileOK:
			break;
		case sqlquery::sqlfileOPENERROR:
			printf("Error: File %s open error!\n", sqfn.c_str());
			return 1;
		case sqlquery::sqlfileNOTCORRECTDB:
			printf("Error: File %s does not have correct database format!\n", sqfn.c_str());
			return 1;
		case sqlquery::sqlfileINCORRECTVER:
			printf("Error: File %s has an unsupported database version number!\n", sqfn.c_str());
			return 1;
		case sqlquery::sqlfileUNKNOWNERROR:
			printf("Error: Unknown Error!\n");
			return 1;
	}
	int intParam = atoi(param.c_str()) - 1;
	if ((intParam < 0) || (intParam >= sqlquery::sqlresultAUTOCOMPLETE))
	{
		printf("Error: Parameter is out of range!\n");
		return 1;	
	}
	sqlqueryresultlist resultlst;
	if (graph)
	{
		if (intParam == sqlquery::sqlresultFUNC_MACRO)
		{
			res = sq.search_funcgraph(term, exact, grpxml, grpdot, 1, &errstr);
		}
		else if (intParam == sqlquery::sqlresultCLASS_STRUCT)
		{
			res = sq.search_classinheritgraph(term, exact, grpxml, grpdot, &errstr);
		}
		else
		{
			printf("Error: -g only works with function or macro def(n=2) and\n");
			printf("       class or struct (n=3)\n");
			return 1;
		}
		if (res == false)
		{
			printf("Error: SQL Error! %s!\n", errstr.c_str());
			return 1;
		}
		else
		{
			for (auto it = grpdot.begin(); it != grpdot.end(); it++)
				printf("%s\n", it->c_str());
			return 0;
		}
	}
	resultlst = sq.search(term, (sqlquery::en_queryType) intParam, exact, fpath);
	if (resultlst.result_type == sqlqueryresultlist::sqlresultERROR)
	{
		printf("Error: SQL Error! %s!\n", resultlst.sqlerrmsg.c_str());
		return 1;	
	}
	for(std::vector<sqlqueryresult>::iterator it = resultlst.resultlist.begin();
		it != resultlst.resultlist.end(); it++)
	{
		lstr = limitcstr(limitlen, it->linetext);
		switch(resultlst.result_type)
		{
			case sqlqueryresultlist::sqlresultFULL:
				printf("%s\t%s:%s\t%s\n", 
						it->symname.c_str(), 
						(full ? it->filepath.c_str() : it->filename.c_str()),
						it->linenum.c_str(),
						lstr.c_str());
				break;	
			case sqlqueryresultlist::sqlresultFILE_LINE:
				printf("%s:%s\t%s\n",
						(full ? it->filepath.c_str() : it->filename.c_str()),
						it->linenum.c_str(),
						lstr.c_str());
				break;	
			case sqlqueryresultlist::sqlresultFILE_ONLY:
				printf("%s\n", it->filepath.c_str());
				break;
			default:
				break;	
		}
	}
	return retVal;
}

int main(int argc, char *argv[])
{
	int c;
	bool bSqlite, bParam, bGraph, bTerm, bExact, bFull;
	bool bDebug, bVersion, bHelp, bError;
	int countExact = 0;
	int limitlen = 80;
	bSqlite = false;
	bParam = false;
	bGraph = false;
	bTerm = false;
	bExact = false;
	bFull = false;
	bDebug = false;
	bVersion = false;
	bHelp = (argc <= 1);
	bError = false;
	tStr sqfn, param = "1", term, fpath = "";

    while ((c = getopt2(argc, argv, "s:p:gt:l:efub:dvh")) != -1)
    {
		switch(c)
		{
			case 'v':
				bVersion = true;
				break;
			case 'h':
				bHelp = true;
				break;
			case 'e':
				bExact = true;
				countExact++;
				bError = bError || (countExact > 1);
				if (countExact > 1) printf("Error: either -e or -f but not both!\n");
				break;
			case 'f':
				bExact = false;
				countExact++;
				bError = bError || (countExact > 1);
				if (countExact > 1) printf("Error: either -e or -f but not both!\n");
				break;
			case 's':
				bSqlite = true;
				process_argwithopt(optarg, c, bError, sqfn, true);
				break;
			case 'p':
				bParam = true;
				param = optarg;
				break;
			case 'b':
				fpath = optarg;
				break;
			case 'g':
				bGraph = true;
				break;
			case 't':
				bTerm = true;
				term = optarg;
				break;
			case 'l':
				limitlen = atoi(optarg);
				break;
			case 'u':
				bFull = true;
				break;
			case 'd':
				bDebug = true;
				break;
			case '?':
				bError = true;
				break;
			default:
				break;
		}
    }
	if (bVersion)
	{
		printlicense();
		return 0;
	}
	if (bHelp || bError)
	{
		printhelp(extract_filename(argv[0]));
		return (bError ? 1 : 0);
	}
	if (!bSqlite)
	{
		printf("Error: -s is required.\n");
		bError = true;
	}
	if (!bTerm)
	{
		printf("Error: -t is required.\n");
		bError = true;
	}
	if (bError)
	{
		printhelp(extract_filename(argv[0]));
		return 1;
	}
	if (bSqlite && bTerm)
	{
		bError = process_query(sqfn, term, param, bExact, bFull, bDebug, limitlen, bGraph, fpath) > 0;
	}
	if (bError)
	{
		printhelp(extract_filename(argv[0]));
	}
	return bError;
}



================================================
FILE: cmakefind/FindSqlite.cmake
================================================

#
# The following license applies only to this file:
#

# - find Sqlite 3
# SQLITE_INCLUDE_DIR - Where to find Sqlite 3 header files (directory)
# SQLITE_LIBRARIES - Sqlite 3 libraries
# SQLITE_LIBRARY_RELEASE - Where the release library is
# SQLITE_LIBRARY_DEBUG - Where the debug library is
# SQLITE_FOUND - Set to TRUE if we found everything (library, includes and executable)

# Copyright (c) 2010 Pau Garcia i Quiles, <pgquiles@elpauer.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
# Generated by CModuler, a CMake Module Generator - http://gitorious.org/cmoduler

IF( SQLITE_INCLUDE_DIR AND SQLITE_LIBRARY_RELEASE )
    SET(SQLITE_FIND_QUIETLY TRUE)
ENDIF( SQLITE_INCLUDE_DIR AND SQLITE_LIBRARY_RELEASE )


IF ( UNIX )

   FIND_PATH( SQLITE_INCLUDE_DIR sqlite3.h  )

   FIND_LIBRARY(SQLITE_LIBRARY_RELEASE NAMES sqlite3 )

ELSE ( UNIX )

   FIND_PATH( SQLITE_INCLUDE_DIR sqlite3.h 
              "/sqlite3/include")

   FIND_LIBRARY( SQLITE_LIBRARY_RELEASE NAMES sqlite3 )

ENDIF ( UNIX )

IF( SQLITE_LIBRARY_RELEASE AND SQLITE_INCLUDE_DIR )
        SET( SQLITE_FOUND TRUE )
ENDIF( SQLITE_LIBRARY_RELEASE AND SQLITE_INCLUDE_DIR )

IF( SQLITE_LIBRARY_RELEASE )
        SET( SQLITE_LIBRARIES ${SQLITE_LIBRARY_RELEASE} )
ENDIF( SQLITE_LIBRARY_RELEASE )

IF( SQLITE_FOUND )
        IF( NOT SQLITE_FIND_QUIETLY )
                MESSAGE( STATUS "Found Sqlite3 header file in ${SQLITE_INCLUDE_DIR}")
                MESSAGE( STATUS "Found Sqlite3 libraries: ${SQLITE_LIBRARIES}")
        ENDIF( NOT SQLITE_FIND_QUIETLY )
ELSE(SQLITE_FOUND)
        IF( SQLITE_FIND_REQUIRED)
                MESSAGE( FATAL_ERROR "Could not find Sqlite3" )
        ELSE( SQLITE_FIND_REQUIRED)
                MESSAGE( STATUS "Optional package Sqlite3 was not found" )
        ENDIF( SQLITE_FIND_REQUIRED)
		
ENDIF(SQLITE_FOUND)



================================================
FILE: doc/HOWTO-LINUX.md
================================================

HOWTO GUIDE
===========

This HOWTO guide applies to Linux only

## HOW TO USE CODEQUERY WITH C/C++ CODE?

1. Change directory to the base folder of your source code like this:
```bash
cd ~/projects/myproject/src
```
2. Create a cscope.files file with all the C/C++ source files listed in it. Files with [inline assembly code](http://en.wikipedia.org/wiki/Inline_assembler) should be excluded from this list.
```bash
find . -iname "*.c"    > ./cscope.files
find . -iname "*.cpp" >> ./cscope.files
find . -iname "*.cxx" >> ./cscope.files
find . -iname "*.cc " >> ./cscope.files
find . -iname "*.h"   >> ./cscope.files
find . -iname "*.hpp" >> ./cscope.files
find . -iname "*.hxx" >> ./cscope.files
find . -iname "*.hh " >> ./cscope.files
```
3. Create a cscope database like this (add `k`, if you don't want standard include paths like for stdio.h):
```bash
cscope -cb
```
Omission of `c` (to use compressed cscope database) is now supported experimentally.      
4. Create a ctags database like this.
```bash
ctags --fields=+i -n -L ./cscope.files
```
5. Run cqmakedb to create a CodeQuery database out of the cscope and ctags databases, like this:
```bash
cqmakedb -s ./myproject.db -c ./cscope.out -t ./tags -p
```
6. Open myproject.db using the CodeQuery GUI tool by running the following. Wild card search (* and ?) supported if Exact Match is switched off. Or use cqsearch, the CLI-version of CodeQuery (type `cqsearch -h` for more info).
```bash
codequery
```
Use `cqmakedb -h` to get help on cqmakedb command line arguments.      
Use `codequery -h` to get help on codequery command line arguments.



## HOW TO USE CODEQUERY WITH JAVA CODE?

1. Change directory to the base folder of your source code like this:
```bash
cd ~/projects/myproject/src
```
2. Create a cscope.files file with all the Java source files listed in it.
```bash
find . -iname "*.java" > ./cscope.files
```
3. Create a cscope database like this:
```bash
cscope -cb
```
Omission of `c` (to use compressed cscope database) is now supported experimentally.      
4. Create a ctags database like this:
```bash
ctags --fields=+i -n -L ./cscope.files
```
5. Run cqmakedb to create a CodeQuery database out of the cscope and ctags databases, like this:
```bash
cqmakedb -s ./myproject.db -c ./cscope.out -t ./tags -p
```
6. Open myproject.db using the CodeQuery GUI tool by running the following. Wild card search (* and ?) supported if Exact Match is switched off. Or use cqsearch, the CLI-version of CodeQuery (type `cqsearch -h` for more info).
```bash
codequery
```
Use `cqmakedb -h` to get help on cqmakedb command line arguments.      
Use `codequery -h` to get help on codequery command line arguments.



## HOW TO USE CODEQUERY WITH PYTHON CODE?

If you want to browse Python code, don't forget to install [pycscope](https://github.com/portante/pycscope). Information on how to install this tool is available on its github page.

1. Change directory to the base folder of your source code like this:
```bash
cd ~/projects/myproject/src
```
2. Create a cscope.files file with all the Python source files listed in it.
```bash
find . -iname "*.py"    > ./cscope.files
```
3. Create a cscope database like this:
```bash
pycscope -i ./cscope.files
```
4. Create a ctags database like this.
```bash
ctags --fields=+i -n -L ./cscope.files
```
5. Run cqmakedb to create a CodeQuery database out of the cscope and ctags databases, like this:
```bash
cqmakedb -s ./myproject.db -c ./cscope.out -t ./tags -p
```
6. Open myproject.db using the CodeQuery GUI tool by running the following. Wild card search (* and ?) supported if Exact Match is switched off. Or use cqsearch, the CLI-version of CodeQuery (type `cqsearch -h` for more info).
```bash
codequery
```
Use `cqmakedb -h` to get help on cqmakedb command line arguments.      
Use `codequery -h` to get help on codequery command line arguments.



## HOW TO USE CODEQUERY WITH RUBY, GO AND JAVASCRIPT CODE?

If you want to browse Ruby, Go or Javascript code, don't forget to install [starscope](https://github.com/eapache/starscope). Information on how to install this tool is available on its github page.

1. Change directory to the base folder of your source code like this:
```bash
cd ~/projects/myproject/src
```
2. Create a cscope.files file with all the Ruby, Go or Javascript source files listed in it.
```bash
find . -iname "*.rb"    > ./cscope.files
find . -iname "*.go"    >> ./cscope.files
find . -iname "*.js"    >> ./cscope.files
```
3. Create a cscope database like this:
```bash
starscope -e cscope
```
4. Create a ctags database like this.
```bash
ctags --fields=+i -n -L ./cscope.files
```
5. Run cqmakedb to create a CodeQuery database out of the cscope and ctags databases, like this:
```bash
cqmakedb -s ./myproject.db -c ./cscope.out -t ./tags -p
```
6. Open myproject.db using the CodeQuery GUI tool by running the following. Wild card search (* and ?) supported if Exact Match is switched off. Or use cqsearch, the CLI-version of CodeQuery (type `cqsearch -h` for more info).
```bash
codequery
```
Use `cqmakedb -h` to get help on cqmakedb command line arguments.      
Use `codequery -h` to get help on codequery command line arguments.



================================================
FILE: doc/INSTALL-LINUX.md
================================================
HOW TO INSTALL CODEQUERY IN LINUX
=================================

This INSTALL guide applies to Linux and Mac only

(For Windows, a SETUP EXE package will be provided)


## HOW TO INSTALL IN LINUX?

Step 1: Install CMake (>=3.16), sqlite3, Qt5 (>=5.12) or Qt6 (>=6.4) for Qt5 or Qt6, cscope (15.8a or higher), ctags. If you have Ubuntu, Linux Mint, Debian or Fedora installed, most of these should be obtainable through the package managers. Note that the cscope version on the Ubuntu repositories may not be the latest one. It's better to have the latest version of cscope installed.   
[CMake](http://www.cmake.org/)   
[sqlite3](http://www.sqlite.org/)   
[Qt5 or Qt6](http://qt-project.org/)   
[cscope](http://cscope.sourceforge.net/) for C/C++/Java   
[Exuberant ctags](http://ctags.sourceforge.net/)    
[Universal ctags](https://github.com/universal-ctags/ctags/)    
[pycscope](https://github.com/portante/pycscope) for Python    
[starscope](https://github.com/eapache/starscope) for Ruby, Go and Javascript    

In Ubuntu or Linux Mint or Debian, do the following first:    
```bash
sudo apt-get update
sudo apt-get install build-essential g++ git cmake ninja-build sqlite3 libsqlite3-dev cscope exuberant-ctags
```

In Ubuntu or Linux Mint or Debian, do the following next for Qt5:    
```bash
sudo apt-get install qtcreator qtbase5-dev qt5-qmake qttools5-dev-tools qttools5-dev
```

In Ubuntu or Linux Mint or Debian, do the following next for Qt6:    
```bash
sudo apt-get install libglx-dev libgl1-mesa-dev libvulkan-dev libxkbcommon-dev
sudo apt-get install qt6-base-dev qt6-base-dev-tools qt6-tools-dev qt6-tools-dev-tools
sudo apt-get install libqt6core5compat6-dev qt6-l10n-tools qt6-wayland
```

If you want to browse Python code, don't forget to install [pycscope](https://github.com/portante/pycscope) at this point. Information on how to install this tool is available on its github page.

If you want to browse Ruby, Go or Javascript code, don't forget to install [starscope](https://github.com/eapache/starscope) at this point. Information on how to install this tool is available on its github page.


Step 2: Download the repository as a ZIP file from github or clone git repository:     
[codequery@github](https://github.com/ruben2020/codequery)     
```bash
cd ~/myrepos
git clone https://github.com/ruben2020/codequery.git
```

Step 3: Unzip to a directory and change to that directory.     
```bash
cd ~/myrepos/codequery
```

Step 4: Run cmake (first line for Qt6 OR second line for Qt5 OR third line for no GUI).     
```bash
cmake -G Ninja -S . -B build
cmake -G Ninja -DBUILD_QT5=ON -S . -B build
cmake -G Ninja -DNO_GUI=ON -S . -B build
```

Step 5: Build and install.       
```bash
cmake --build build
sudo cmake --install build
```

If you want to install to an alternative directory instead of the default one, use the following:     
```bash
cmake -DCMAKE_INSTALL_PREFIX="/home/johndoe/tools/" -G Ninja -S . -B build
cmake --build build
sudo cmake --install build
```


Step 6: Please read [HOWTO-LINUX](HOWTO-LINUX.md) to learn how to use this software.

If the theming of the codequery GUI app looks strange in environments other than KDE Plasma, please refer to [this page](https://wiki.archlinux.org/title/Qt#Configuration_of_Qt_5/6_applications_under_environments_other_than_KDE_Plasma) for hints.



================================================
FILE: gui/CMakeLists.txt
================================================
#
# CodeQuery
# Copyright (C) 2013-2018 ruben2020 https://github.com/ruben2020/
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#

cmake_minimum_required(VERSION 3.16.0)
project(CodeQueryGUI)

#ADD_DEFINITIONS( -Wall )

if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.10.0") 
foreach(p
    CMP0071 # 3.10: Let AUTOMOC and AUTOUIC process GENERATED files
    )
  if(POLICY ${p})
    cmake_policy(SET ${p} NEW)
  endif()
endforeach()
endif()



  # with SET() command you can change variables or define new ones
  # here we define CODEQUERY_SRCS variable that contains a list of all .cpp files
  # note that we don't need \ at the end of line
  SET( CODEQUERY_SRCS
       ../querylib/small_lib.cpp
       ../querylib/sqlquery.cpp
       langtable.cpp
       fileviewer.cpp
       listhandler.cpp
       searchhandler.cpp
       mainwindow.cpp
       graphdialog.cpp
       aboutdialog.cpp
       fileviewsettingsdialog.cpp
       themes.cpp
       main_gui.cpp
       winmain.cpp
  )
  
  # another list, this time it includes all header files that should be treated with moc
  SET( CODEQUERY_MOC_HDRS
       fileviewer.h
       listhandler.h
       searchhandler.h
       mainwindow.h
       graphdialog.h
       aboutdialog.h
       fileviewsettingsdialog.h
  )
  
  # some .ui files
  SET( CODEQUERY_UIS
       ui/mainWindow.ui
       ui/graphDialog.ui
       ui/aboutDialog.ui
       ui/fileViewSettingsDialog.ui
  )
  
  # and finally an resource file
  #SET( CODEQUERY_RCS
  #     codequery.qrc
  #)

  # translation files
  SET( CODEQUERY_TRANS

translations/codequery_de.ts
translations/codequery_en.ts
translations/codequery_es.ts
translations/codequery_fr.ts
translations/codequery_id.ts
translations/codequery_it.ts
translations/codequery_ja.ts
translations/codequery_ko.ts
translations/codequery_zh-CHS.ts
translations/codequery_zh-CHT.ts

  )  

  SET( CQIMAGES_RC_QRC   "${CMAKE_CURRENT_SOURCE_DIR}/cqimages.qrc")
  SET( CQIMAGES_RC_SRCS  "${CMAKE_CURRENT_BINARY_DIR}/qrc_cqimages.cxx")
  SET( CQTRANS_RC_QRCT   "${CMAKE_CURRENT_SOURCE_DIR}/cqtrans.qrc.template")
  SET( CQTRANS_RC_QRC    "${CMAKE_CURRENT_BINARY_DIR}/cqtrans.qrc")
  SET( CQTRANS_RC_SRCS   "${CMAKE_CURRENT_BINARY_DIR}/qrc_cqtrans.cxx")

if (WIN32)
  SET( COPY_COMMAND  "copy")
  string(REPLACE "/" "\\" CQTRANS_RC_QRCT_CP "${CQTRANS_RC_QRCT}")
  string(REPLACE "/" "\\" CQTRANS_RC_QRC_CP  "${CQTRANS_RC_QRC}")
else (WIN32)
  SET( COPY_COMMAND  "cp")
  SET( CQTRANS_RC_QRCT_CP  "${CQTRANS_RC_QRCT}")
  SET( CQTRANS_RC_QRC_CP   "${CQTRANS_RC_QRC}")
endif (WIN32)

  add_definitions( -DNO_QDESIGNER_WIDGET_EXPORT )

  INCLUDE_DIRECTORIES( "${CMAKE_CURRENT_BINARY_DIR}" )
  INCLUDE_DIRECTORIES( "." )
  INCLUDE_DIRECTORIES( "./translations" )
  INCLUDE_DIRECTORIES( "../querylib" )
  INCLUDE_DIRECTORIES( "../makedb" )
  INCLUDE_DIRECTORIES( "../showgraph" )
  INCLUDE_DIRECTORIES( "/usr/local/include" )
  INCLUDE_DIRECTORIES( "../lexilla/include" )
  INCLUDE_DIRECTORIES( "../scintilla/qt/ScintillaEdit" )
  INCLUDE_DIRECTORIES( "../scintilla/qt/ScintillaEditBase" )
  INCLUDE_DIRECTORIES( "../scintilla/include" )
  INCLUDE_DIRECTORIES( "../scintilla/src" )
  INCLUDE_DIRECTORIES( "../scintilla/lexlib" )

if(GHAWIN)
find_package(unofficial-sqlite3 CONFIG REQUIRED)
set( SQLITE_LIBRARIES "unofficial::sqlite3::sqlite3" )
else(GHAWIN)
find_package(Sqlite REQUIRED)
include_directories( "${SQLITE_INCLUDE_DIR}" )
endif(GHAWIN)

if (BUILD_QT5)

  # this command finds Qt4 libraries and sets all required variables
  # note that it's Qt4, not QT4 or qt4
  FIND_PACKAGE( Qt5Widgets REQUIRED )
  FIND_PACKAGE( Qt5Core REQUIRED )
  FIND_PACKAGE( Qt5Concurrent REQUIRED )
  FIND_PACKAGE( Qt5Xml REQUIRED )
  FIND_PACKAGE( Qt5LinguistTools REQUIRED )

  add_definitions( -DUSE_QT5 )
  #add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x050F00)

  set_target_properties(Qt5::Core PROPERTIES MAP_IMPORTED_CONFIG_COVERAGE "RELEASE")
  
  SET(CMAKE_AUTOMOC ON)
  SET(CMAKE_INCLUDE_CURRENT_DIR ON)

  get_target_property(QT_RCC_EXECUTABLE Qt5::rcc LOCATION)

  QT5_ADD_TRANSLATION( QM ${CODEQUERY_TRANS} )  
  
  # this command will generate rules that will run rcc on all files from CODEQUERY_RCS
  # in result CQIMAGES_RC_SRCS variable will contain paths to files produced by rcc
  # QT4_ADD_RESOURCES( CQIMAGES_RC_SRCS ${CODEQUERY_RCS} )

  # Run the resource compiler (rcc_options should already be set).
  ADD_CUSTOM_COMMAND(
    OUTPUT ${CQIMAGES_RC_SRCS}
    COMMAND ${QT_RCC_EXECUTABLE}
    ARGS ${rcc_options} -name cqimages -o ${CQIMAGES_RC_SRCS} ${CQIMAGES_RC_QRC}
    )

  ADD_CUSTOM_COMMAND(
    OUTPUT ${CQTRANS_RC_SRCS}
    COMMAND ${QT_RCC_EXECUTABLE}
    ARGS ${rcc_options} -name cqtrans -o ${CQTRANS_RC_SRCS} ${CQTRANS_RC_QRC}
    DEPENDS ${QM} ${CQTRANS_RC_QRC}
    )

  ADD_CUSTOM_COMMAND(
    OUTPUT ${CQTRANS_RC_QRC}
    COMMAND ${COPY_COMMAND}
    ARGS ${CQTRANS_RC_QRCT_CP} ${CQTRANS_RC_QRC_CP}
    )
    

  # this will run uic on .ui files:
  QT5_WRAP_UI( CODEQUERY_UI_HDRS ${CODEQUERY_UIS} )

  # we need this to be able to include headers produced by uic in our code
  # (CMAKE_BINARY_DIR holds a path to the build directory, while INCLUDE_DIRECTORIES() works just like INCLUDEPATH from qmake)
  INCLUDE_DIRECTORIES( "${Qt5Widgets_INCLUDE_DIRS}" )

if(WIN32)
  SET(CQ_WIN_RCS cqwin64.rc)
  add_executable( codequery WIN32 ${CODEQUERY_SRCS} ${CODEQUERY_MOC_SRCS} ${CQIMAGES_RC_SRCS} ${CQTRANS_RC_SRCS} ${CODEQUERY_UI_HDRS} ${QM} ${CQ_WIN_RCS} )
  target_link_libraries( codequery Qt5::Widgets Qt5::Concurrent Qt5::WinMain ${SQLITE_LIBRARIES} cqshowgraph-qt5 scintillaedit lexilla)
else()
  add_executable( codequery ${CODEQUERY_SRCS} ${CODEQUERY_MOC_SRCS} ${CQIMAGES_RC_SRCS} ${CQTRANS_RC_SRCS} ${CODEQUERY_UI_HDRS} ${QM} )
  target_link_libraries( codequery Qt5::Widgets Qt5::Concurrent ${SQLITE_LIBRARIES} cqshowgraph-qt5 scintillaedit lexilla)
endif()
  
  install(TARGETS codequery RUNTIME DESTINATION bin)


else (BUILD_QT5)

  find_package(Qt6 REQUIRED COMPONENTS Core Widgets Concurrent Xml LinguistTools )
  set(CMAKE_AUTOMOC ON)
  set(CMAKE_AUTORCC OFF)
  set(CMAKE_AUTOUIC OFF)

  add_definitions( -DUSE_QT6 )
  add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x050F00)

  set_target_properties(Qt6::Core PROPERTIES MAP_IMPORTED_CONFIG_COVERAGE "RELEASE")

  get_target_property(QT_RCC_EXECUTABLE Qt6::rcc LOCATION)

  qt6_add_translation( QM ${CODEQUERY_TRANS} )

  ADD_CUSTOM_COMMAND(
    OUTPUT ${CQIMAGES_RC_SRCS}
    COMMAND ${QT_RCC_EXECUTABLE}
    ARGS ${rcc_options} -name cqimages -o ${CQIMAGES_RC_SRCS} ${CQIMAGES_RC_QRC}
    )

  ADD_CUSTOM_COMMAND(
    OUTPUT ${CQTRANS_RC_SRCS}
    COMMAND ${QT_RCC_EXECUTABLE}
    ARGS ${rcc_options} -name cqtrans -o ${CQTRANS_RC_SRCS} ${CQTRANS_RC_QRC}
    DEPENDS ${QM} ${CQTRANS_RC_QRC}
    )

  ADD_CUSTOM_COMMAND(
    OUTPUT ${CQTRANS_RC_QRC}
    COMMAND ${COPY_COMMAND}
    ARGS ${CQTRANS_RC_QRCT_CP} ${CQTRANS_RC_QRC_CP}
    )

  qt6_wrap_ui( CODEQUERY_UI_HDRS ${CODEQUERY_UIS} )

if(WIN32)
  SET(CQ_WIN_RCS cqwin64.rc)
  add_executable( codequery WIN32 ${CODEQUERY_SRCS} ${CODEQUERY_MOC_SRCS} ${CQIMAGES_RC_SRCS} ${CQTRANS_RC_SRCS} ${CODEQUERY_UI_HDRS} ${QM} ${CQ_WIN_RCS} )
  target_link_libraries( codequery PRIVATE Qt6::Widgets Qt6::Concurrent ${SQLITE_LIBRARIES} cqshowgraph-qt6 scintillaedit lexilla )
else()
  add_executable( codequery ${CODEQUERY_SRCS} ${CODEQUERY_MOC_SRCS} ${CQIMAGES_RC_SRCS} ${CQTRANS_RC_SRCS} ${CODEQUERY_UI_HDRS} ${QM} )
  target_link_libraries( codequery PRIVATE Qt6::Widgets Qt6::Concurrent ${SQLITE_LIBRARIES} cqshowgraph-qt6 scintillaedit lexilla )
endif()

  install(TARGETS codequery RUNTIME DESTINATION bin)


endif (BUILD_QT5)



================================================
FILE: gui/aboutdialog.cpp
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#include "ui_aboutDialog.h"
#include "aboutdialog.h"
#include "swver.h"


cqDialogAbout::cqDialogAbout(QWidget *parent)
:QDialog(parent)
,dialog_ui(new Ui::aboutDialog)
 {
	dialog_ui->setupUi(this);
	dialog_ui->labelTitle->setText(CODEQUERY_SW_VERSION_WEBSITE);
	dialog_ui->labelLicense->setText(CODEQUERY_SW_LICENSE_PARA_LINK);
	connect(dialog_ui->pushButtonCloseAbout, SIGNAL(clicked()),
		this, SLOT(accept()));
	resize(sizeHint());
	layout()->setSizeConstraint(QLayout::SetFixedSize) ;
	setSizeGripEnabled(false) ;
}

cqDialogAbout::~cqDialogAbout()
 {
	disconnect();
	delete dialog_ui;
 }




================================================
FILE: gui/aboutdialog.h
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#ifndef ABOUTDIALOG_H_CQ
#define ABOUTDIALOG_H_CQ

#include <QtGlobal>
#include <QtWidgets>

 namespace Ui {
     class aboutDialog;
 }

class cqDialogAbout : public QDialog
{
  Q_OBJECT

public:
Ui::aboutDialog *dialog_ui;
cqDialogAbout(QWidget *parent);
virtual ~cqDialogAbout();


};


#endif //ABOUTDIALOG_H_CQ




================================================
FILE: gui/cqimages.qrc
================================================
<RCC>
  <qresource prefix="/mainwindow">
    <file>images/Folder2.png</file>
    <file>images/Search.png</file>
    <file>images/Arrow2_Left.png</file>
    <file>images/Arrow2_Right.png</file>
    <file>images/Arrow2_Up.png</file>
    <file>images/Arrow2_Down.png</file>
    <file>images/Clipboard_Copy.png</file>
    <file>images/Clipboard_Paste.png</file>
    <file>images/Database.png</file>
    <file>images/Document2.png</file>
    <file>images/Flag.png</file>
    <file>images/Graph.png</file>
    <file>images/Zoom_Out.png</file>
    <file>images/Zoom_In.png</file>
    <file>images/Text_Minus.png</file>
    <file>images/Text_Plus.png</file>
    <file>images/logo.png</file>
  </qresource>
</RCC>


================================================
FILE: gui/cqtrans.qrc.template
================================================
<RCC>
  <qresource prefix="/trans">
    <file>codequery_de.qm</file>
    <file>codequery_en.qm</file>
    <file>codequery_es.qm</file>
    <file>codequery_fr.qm</file>
    <file>codequery_id.qm</file>
    <file>codequery_it.qm</file>
    <file>codequery_ja.qm</file>
    <file>codequery_ko.qm</file>
    <file>codequery_zh-CHS.qm</file>
    <file>codequery_zh-CHT.qm</file>
  </qresource>
</RCC>


================================================
FILE: gui/cqwin32.rc
================================================
IDI_ICON1 ICON DISCARDABLE "images/logo6464.ico"
IDI_ICON2 ICON DISCARDABLE "images/logo4848.ico"
IDI_ICON3 ICON DISCARDABLE "images/logo3232.ico"
IDI_ICON4 ICON DISCARDABLE "images/logo1616.ico"



================================================
FILE: gui/cqwin64.rc
================================================
IDI_ICON1 ICON DISCARDABLE "images/logo128128.ico"
IDI_ICON2 ICON DISCARDABLE "images/logo6464.ico"
IDI_ICON3 ICON DISCARDABLE "images/logo4848.ico"
IDI_ICON4 ICON DISCARDABLE "images/logo3232.ico"
IDI_ICON5 ICON DISCARDABLE "images/logo1616.ico"



================================================
FILE: gui/fileviewer.cpp
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#include <stdlib.h>
#include <string.h>
#include <QProcess>
#include <QInputDialog>
#include <QFontDatabase>
#include <QFontMetrics>

#include "ILexer.h"
#include "Lexilla.h"
#include "ScintillaEdit.h"
#include "SciLexer.h"

#include "fileviewer.h"
#include "mainwindow.h"
#include "fileviewsettingsdialog.h"
#include "themes.h"

#if defined(_WIN32)
#define EXT_EDITOR_DEFAULT_PATH "notepad %f"
#elif defined(__APPLE__)
#define EXT_EDITOR_DEFAULT_PATH "open -t %f"
#else
#define EXT_EDITOR_DEFAULT_PATH "gedit %f +%n"
#endif

filedata::filedata()
{
	linenum = "1";
	fileid = -99;
}
filedata::filedata(const QString& fn, const QString& ln, const int& fi)
{
	linenum = ln;
	filename = fn;
	fileid = fi;
}

bool filedata::compare(const filedata& fd)
{
	bool cmp;
	if ((fileid < 0)||(fd.fileid < 0))
	{
		cmp = ((linenum.compare(fd.linenum) == 0)&&
			(filename.compare(fd.filename) == 0));
	}
	else
	{
		cmp = ((linenum.compare(fd.linenum) == 0)&&
			(fileid == fd.fileid));
	}
	return cmp;
}

bool filedata::compareFilePathOnly(const filedata& fd)
{
	bool cmp;
	if ((fileid < 0)||(fd.fileid < 0))
	{
		cmp = (filename.compare(fd.filename) == 0);
	}
	else
	{
		cmp = (fileid == fd.fileid);
	}
	return cmp;
}

bool filedata::compareFileNameOnly(const filedata& fd)
{
	bool cmp;
	if ((fileid < 0)||(fd.fileid < 0))
	{
		cmp =(strcmp(
		extract_filename(filename.C_STR()),
		extract_filename(fd.filename.C_STR())) == 0);
	}
	else
	{
		cmp = (fileid == fd.fileid);
	}
	return cmp;
}

filedata::filedata(const filedata& fd)
{
	linenum = fd.linenum;
	filename = fd.filename;
	fileid = fd.fileid;
}

filedata& filedata::operator=(const filedata& fd)
{
	if (&fd != this)
	{
		linenum = fd.linenum;
		filename = fd.filename;
		fileid = fd.fileid;
	}
	return *this;
}

fileviewer::fileviewer(mainwindow* pmw)
:mw(pmw)
,m_pushButtonPrev(NULL)
,m_pushButtonNext(NULL)
,m_pushButtonOpenInEditor(NULL)
,m_pushButtonPaste(NULL)
,m_pushButtonGoToLine(NULL)
,m_labelFilePath(NULL)
,m_textEditSource(NULL)
,m_textEditSourceFont("Courier New", 12)
,m_externalEditorPath(EXT_EDITOR_DEFAULT_PATH)
,m_timestampMismatchWarned(false)
,m_lexer(NULL)
,m_fontsize(0)
,m_currentlang(enHighlightCPP)
,m_currentline(1)
,m_annotline(1)
,m_pushButtonTextShrink(NULL)
,m_pushButtonTextEnlarge(NULL)
,m_checkBoxSymbolOnly(NULL)
,m_listWidgetFunc(NULL)
,m_comboBoxFuncListSort(NULL)
,m_fontwidthtemp(1)
,m_markerhandle(1)
,m_markerhandle2(2)
{
	m_iter = m_fileDataList.begin();
	m_textEditSourceFont.setStyleHint(QFont::TypeWriter);	
}

fileviewer::~fileviewer()
{
	disconnect();
}

void fileviewer::createFontList(void)
{
	QFontDatabase fontdb;
	QStringList fontlst = fontdb.families(QFontDatabase::Latin);
	QStringList fixedpitch;
	QStringList::iterator it;
	for(it = fontlst.begin(); it != fontlst.end(); it++)
	{
		if (fontdb.isFixedPitch(*it))
		{
			fixedpitch << (*it);
		}
	}
	fixedpitch.sort();
	m_fontlist = fixedpitch;
}

QString fileviewer::checkFontFamily(QString fontname)
{
	QString newfont;
#ifdef _WIN32
	QString tryfont1 = "Consolas";
	QString tryfont2 = "Courier New";
#else
	QString tryfont1 = "Monospace";
	QString tryfont2 = "Ubuntu Mono";
#endif
	if (m_fontlist.isEmpty()) createFontList();
	if (m_fontlist.contains(fontname))
	{
		newfont = fontname;
	}
	else
	{
		newfont = QFontDatabase::systemFont(QFontDatabase::FixedFont).family();
	}
	return newfont;
}

void fileviewer::init(void)
{
	m_pushButtonPaste->setEnabled(false);
	m_pushButtonPrev->setEnabled(false);
	m_pushButtonNext->setEnabled(false);
	m_pushButtonTextShrink->setEnabled(false);
	m_pushButtonTextEnlarge->setEnabled(false);
	m_pushButtonGoToLine->setEnabled(false);
	m_pushButtonOpenInEditor->setEnabled(false);
	m_labelFilePath->clear();
	m_textEditSource->setWrapMode(SC_WRAP_NONE);
	m_textEditSource->setReadOnly(true);
	m_markerhandle = 0;
	m_markerhandle2 = 1;
	m_textEditSource->markerDefine(m_markerhandle, SC_MARK_BACKGROUND);
	m_textEditSource->markerDefine(m_markerhandle2, SC_MARK_ARROW);
	m_textEditSource->setMarginTypeN(0, SC_MARGIN_NUMBER);
	m_textEditSource->setMarginTypeN(1, SC_MARGIN_SYMBOL);
	m_textEditSource->annotationSetVisible(ANNOTATION_BOXED);
	m_textEditSource->setCodePage(SC_CP_UTF8);
	m_textEditSource->setCaretPeriod(0);
	createFontList();
	ScintillaEditBase *textEditSourceBase = m_textEditSource;
	connect(textEditSourceBase, SIGNAL(selectionChanged(bool)),
			this, SLOT(AbleToCopy(bool)));
	connect(m_pushButtonGoToLine, SIGNAL(clicked(bool)),
			this, SLOT(GoToLine_ButtonClick(bool)));
	connect(m_pushButtonPaste, SIGNAL(clicked(bool)),
			this, SLOT(Paste_ButtonClick(bool)));
	connect(m_pushButtonPrev, SIGNAL(clicked(bool)),
			this, SLOT(Prev_ButtonClick(bool)));
	connect(m_pushButtonNext, SIGNAL(clicked(bool)),
			this, SLOT(Next_ButtonClick(bool)));
	connect(m_pushButtonOpenInEditor, SIGNAL(clicked(bool)),
			this, SLOT(OpenInEditor_ButtonClick(bool)));
	connect(m_pushButtonTextShrink, SIGNAL(clicked(bool)),
			this, SLOT(TextShrink_ButtonClick(bool)));
	connect(m_pushButtonTextEnlarge, SIGNAL(clicked(bool)),
			this, SLOT(TextEnlarge_ButtonClick(bool)));
	connect(m_listWidgetFunc, SIGNAL(itemPressed(QListWidgetItem *)),
			this, SLOT(funcItemSelected(QListWidgetItem *)));
	connect(m_comboBoxFuncListSort, SIGNAL(currentIndexChanged(int)),
			this, SLOT(FuncListSort_indexChanged(int)));
	m_fileDataList.clear();
	clearTextEdit();
	setLexer();
}

void fileviewer::clearList()
{
	//printf("Fileview clearlist\n");
	m_pushButtonPaste->setEnabled(false);
	m_pushButtonPrev->setEnabled(false);
	m_pushButtonNext->setEnabled(false);
	m_pushButtonTextShrink->setEnabled(false);
	m_pushButtonTextEnlarge->setEnabled(false);
	m_pushButtonGoToLine->setEnabled(false);
	m_pushButtonOpenInEditor->setEnabled(false);
	m_labelFilePath->clear();
	clearTextEdit();
	m_fileDataList.clear();
	m_iter = m_fileDataList.begin();
	m_timestampMismatchWarned = false;
	m_listWidgetFunc->clear();
}

void fileviewer::recvDBtimestamp(QDateTime dt)
{
	m_DBtimestamp = dt;
}

void fileviewer::fileToBeOpened(QString filename, QString linenum, int fileid)
{
	filename.replace(QString("$HOME"), QDir::homePath());
#ifdef _WIN32
	filename.replace("/", "\\");
#endif
	if (!(QFile::exists(filename)))
	{
		setFilePathLabelText(tr("File not found"));
		handleFileCannotBeOpenedCase();
		return;
	}
	QFile file(filename);
	if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
	{
		setFilePathLabelText(tr("File could not be opened"));
		handleFileCannotBeOpenedCase();
		return;
	}
	file.close();

	QFileInfo fi(filename);
	if ((m_DBtimestamp < fi.lastModified())&&(m_timestampMismatchWarned == false))
	{
		
		m_timestampMismatchWarned = true;
		QMessageBox msgBox((QWidget*)mw);
		msgBox.setIcon(QMessageBox::Warning);
		msgBox.setStandardButtons(QMessageBox::Ok);
		msgBox.setText(tr("The source file to be viewed is newer than the CodeQuery database file. You are recommended to manually regenerate the CodeQuery database file."));
		msgBox.exec();
	}
	filedata fd(filename, linenum, fileid);
	if (m_fileDataList.isEmpty())
	{
		//printf("Fileviewer: empty list\n");
		m_fileDataList.push_back(fd);
		m_iter = m_fileDataList.end() - 1;
		m_pushButtonPrev->setEnabled(false);
		m_pushButtonNext->setEnabled(false);
		updateTextEdit();
		return;
	}
	else if (m_iter == m_fileDataList.end())
	{
		// previous file not found
		//printf("Fileviewer: previous file not found %d, %d\n", m_fileDataList.end(), m_fileDataList.end() - 1);
		m_fileDataList.push_back(fd);
		m_iter = m_fileDataList.end() - 1;
		m_pushButtonPrev->setEnabled(m_iter != m_fileDataList.begin());
		m_pushButtonNext->setEnabled(false);
		updateTextEdit();		
	}
	else if (m_iter->compare(fd))
	{
		// the same filename and line number
		//printf("Fileviewer: same filename and line number\n");
		updateFilePathLabel();
		return;
	}
	else if (m_iter->compareFilePathOnly(fd))
	{
		// same file, different line number
		//printf("Fileviewer: same file, different line number\n");
		m_fileDataList.push_back(fd);
		m_iter = m_fileDataList.end() - 1;
		m_pushButtonPrev->setEnabled(true);
		m_pushButtonNext->setEnabled(false);
		highlightLine(fd.linenum.toInt());
		updateFilePathLabel();
	}
	else
	{
		// different file
		//printf("Fileviewer: different file\n");
		m_fileDataList.push_back(fd);
		m_iter = m_fileDataList.end() - 1;
		m_pushButtonPrev->setEnabled(true);
		m_pushButtonNext->setEnabled(false);
		updateTextEdit();
	}
	if ((m_fileDataList.isEmpty())||(m_iter == m_fileDataList.end())) return;
	QVector<filedata>::iterator it = m_fileDataList.begin();
	while ((it != m_fileDataList.end() - 1)&&(it != m_fileDataList.end()))
	{
		if (it->compare(fd)) it = m_fileDataList.erase(it);
		else it++;
	}
	if (m_fileDataList.size() > 20) m_fileDataList.erase(m_fileDataList.begin());
	m_iter = m_fileDataList.end() - 1;
}

void fileviewer::clearTextEdit(void)
{
	m_textEditSource->setReadOnly(false);
	m_textEditSource->clearAll();
	m_textEditSource->setReadOnly(true);
}

void fileviewer::updateTextEdit(void)
{
	if (m_iter == m_fileDataList.end()) return;
	QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
	clearTextEdit();

	QFile file(m_iter->filename);
	if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
	{
		QApplication::restoreOverrideCursor();
		return;
	}
	QTextStream in(&file);

	int lang = enHighlightCPP; // default

	QRegularExpression rx1("\\.py$", QRegularExpression::CaseInsensitiveOption);
	auto pos = rx1.match(m_iter->filename);
	if (pos.hasMatch()) lang = enHighlightPython;

	QRegularExpression rx2("\\.java$", QRegularExpression::CaseInsensitiveOption);
	pos = rx2.match(m_iter->filename);
	if (pos.hasMatch()) lang = enHighlightJava;

	QRegularExpression rx3("\\.rb$", QRegularExpression::CaseInsensitiveOption);
	pos = rx3.match(m_iter->filename);
	if (pos.hasMatch()) lang = enHighlightRuby;

	QRegularExpression rx4("\\.js$", QRegularExpression::CaseInsensitiveOption);
	pos = rx4.match(m_iter->filename);
	if (pos.hasMatch()) lang = enHighlightJavascript;

	QRegularExpression rx5("\\.go$", QRegularExpression::CaseInsensitiveOption);
	pos = rx5.match(m_iter->filename);
	if (pos.hasMatch()) lang = enHighlightGo;

	m_currentlang = lang;

	QString alltext;
	while (!in.atEnd())
	{
		alltext = in.readAll();
	}
	m_textEditSource->setReadOnly(false);
	m_textEditSource->setText(alltext.toUtf8().data());
	m_textEditSource->setReadOnly(true);
	m_textEditSource->setMarginWidthN(0,  m_textEditSource->textWidth(STYLE_LINENUMBER, QString::number(m_textEditSource->lineCount() * 10).C_STR()));
	highlightLine(m_iter->linenum.toInt());
	updateFilePathLabel();
	m_pushButtonGoToLine->setEnabled(true);
	m_pushButtonOpenInEditor->setEnabled(true);
	m_pushButtonTextShrink->setEnabled(true);
	m_pushButtonTextEnlarge->setEnabled(true);
	m_listWidgetFunc->clear();
	if (m_iter->fileid < 0)	{emit requestFuncList_filename(m_iter->filename);}
	else {emit requestFuncList_fileid(m_iter->fileid);}
	setLexer(lang);
	QApplication::restoreOverrideCursor();
}

void fileviewer::updateFilePathLabel(void)
{
	QString labeltext = m_iter->filename;
	labeltext += ":";
	labeltext += m_iter->linenum;
	setFilePathLabelText(labeltext);
	m_pushButtonGoToLine->setEnabled(true);
}

void fileviewer::setFilePathLabelText(QString text)
{
	m_filepathlabeltextfull = text.simplified();
	filePathLabelTextResized();
	repaintWidget();
}

void fileviewer::filePathLabelTextResized()
{
	QFontMetrics metrics(m_labelFilePath->font());
	QString elidedText = metrics.elidedText(m_filepathlabeltextfull, Qt::ElideLeft, m_labelFilePath->width());
	m_labelFilePath->setText(elidedText);
}

void fileviewer::repaintWidget()
{
	QPalette palette = m_labelFilePath->palette();
	palette.setColor(QPalette::Base, palette.color(QPalette::Window));
	m_labelFilePath->setPalette(palette);
}

void fileviewer::braceMatchCheck(void)
{
	long cpos, matchpos;
	cpos     = m_textEditSource->currentPos();
	matchpos = m_textEditSource->braceMatch(cpos, 0);
	if (matchpos == -1)
	{
		cpos--;
		matchpos = m_textEditSource->braceMatch(cpos, 0);
	}
	if (matchpos != -1) m_textEditSource->braceHighlight(cpos, matchpos);
	else m_textEditSource->braceHighlight(-1, -1);
}

void fileviewer::updateFuncList(void)
{
	if (m_funclist.resultlist.empty()) return;
	long line = m_textEditSource->lineFromPosition(m_textEditSource->currentPos()) + 1;
	tStr selectedfunc = "";
	unsigned int selectedline, line1;
	auto previt = m_funclist.resultlist.begin();
	for (auto it = m_funclist.resultlist.begin(); it != m_funclist.resultlist.end(); it++)
	{
		if ( (line < it->intLinenum) && (line >= previt->intLinenum) )
		{
			selectedfunc = previt->symname;
			selectedline = previt->intLinenum;
			break;
		}
		previt = it;
	}
	if (selectedfunc.isEmpty() == false)
	{
		auto itemlist = m_listWidgetFunc->findItems(selectedfunc, Qt::MatchExactly);
		for (auto it = itemlist.begin(); it != itemlist.end(); it++)
		{
			line1 = (*it)->data(Qt::UserRole).toUInt();
			if (selectedline == line1)
			{
				m_listWidgetFunc->setCurrentItem(*it);
				break;
			}
		}
	}
}

void fileviewer::AbleToCopy(bool copy)
{
	m_pushButtonPaste->setEnabled(copy);
	m_textEditSource->annotationClearAll();
	braceMatchCheck();
	updateFuncList();
	if (copy)
	{
		m_textEditSource->copy();
		m_annotline = m_textEditSource->lineFromPosition(m_textEditSource->selectionEnd());
		QString str = (QApplication::clipboard())->text();
		if (str.length() > 0)
		{
			emit requestAnnotation(str);
		}
	}
}

void fileviewer::GoToLine_ButtonClick(bool checked)
{
	if (!checked) highlightLine(m_iter->linenum.toInt());
}

void fileviewer::Prev_ButtonClick(bool checked)
{
	if (m_fileDataList.isEmpty())
	{
		m_pushButtonPrev->setEnabled(false);
		m_pushButtonNext->setEnabled(false);
		return;
	}
	if(m_iter == m_fileDataList.begin())
	{
		m_pushButtonPrev->setEnabled(false);
		return;
	}
	if (!checked)
	{
		QVector<filedata>::iterator it = m_iter;
		m_iter--;
		if ((it != m_fileDataList.end())&&(m_iter->compareFilePathOnly(*it)))
		{
			highlightLine(m_iter->linenum.toInt());
			updateFilePathLabel();			
		}
		else
		{
			updateTextEdit();
		}
		m_pushButtonPrev->setEnabled(m_iter != m_fileDataList.begin());
		m_pushButtonNext->setEnabled(m_iter != m_fileDataList.end() - 1);
	}
}

void fileviewer::Next_ButtonClick(bool checked)
{
	if (m_fileDataList.isEmpty())
	{
		m_pushButtonPrev->setEnabled(false);
		m_pushButtonNext->setEnabled(false);
		return;
	}
	if((m_iter == m_fileDataList.end() - 1)||
		(m_iter == m_fileDataList.end()))
	{
		m_pushButtonNext->setEnabled(false);
		return;
	}
	if (!checked)
	{
		QVector<filedata>::iterator it = m_iter;
		m_iter++;
		if (m_iter->compareFilePathOnly(*it))
		{
			highlightLine(m_iter->linenum.toInt());
			updateFilePathLabel();			
		}
		else
		{
			updateTextEdit();
		}
		m_pushButtonPrev->setEnabled(m_iter != m_fileDataList.begin());
		m_pushButtonNext->setEnabled(m_iter != m_fileDataList.end() - 1);
	}
}

void fileviewer::handleFileCannotBeOpenedCase(void)
{
	//printf("handleFileCannotBeOpenedCase\n");
	clearTextEdit();
	m_pushButtonTextShrink->setEnabled(false);
	m_pushButtonTextEnlarge->setEnabled(false);
	m_pushButtonGoToLine->setEnabled(false);	
	m_pushButtonNext->setEnabled(false);
	m_pushButtonPrev->setEnabled(m_fileDataList.isEmpty() == false);
	m_iter = m_fileDataList.end();
}


void fileviewer::Paste_ButtonClick(bool checked)
{
	if (!checked)
	{
		m_textEditSource->copy();
		if (m_checkBoxSymbolOnly->isChecked())
			emit searchCopiedTextSymbolOnly();
		else emit searchCopiedText();
	}
}

void fileviewer::fileViewSettings_Triggered(bool checked)
{
	cqDialogFileViewSettings cqdg((QWidget*)mw, this,
		m_fontlist, themes::getThemesList());
	m_fonttemp = m_textEditSourceFont.family();
	m_fontwidthtemp = (m_textEditSource->tabWidth());
	m_themetemp = m_theme;
	cqdg.setCurrentFontType(m_fonttemp);
	cqdg.setTabWidth(m_fontwidthtemp);
	cqdg.setCurrentTheme(m_themetemp);
	cqdg.setModal(true);
	cqdg.exec();
	if (cqdg.result() == QDialog::Accepted)
	{
		m_textEditSourceFont.setFamily(m_fonttemp);
		m_textEditSource->setTabWidth(m_fontwidthtemp);
		m_textEditSource->setZoom(m_fontsize);
		m_theme = m_themetemp;
		m_themelast = "1234";
		setLexer();
	}
}

void fileviewer::OptionsExtEditor_Triggered(bool checked)
{
	bool ok;
	QString inptext;
	QInputDialog qinp(mw);
	qinp.setCancelButtonText(tr("Cancel"));
	qinp.setOkButtonText(tr("OK"));
	qinp.setInputMode(QInputDialog::TextInput);
	qinp.setWindowTitle(tr("External Editor Configuration"));
	QString exted = tr("Please enter the path and arguments for the external editor. Replace as follows:");
	exted += "\n%f - ";
	exted += tr("for file path");
	exted += "\n%n - ";
	exted += tr("for line number");
	exted += "\n";
	exted += tr("For example:");
#ifdef _WIN32
	exted += "\n\"C:\\Program Files\\Notepad++\\notepad++.exe\" -n%n %f";
#else
	exted += "\ngedit %f +%n";
#endif
	qinp.setLabelText(exted);
	qinp.setTextEchoMode(QLineEdit::Normal);
	qinp.setTextValue(m_externalEditorPath);
	qinp.exec();
	ok = (qinp.result() == QDialog::Accepted);
	inptext = qinp.textValue();
	if (ok && (inptext.isEmpty() == false)) m_externalEditorPath = inptext.trimmed();
}

void fileviewer::OpenInEditor_ButtonClick(bool checked)
{
	QMessageBox msgBox(mw);
	msgBox.setIcon(QMessageBox::Warning);
	msgBox.setStandardButtons(QMessageBox::Ok);
	if (!checked)
	{
		QFile file(m_iter->filename);
		if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
		{
			msgBox.setText(tr("File could not be opened!"));
			msgBox.exec();
			return;
		}
		file.close();

		QStringList arguments;
		QString program;
		QRegularExpression rx("^\"([^\"]+)\" (.*)");
		auto pos = rx.match(m_externalEditorPath);
		if (pos.hasMatch())
		{
			program = pos.captured(1);
			arguments = (pos.captured(2)).split(QRegularExpression("[ ]+"));
		}
		else
		{
			arguments = m_externalEditorPath.split(QRegularExpression("[ ]+"));
			program = arguments.takeFirst();
		}
		arguments.replaceInStrings(QRegularExpression("%f"), m_iter->filename);
		arguments.replaceInStrings(QRegularExpression("%n"), m_iter->linenum);

		if (QProcess::startDetached(program, arguments) == false)
		{
			msgBox.setText(tr("External editor could not be started. Please check Options!"));
			msgBox.exec();
			return;
		}
	}
}

void fileviewer::TextShrink_ButtonClick(bool checked)
{
	if (!checked)
	{
		textSizeChange(0-1);
		//m_textEditSource->zoomOut();
	}
}

void fileviewer::TextEnlarge_ButtonClick(bool checked)
{
	if (!checked)
	{
		textSizeChange(1);
		//m_textEditSource->zoomIn();
	}
}

void fileviewer::textSizeChange(int n)
{
	//m_fontwidthtemp = (m_textEditSource->tabWidth());
	m_fontsize += n;
	m_textEditSource->setZoom(m_fontsize);
	m_textEditSource->setMarginWidthN(0,  m_textEditSource->textWidth(STYLE_LINENUMBER, QString::number(m_textEditSource->lineCount() * 10).C_STR()));
	//m_textEditSource->setTabWidth(m_fontwidthtemp);
}

void fileviewer::fontSelectionTemporary(const QString &fonttxt)
{
	m_fonttemp = fonttxt;
}

void fileviewer::themeSelectionTemporary(const QString &themetxt)
{
	m_themetemp = themetxt;
}

void fileviewer::tabWidthSelectionTemporary(const QString &width)
{
	m_fontwidthtemp = width.toInt();
}

void fileviewer::highlightLine(unsigned int num)
{
	m_textEditSource->markerDeleteAll(-1);
	if (num <= 0)
	{
		num = 1;
	}
	else
	{
		num = num - 1; // not sure why it's one off
		m_textEditSource->markerAdd(num, m_markerhandle);
		m_textEditSource->markerAdd(num, m_markerhandle2);
	}
	m_textEditSource->setFirstVisibleLine(num);
	m_currentline = num;
}

void fileviewer::setLexer(int lang)
{
	if (lang == -1) lang = m_currentlang;

	switch(lang)
	{

		case enHighlightCPP:
			replaceLexer(SCLEX_CPP, lang);
			break;

		case enHighlightPython:
			replaceLexer(SCLEX_PYTHON, lang);
			break;

		case enHighlightJava:
			replaceLexer(SCLEX_CPP, lang);
			break;

		case enHighlightRuby:
			replaceLexer(SCLEX_RUBY, lang);
			break;

		case enHighlightJavascript:
			replaceLexer(SCLEX_CPP, lang);
			break;

		default:
			replaceLexer(SCLEX_CPP, lang);
			break;

	}
}

void fileviewer::replaceLexer(int sclang, int lang)
{
	QColor markerlinebgcolor;
	QColor linenumfgcolor;
		switch (lang)
		{
			case enHighlightCPP:
				m_lexer = CreateLexer("cpp");
				break;

			case enHighlightPython:
				m_lexer = CreateLexer("python");
				break;

			case enHighlightJava:
				m_lexer = CreateLexer("cpp");
				break;

			case enHighlightRuby:
				m_lexer = CreateLexer("ruby");
				break;

			case enHighlightJavascript:
				m_lexer = CreateLexer("cpp");
				break;

			default:
				m_lexer = CreateLexer("cpp");
				break;
		}
		m_textEditSource->setILexer((sptr_t)m_lexer);
		m_textEditSource->clearDocumentStyle();
		m_textEditSource->setZoom(m_fontsize);
		m_themelast = "1234";
		m_themelast = m_theme;
		themes::setTheme(m_theme, lang, m_textEditSource, m_textEditSourceFont, markerlinebgcolor, linenumfgcolor);
		m_textEditSource->markerSetBack(m_markerhandle, themes::QC2SC(markerlinebgcolor));
		m_textEditSource->markerSetBack(m_markerhandle2, themes::QC2SC(linenumfgcolor));
		m_textEditSource->markerSetAlpha(m_markerhandle, SC_ALPHA_NOALPHA);
		m_textEditSource->markerSetAlpha(m_markerhandle2, SC_ALPHA_NOALPHA);
		m_textEditSource->styleSetFont(STYLE_LINENUMBER, m_textEditSourceFont.family().C_STR());
		m_textEditSource->setZoom(m_fontsize);
		m_textEditSource->setMarginWidthN(0, m_textEditSource->textWidth(STYLE_LINENUMBER, QString::number(m_textEditSource->lineCount() * 10).C_STR()));
		themes::setKeywords(lang, m_textEditSource);
		m_textEditSource->colourise(0, -1);
}

void fileviewer::annotate(QStringList annotstrLst)
{
	m_textEditSource->copy();
	QString str = (QApplication::clipboard())->text();
	m_annotline = m_textEditSource->lineFromPosition(m_textEditSource->selectionEnd());
	if ((annotstrLst.length() >= 2)&&(annotstrLst[0] == str))
	{
		m_textEditSource->annotationClearAll();
		m_textEditSource->annotationSetText(m_annotline, annotstrLst[1].toUtf8().data());
		m_textEditSource->annotationSetStyle(m_annotline, 29);
	}
	else if (str.length() > 0)
	{
		emit requestAnnotation(str);
	}
}

void fileviewer::recvFuncList(sqlqueryresultlist* reslist)
{
	m_listWidgetFunc->clear();
	if ((m_fileDataList.isEmpty())||(m_iter == m_fileDataList.end())) return;
	m_funclist = *reslist;
	m_funclist.sort_by_linenum();
	for (auto it = m_funclist.resultlist.begin(); it != m_funclist.resultlist.end(); it++)
	{
		it->intLinenum = atoi(it->linenum.C_STR());
	}
	filedata fd(m_funclist.resultlist[0].filename, "1", -99);
	if (m_iter->compareFileNameOnly(fd) == false)
	{
		if (m_iter->fileid < 0)	{emit requestFuncList_filename(m_iter->filename);}
		else {emit requestFuncList_fileid(m_iter->fileid);}
		return;
	}
	sqlqueryresultlist templist = m_funclist;
	if (m_comboBoxFuncListSort->currentIndex() != 0) templist.sort_by_name();
	QListWidgetItem* item;
	for (auto it = templist.resultlist.begin(); it != templist.resultlist.end(); it++)
	{
		item = new QListWidgetItem(it->symname);
		item->setData(Qt::UserRole, QVariant(it->intLinenum));
		m_listWidgetFunc->addItem(item);
	}
}

void fileviewer::funcItemSelected(QListWidgetItem * curitem)
{
	if (curitem == nullptr) return;
	unsigned int num = curitem->data(Qt::UserRole).toUInt();
	m_textEditSource->setFirstVisibleLine(num - 1);
}

void fileviewer::FuncListSort_indexChanged(const int& idx)
{
	recvFuncList(&m_funclist);
}



================================================
FILE: gui/fileviewer.h
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#ifndef FILEVIEWER_H_CQ
#define FILEVIEWER_H_CQ

#include <QtGlobal>
#include <QtWidgets>
#include "sqlquery.h"
Q_DECLARE_METATYPE(sqlqueryresultlist*)


class mainwindow;
class ScintillaEdit;


class filedata
{
	public:
	QString filename;
	QString linenum;
	int fileid;
	
	filedata();
	filedata(const QString& fn, const QString& ln, const int& fi);
	filedata(const filedata& fd);
	bool compare(const filedata& fd);
	bool compareFilePathOnly(const filedata& fd);
	bool compareFileNameOnly(const filedata& fd);
	filedata& operator=(const filedata& fd);
};


enum langtypes
{
	enHighlightNone = 0,
	enHighlightCPP,
	enHighlightPython,
	enHighlightJava,
	enHighlightRuby,
	enHighlightGo,
	enHighlightJavascript
};

class fileviewer : public QObject
{
  Q_OBJECT

public:
QPushButton *m_pushButtonPrev;
QPushButton *m_pushButtonNext;
QPushButton *m_pushButtonOpenInEditor;
QPushButton *m_pushButtonPaste;
QPushButton *m_pushButtonGoToLine;
QPushButton *m_pushButtonTextShrink;
QPushButton *m_pushButtonTextEnlarge;
QCheckBox   *m_checkBoxSymbolOnly;
QLineEdit *m_labelFilePath;
ScintillaEdit *m_textEditSource;
QListWidget *m_listWidgetFunc;
QComboBox *m_comboBoxFuncListSort;
QString m_externalEditorPath;
QFont m_textEditSourceFont;
void *m_lexer;
int m_fontsize;
QString m_theme;

fileviewer(mainwindow* pmw);
~fileviewer();
void init(void);
void updateTextEdit(void);
void updateFilePathLabel(void);
void handleFileCannotBeOpenedCase(void);
QString checkFontFamily(QString fontname);

public slots:
void fileToBeOpened(QString filename, QString linenum, int fileid);
void AbleToCopy(bool copy);
void GoToLine_ButtonClick(bool checked);
void Paste_ButtonClick(bool checked);
void Prev_ButtonClick(bool checked);
void Next_ButtonClick(bool checked);
void OpenInEditor_ButtonClick(bool checked);
void TextShrink_ButtonClick(bool checked);
void TextEnlarge_ButtonClick(bool checked);
void OptionsExtEditor_Triggered(bool checked);
void fileViewSettings_Triggered(bool checked);
void clearList();
void recvDBtimestamp(QDateTime dt);
void fontSelectionTemporary(const QString &fonttxt);
void themeSelectionTemporary(const QString &themetxt);
void tabWidthSelectionTemporary(const QString &width);
void annotate(QStringList annotstrLst);
void recvFuncList(sqlqueryresultlist* reslist);
void funcItemSelected(QListWidgetItem * curitem);
void FuncListSort_indexChanged(const int& idx);
void filePathLabelTextResized();
void repaintWidget();

signals:
void searchCopiedText();
void searchCopiedTextSymbolOnly();
void requestAnnotation(QString searchstr);
void requestFuncList_filename(QString filename);
void requestFuncList_fileid(int fileid);

private:
mainwindow *mw;
QVector<filedata> m_fileDataList;
QVector<filedata>::iterator m_iter;
QDateTime m_DBtimestamp;
bool m_timestampMismatchWarned;
QStringList m_fontlist;
QString m_fonttemp;
QString m_themetemp;
QString m_themelast;
QString m_filepathlabeltextfull;
int m_currentlang;
int m_fontwidthtemp;
int m_markerhandle;
int m_markerhandle2;
long m_currentline;
long m_annotline;
sqlqueryresultlist m_funclist;

void createFontList(void);
void textSizeChange(int n);
void highlightLine(unsigned int num = 0);
void setLexer(int lang = -1);
void replaceLexer(int sclang, int lang);
void clearTextEdit(void);
void braceMatchCheck(void);
void updateFuncList(void);
void setFilePathLabelText(QString text);

};


#endif


================================================
FILE: gui/fileviewsettingsdialog.cpp
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#include "ui_fileViewSettingsDialog.h"
#include "fileviewsettingsdialog.h"
#include "fileviewer.h"
#include <QFontDatabase>

cqDialogFileViewSettings::cqDialogFileViewSettings(QWidget *parent,
		fileviewer* fv, const QStringList& fontlst, const QStringList& themeslst)
:QDialog(parent)
,m_fv(fv)
,dialog_ui(new Ui::fileViewSettingsDialog)
,m_tabwidthvalidator(1,64)
 {
	dialog_ui->setupUi(this);
	dialog_ui->lineEditTabWidth->setValidator(&m_tabwidthvalidator);
        dialog_ui->comboBoxFont->addItems(fontlst);
        dialog_ui->comboBoxTheme->addItems(themeslst);
	connect(dialog_ui->pushButtonOK, SIGNAL(clicked()),
		this, SLOT(accept()));
	connect(dialog_ui->pushButtonCancel, SIGNAL(clicked()),
		this, SLOT(reject()));
	connect(dialog_ui->comboBoxFont, SIGNAL(currentIndexChanged(int)),
		this, SLOT(fontSelectionTemporary(int)));
	connect(dialog_ui->comboBoxTheme, SIGNAL(currentIndexChanged(int)),
		this, SLOT(themeSelectionTemporary(int)));
	connect(dialog_ui->lineEditTabWidth, SIGNAL(textEdited(const QString &)),
			fv, SLOT(tabWidthSelectionTemporary(const QString &)));
	connect(this, SIGNAL(fontSelectionChanged(const QString &)),
		fv, SLOT(fontSelectionTemporary(const QString &)));
	connect(this, SIGNAL(themeSelectionChanged(const QString &)),
		fv, SLOT(themeSelectionTemporary(const QString &)));
	resize(sizeHint());
	layout()->setSizeConstraint(QLayout::SetFixedSize) ;
	setSizeGripEnabled(false) ;
}

cqDialogFileViewSettings::~cqDialogFileViewSettings()
 {
	disconnect();
	delete dialog_ui;
 }

void cqDialogFileViewSettings::setCurrentFontType(const QString& fonttype)
{
	int idx = dialog_ui->comboBoxFont->findText(fonttype, Qt::MatchContains);
	dialog_ui->comboBoxFont->setCurrentIndex(idx);
}

void cqDialogFileViewSettings::setCurrentTheme(const QString& theme)
{
	int idx = dialog_ui->comboBoxTheme->findText(theme, Qt::MatchContains);
	dialog_ui->comboBoxTheme->setCurrentIndex(idx);
}

void cqDialogFileViewSettings::setTabWidth(const int& width)
{
	dialog_ui->lineEditTabWidth->setText(QString::number(width));
}

void cqDialogFileViewSettings::fontSelectionTemporary(int index)
{
	emit fontSelectionChanged(dialog_ui->comboBoxFont->itemText(index));
}

void cqDialogFileViewSettings::themeSelectionTemporary(int index)
{
	emit themeSelectionChanged(dialog_ui->comboBoxTheme->itemText(index));
}



================================================
FILE: gui/fileviewsettingsdialog.h
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#ifndef FILEVIEWSETTINGSDIALOG_H_CQ
#define FILEVIEWSETTINGSDIALOG_H_CQ

#include <QtGlobal>
#include <QtWidgets>

 namespace Ui {
     class fileViewSettingsDialog;
 }

class fileviewer;

class cqDialogFileViewSettings : public QDialog
{
  Q_OBJECT

public:
Ui::fileViewSettingsDialog *dialog_ui;

cqDialogFileViewSettings(QWidget *parent, fileviewer* fv,
const QStringList& fontlst, const QStringList& themeslst);
virtual ~cqDialogFileViewSettings();
void setCurrentFontType(const QString& fonttype);
void setCurrentTheme(const QString& theme);
void setTabWidth(const int& width);

public slots:
void fontSelectionTemporary(int index);
void themeSelectionTemporary(int index);

signals:
void fontSelectionChanged(const QString& str);
void themeSelectionChanged(const QString& str);

private:
QIntValidator m_tabwidthvalidator;
fileviewer* m_fv;

};


#endif //FILEVIEWSETTINGSDIALOG_H_CQ



================================================
FILE: gui/graphdialog.cpp
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#include "ui_graphDialog.h"
#include "graphdialog.h"
#include "showgraph.h"


cqDialogGraph::cqDialogGraph(QWidget *parent)
:QDialog(parent)
,dialog_ui(new Ui::DialogGraph)
,m_scaleFactor(5.0)
 {
	dialog_ui->setupUi(this);
	connect(dialog_ui->pushButtonClose, SIGNAL(clicked()),
		this, SLOT(accept()));
	connect(dialog_ui->pushButtonZoomOut, SIGNAL(clicked()),
		this, SLOT(zoomout()));
	connect(dialog_ui->pushButtonZoomIn, SIGNAL(clicked()),
		this, SLOT(zoomin()));
	connect(dialog_ui->pushButtonSave, SIGNAL(clicked()),
		this, SLOT(savetoimagefile()));
	connect(dialog_ui->pushButtonSaveDot, SIGNAL(clicked()),
		this, SLOT(savetodotfile()));
	connect(dialog_ui->comboBoxNbrOfLevels, SIGNAL(currentIndexChanged(int)),
		this, SLOT(numberOfLevelsChanged(int)));

}

cqDialogGraph::~cqDialogGraph()
 {
	disconnect();
	delete dialog_ui;
 }

void cqDialogGraph::setupGraphFromXML(QStringList& grpxml, QStringList& grpdot, QString& desc)
{
	m_grpxml = grpxml;
	m_grpdot = grpdot;
	m_img = showgraph::convertToImage(grpxml[0]);
	dialog_ui->labelGraph->setPixmap(QPixmap::fromImage(m_img));
#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
	dialog_ui->labelGraph->setMask(dialog_ui->labelGraph->pixmap(Qt::ReturnByValue).mask());
#else
	dialog_ui->labelGraph->setMask(dialog_ui->labelGraph->pixmap()->mask());
#endif
	if (desc.length() > 0) dialog_ui->labelDesc->setText(desc);
	for (unsigned int i=0; i < grpxml.size(); i++) dialog_ui->comboBoxNbrOfLevels->addItem(QString::number(i+1));
	dialog_ui->comboBoxNbrOfLevels->setCurrentIndex(0);
	show();
	adjustScrollBar(dialog_ui->scrollArea->horizontalScrollBar(), m_scaleFactor/5);
	adjustScrollBar(dialog_ui->scrollArea->verticalScrollBar(), m_scaleFactor/5);
}

void cqDialogGraph::numberOfLevelsChanged(int num)
{
	m_img = showgraph::convertToImage(m_grpxml[dialog_ui->comboBoxNbrOfLevels->currentIndex()]);
	dialog_ui->labelGraph->setPixmap(QPixmap::fromImage(m_img));
#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
	dialog_ui->labelGraph->setMask(dialog_ui->labelGraph->pixmap(Qt::ReturnByValue).mask());
#else
	dialog_ui->labelGraph->setMask(dialog_ui->labelGraph->pixmap()->mask());
#endif
	adjustScrollBar(dialog_ui->scrollArea->horizontalScrollBar(), m_scaleFactor/5);
	adjustScrollBar(dialog_ui->scrollArea->verticalScrollBar(), m_scaleFactor/5);
}

void cqDialogGraph::zoomout()
{
     scaleImage(-1);
}

void cqDialogGraph::zoomin()
{
     scaleImage(1);
}

void cqDialogGraph::savetoimagefile()
{
	QString filetype = tr("Images");
	filetype += " (*.png *.jpg *.bmp *.tiff)";
	QString fileName =
	QFileDialog::getSaveFileName( this, tr("Export Image"),
					QDir::currentPath(),
					filetype);
	if (fileName.isEmpty()) return;

	QMessageBox msgBox(this);
	msgBox.setIcon(QMessageBox::Warning);
	msgBox.setStandardButtons(QMessageBox::Ok);
	QImageWriter writer( fileName);
	if ((writer.canWrite() && writer.write(m_img)) == false)
	{
		msgBox.setText(tr("File could not be saved!"));
		msgBox.exec();
	}
}

void cqDialogGraph::savetodotfile()
{
	QString fileName =
	QFileDialog::getSaveFileName( this, tr("Export DOT file"),
					QDir::currentPath(),
					"Graphviz DOT (*.dot)");
	if (fileName.isEmpty()) return;

	QFile outfile(fileName);
	QMessageBox msgBox(this);
	msgBox.setIcon(QMessageBox::Warning);
	msgBox.setStandardButtons(QMessageBox::Ok);
	if (outfile.open(QIODevice::WriteOnly | QIODevice::Text) == false)
	{
		msgBox.setText(tr("File could not be saved!"));
		msgBox.exec();
		return;
	}
	QTextStream out(&outfile);
	out << m_grpdot[dialog_ui->comboBoxNbrOfLevels->currentIndex()];
	outfile.close();
}

void cqDialogGraph::scaleImage(double factor)
{
     QPixmap p = QPixmap::fromImage(m_img);
     m_scaleFactor += factor;
     m_scaleFactor = (m_scaleFactor < 1.0) ? 1.0 : m_scaleFactor;
     dialog_ui->labelGraph->setPixmap(p.scaled((m_scaleFactor/5) * p.size(), Qt::KeepAspectRatio));
     adjustScrollBar(dialog_ui->scrollArea->horizontalScrollBar(), m_scaleFactor/5);
     adjustScrollBar(dialog_ui->scrollArea->verticalScrollBar(), m_scaleFactor/5);
}

void cqDialogGraph::adjustScrollBar(QScrollBar *scrollBar, double factor)
{
	int minim = scrollBar->minimum();
	scrollBar->setValue((scrollBar->maximum() - minim)/2 + minim);
}



================================================
FILE: gui/graphdialog.h
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#ifndef GRAPHDIALOG_H_CQ
#define GRAPHDIALOG_H_CQ

#include <QtGlobal>
#include <QtWidgets>

 namespace Ui {
     class DialogGraph;
 }

class cqDialogGraph : public QDialog
{
  Q_OBJECT

public:
Ui::DialogGraph *dialog_ui;
cqDialogGraph(QWidget *parent);
virtual ~cqDialogGraph();
void setupGraphFromXML(QStringList& grpxml, QStringList& grpdot, QString& desc);
void scaleImage(double factor);
void adjustScrollBar(QScrollBar *scrollBar, double factor);

public slots:
void zoomout();
void zoomin();
void savetoimagefile();
void savetodotfile();
void numberOfLevelsChanged(int num);

private:
double m_scaleFactor;
QImage m_img;
QString m_dot;
QStringList m_grpxml;
QStringList m_grpdot;

};


#endif //GRAPHDIALOG_H_CQ




================================================
FILE: gui/images/axialisReadMe.txt
================================================
Free Icons by Axialis Software 
http://www.axialis.com 

Here is a library of icons that you can freely use in your projects. All 
the icons are licensed under the Creative Commons Attribution License 
(http://creativecommons.org/licenses/by/2.5/). It means that you can use 
them in any project or website, commercially or not. 

The icons have been created by Axialis IconWorkshop, the professional
icon authoring tool for Windows. For more info visit this page:
http://www.axialis.com/iconworkshop

TERMS OF USE
The only restrictions are: (a) you must keep the credits of the authors: 
"Axialis Team", even if you modify them; (b) link to us if you use them 
on your website (see below). 

LINK TO US
If you use the icons in your website, you must add the following link on 
EACH PAGE containing the icons (at the bottom of the page for example). 
The HTML code for this link is:

  <a href="http://www.axialis.com/free/icons">Icons</a> by <a href="http://www.axialis.com">Axialis Team</a>
 

 




================================================
FILE: gui/langtable.cpp
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#include <QString>
#include <QStringList>

#include "small_lib.h"
#include "langtable.h"

#define BASE_LANG_PATH ":/trans/"


typedef struct
{
	const char* langName;
	const char* langFile;
}langTableType;

static const langTableType langTable[]=
{
#include "tslist.txt"
};

QStringList langtable::getLangNameList(void)
{
	QStringList lst;
	for(int i=0; i<DIM(langTable); i++)
	{
		lst << QString::fromLatin1(langTable[i].langName);
	}
	lst.sort();
	return lst;
}

QString langtable::getLangFilePath(const QString& lang)
{
	QString langfp = BASE_LANG_PATH;
	QString langfn = "codequery_en";
	for (int i=0; i<DIM(langTable); i++)
	{
		if (lang.compare(QString::fromLatin1(langTable[i].langName)) == 0)
		{
			langfn = langTable[i].langFile;
			break;
		}
	}
	langfp += langfn;
	return langfp;
}




================================================
FILE: gui/langtable.h
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#ifndef LANGTABLE_H_CQ
#define LANGTABLE_H_CQ

// Forward declarations
class QString;
//class QStringList;

class langtable
{

public:
static QStringList getLangNameList(void);
static QString getLangFilePath(const QString& lang);

};

#endif // LANGTABLE_H_CQ



================================================
FILE: gui/listhandler.cpp
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#include "listhandler.h"

listhandler::listhandler(mainwindow* pmw)
:mw(pmw)
,m_treeWidgetSearchResults(NULL)
,m_pushButtonUp(NULL)
,m_pushButtonDown(NULL)
,m_noclick(false)
{
}

listhandler::~listhandler()
{
	disconnect();
}

void listhandler::prepareToExit(void)
{
	disconnect();
	m_noclick = true;
	m_treeWidgetSearchResults->clear();
	m_sqlist.resultlist.clear();
}

void listhandler::init(void)
{
	connect(m_treeWidgetSearchResults, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)),
			this, SLOT(listItemClicked(QTreeWidgetItem *, QTreeWidgetItem *)));
	connect(m_pushButtonUp, SIGNAL(clicked(bool)),
			this, SLOT(Up_ButtonClick(bool)));
	connect(m_pushButtonDown, SIGNAL(clicked(bool)),
			this, SLOT(Down_ButtonClick(bool)));
	m_pushButtonUp->setEnabled(false);
	m_pushButtonDown->setEnabled(false);
	m_treeWidgetSearchResults->setSelectionMode(QAbstractItemView::SingleSelection);
	m_sqlist.resultlist.clear();
	m_sqlist.result_type = sqlqueryresultlist::sqlresultFULL;
	m_noclick = true;
	updateListHeaders();
	m_noclick = false;
	m_sqlist.result_type = sqlqueryresultlist::sqlresultERROR;
}

void listhandler::populateList(sqlqueryresultlist resultlist, int selectitem)
{
	bool headersChanged = (m_sqlist.result_type != resultlist.result_type);
	m_sqlist = resultlist;
	m_noclick = true;
	QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
	clearList();
	if (headersChanged) updateListHeaders();
	updateList();
	resizeColumns();
	QApplication::restoreOverrideCursor();
	m_noclick = false;
	m_treeWidgetSearchResults->setCurrentItem(m_treeWidgetSearchResults->topLevelItem(selectitem));
	emit listRowNumUpdated(selectitem);
}

void listhandler::listItemClicked(QTreeWidgetItem * current, QTreeWidgetItem * previous)
{
	if (current == NULL) return;
	if (m_noclick) return;
	checkUpDown();
	emit listRowNumUpdated(m_treeWidgetSearchResults->indexOfTopLevelItem(current));
	emit openFile(m_sqlist.resultlist[current->data(0,Qt::UserRole).toLongLong()].filepath,
			m_sqlist.resultlist[current->data(0,Qt::UserRole).toLongLong()].linenum,
			m_sqlist.resultlist[current->data(0,Qt::UserRole).toLongLong()].fileid);
}

void listhandler::requestToProvideResultCurrentListItemSymbolName()
{
	QString symName("");
	if (m_treeWidgetSearchResults->topLevelItemCount() > 0)
	{
		QTreeWidgetItem* current = m_treeWidgetSearchResults->currentItem();
		symName = m_sqlist.resultlist[current->data(0,Qt::UserRole).toLongLong()].symname;
	}
	emit sendResultCurrentListItemSymbolName(symName);
}

void listhandler::updateList(void)
{
	if (m_sqlist.resultlist.empty()) return;
	qlonglong i = 0;
	int col;
	QList<QTreeWidgetItem*> treeitemlist;
	treeitemlist.reserve(m_sqlist.resultlist.size());
	for(std::vector<sqlqueryresult>::iterator it = m_sqlist.resultlist.begin();
		it != m_sqlist.resultlist.end(); it++)
	{
		col = 0;
		treeitemlist += new QTreeWidgetItem(m_treeWidgetSearchResults);
		if (m_sqlist.result_type == sqlqueryresultlist::sqlresultFULL)
			treeitemlist.last()->setText(col++, it->symname);
		treeitemlist.last()->setText(col++, it->filename);
		if ((m_sqlist.result_type == sqlqueryresultlist::sqlresultFULL)||
			(m_sqlist.result_type == sqlqueryresultlist::sqlresultFILE_LINE))
		{
			treeitemlist.last()->setText(col++, it->linenum);
			treeitemlist.last()->setText(col++, it->linetext);
		}
		treeitemlist.last()->setData(0, Qt::UserRole, QVariant(i++));
	}
	m_treeWidgetSearchResults->addTopLevelItems(treeitemlist);
}

void listhandler::updateListHeaders(void)
{
	QStringList headers;
	if (m_sqlist.result_type == sqlqueryresultlist::sqlresultFULL)
		headers += tr("Symbol");
	headers += tr("File");
	if ((m_sqlist.result_type == sqlqueryresultlist::sqlresultFULL)||
		(m_sqlist.result_type == sqlqueryresultlist::sqlresultFILE_LINE))
		headers << tr("Line") << tr("Preview");
	m_treeWidgetSearchResults->setHeaderLabels(headers);
	if (m_sqlist.result_type == sqlqueryresultlist::sqlresultFULL)
		{
			m_treeWidgetSearchResults->setColumnCount(4);
		}
	else if (m_sqlist.result_type == sqlqueryresultlist::sqlresultFILE_LINE)
		{
			m_treeWidgetSearchResults->setColumnCount(3);
		}
	else if (m_sqlist.result_type == sqlqueryresultlist::sqlresultFILE_ONLY)
		{
			m_treeWidgetSearchResults->setColumnCount(1);
		}
}

void listhandler::resizeColumns(void)
{
	int n = m_treeWidgetSearchResults->columnCount();
	if (n > 1) n--;
	for(int i=0; i < n; i++)
		{m_treeWidgetSearchResults->resizeColumnToContents(i);}
}

void listhandler::clearList()
{
	bool noclick = m_noclick;
	m_pushButtonUp->setEnabled(false);
	m_pushButtonDown->setEnabled(false);
	m_noclick = true;
	m_treeWidgetSearchResults->clear();
	m_noclick = noclick;
}

void listhandler::retranslateUi(void)
{
	m_noclick = true;
	if (m_treeWidgetSearchResults->topLevelItemCount() <= 0)
	{
		m_sqlist.result_type = sqlqueryresultlist::sqlresultFULL;
		updateListHeaders();
		m_noclick = false;
	}
	else
	{
		int curItemIdx = m_treeWidgetSearchResults->indexOfTopLevelItem(m_treeWidgetSearchResults->currentItem());
		clearList();
		updateListHeaders();
		updateList();
		resizeColumns();
		m_treeWidgetSearchResults->setCurrentItem(m_treeWidgetSearchResults->topLevelItem(curItemIdx));
		m_noclick = false;
		listItemClicked(m_treeWidgetSearchResults->topLevelItem(curItemIdx), NULL);
	}
}

void listhandler::Up_ButtonClick(bool checked)
{
	QTreeWidgetItem *item = NULL;
	tStr curFilepath;
	tStr itemFilepath;
	if ((!checked)&&(m_treeWidgetSearchResults->topLevelItemCount() > 0))
	{
		item = m_treeWidgetSearchResults->currentItem();
		if (item != NULL)
			curFilepath = m_sqlist.resultlist[item->data(0,Qt::UserRole).toLongLong()].filepath;
		while (item != NULL)
		{
			item = m_treeWidgetSearchResults->itemAbove(item);
			if (item == NULL) break;
			itemFilepath = m_sqlist.resultlist[item->data(0,Qt::UserRole).toLongLong()].filepath;
			if (strrevcmp(curFilepath, itemFilepath))
			{
				m_treeWidgetSearchResults->setCurrentItem(item);
				break;
			}
		}
	}
}

void listhandler::Down_ButtonClick(bool checked)
{
	QTreeWidgetItem *item = NULL;
	tStr curFilepath;
	tStr itemFilepath;
	if ((!checked)&&(m_treeWidgetSearchResults->topLevelItemCount() > 0))
	{
		item = m_treeWidgetSearchResults->currentItem();
		if (item != NULL)
			curFilepath = m_sqlist.resultlist[item->data(0,Qt::UserRole).toLongLong()].filepath;
		while (item != NULL)
		{
			item = m_treeWidgetSearchResults->itemBelow(item);
			if (item == NULL) break;
			itemFilepath = m_sqlist.resultlist[item->data(0,Qt::UserRole).toLongLong()].filepath;
			if (strrevcmp(curFilepath, itemFilepath))
			{
				m_treeWidgetSearchResults->setCurrentItem(item);
				break;
			}
		}
	}
}

void listhandler::checkUpDown(void)
{
	QTreeWidgetItem *item = NULL;
	QTreeWidgetItem *curItem = NULL;
	tStr curFilepath, itemFilepath;
	bool upArrow=false, downArrow=false;
	if (m_treeWidgetSearchResults->topLevelItemCount() <= 0) return;
	item = m_treeWidgetSearchResults->currentItem();
	curItem = item;
	if (item != NULL)
		curFilepath = m_sqlist.resultlist[item->data(0,Qt::UserRole).toLongLong()].filepath;

	while (item != NULL)
	{
		item = m_treeWidgetSearchResults->itemAbove(item);
		if (item == NULL) break;
		itemFilepath = m_sqlist.resultlist[item->data(0,Qt::UserRole).toLongLong()].filepath;
		if (strrevcmp(curFilepath, itemFilepath))
		{
			upArrow = true;
			break;
		}

		// for now, assume items with same file path are grouped together
		// This is to speed up the search
		else break;
	}

	item = curItem;
	while (item != NULL)
	{
		item = m_treeWidgetSearchResults->itemBelow(item);
		if (item == NULL) break;
		itemFilepath = m_sqlist.resultlist[item->data(0,Qt::UserRole).toLongLong()].filepath;
		if (strrevcmp(curFilepath, itemFilepath))
		{
			downArrow = true;
			break;
		}

		// for now, assume items with same file path are grouped together
		// This is to speed up the search
		else break;
	}

	m_pushButtonUp->setEnabled(upArrow);
	m_pushButtonDown->setEnabled(downArrow);
}



================================================
FILE: gui/listhandler.h
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#ifndef LISTHANDLER_H_CQ
#define LISTHANDLER_H_CQ

#include <QtGlobal>
#include <QtWidgets>

#include "sqlquery.h"

class mainwindow;

class listhandler : public QObject
{
  Q_OBJECT

public:
QTreeWidget *m_treeWidgetSearchResults;
QPushButton *m_pushButtonUp;
QPushButton *m_pushButtonDown;

listhandler(mainwindow* pmw);
~listhandler();
void init(void);
void updateList(void);
void prepareToExit(void);
void updateListHeaders(void);
void resizeColumns(void);
void retranslateUi(void);
void checkUpDown(void);

public slots:
void populateList(sqlqueryresultlist resultlist, int selectitem);
void listItemClicked(QTreeWidgetItem * current, QTreeWidgetItem * previous);
void clearList();
void requestToProvideResultCurrentListItemSymbolName();
void Up_ButtonClick(bool checked);
void Down_ButtonClick(bool checked);

signals:
void openFile(QString file, QString linenum, int fileid);
void listRowNumUpdated(int row);
void sendResultCurrentListItemSymbolName(const QString symName);

private:
mainwindow *mw;
sqlqueryresultlist m_sqlist;
bool m_noclick;

};


#endif



================================================
FILE: gui/main_gui.cpp
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#ifdef _WIN32
#include <windows.h>
#endif

#include "mainwindow.h"


int main(int argc, char *argv[])
{
	QApplication app(argc, argv);
	QMainWindow *wndw = new QMainWindow;

/*
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
#if defined(__unix__) || defined(__linux__)
	app.setAttribute(Qt::AA_DontUseNativeDialogs, true);
#endif
#endif
*/

	mainwindow mw(wndw, &app);

	mw.show();

#ifdef _WIN32
	ShowWindow( (HWND) mw.winId(), SW_HIDE);
	SetWindowLongPtr( (HWND) mw.winId(), GWL_EXSTYLE, 
			GetWindowLongPtr( (HWND) mw.winId(), GWL_EXSTYLE) | WS_EX_APPWINDOW);
	ShowWindow( (HWND) mw.winId(), SW_SHOW);
#endif

	return app.exec();
}


================================================
FILE: gui/mainwindow.cpp
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#include "mainwindow.h"
#include "ui_mainWindow.h"
#include "fileviewer.h"
#include "listhandler.h"
#include "searchhandler.h"
#include "langtable.h"
#include "aboutdialog.h"
#include "swver.h"

#include <QInputDialog>
#include <QMessageBox>

mainwindow::mainwindow(QMainWindow *parent, QApplication *app)
:QMainWindow(parent)
,m_app(app)
,ui(new Ui::MainWindow)
,m_translator(this)
,m_fileviewer(NULL)
,m_listhandler(NULL)
,m_searchhandler(NULL)
,m_currentLanguage("English")
 {
     ui->setupUi(this);
     init();
 }

mainwindow::~mainwindow()
 {
	disconnect();
	delete m_fileviewer;
	delete m_listhandler;
	delete m_searchhandler;
	delete ui;
 }

void mainwindow::init(void)
{
	m_fileviewer = new fileviewer(this);
	m_listhandler = new listhandler(this);
	m_searchhandler = new searchhandler(this);
	setup_fileviewer();
	setup_listhandler();
	setup_searchhandler();
	connect(m_searchhandler, SIGNAL(searchresults(sqlqueryresultlist, int)),
			m_listhandler, SLOT(populateList(sqlqueryresultlist, int)));
	connect(m_searchhandler, SIGNAL(DBreset()),
			m_fileviewer, SLOT(clearList()));
	connect(m_searchhandler, SIGNAL(sendDBtimestamp(QDateTime)),
			m_fileviewer, SLOT(recvDBtimestamp(QDateTime)));
	connect(m_searchhandler, SIGNAL(DBreset()),
			m_listhandler, SLOT(clearList()));
	connect(m_listhandler, SIGNAL(openFile(QString, QString, int)),
			m_fileviewer, SLOT(fileToBeOpened(QString, QString, int)));
	connect(m_listhandler, SIGNAL(listRowNumUpdated(int)),
			m_searchhandler, SLOT(updateListItemRowNum(int)));
	connect(m_fileviewer, SIGNAL(searchCopiedText()),
			m_searchhandler, SLOT(newSearchText()));
	connect(m_fileviewer, SIGNAL(searchCopiedTextSymbolOnly()),
			m_searchhandler, SLOT(newSearchTextSymbolOnly()));
	connect(m_searchhandler, SIGNAL(updateStatus(const QString&, int)),
			ui->statusbar, SLOT(showMessage(const QString&, int)));
	connect(m_searchhandler, SIGNAL(getResultCurrentListItemSymbolName()),
			m_listhandler, SLOT(requestToProvideResultCurrentListItemSymbolName()));
	connect(m_listhandler, SIGNAL(sendResultCurrentListItemSymbolName(QString)),
			m_searchhandler, SLOT(resultCurrentListItemSymbolName(QString)));
	connect(m_searchhandler, SIGNAL(searchDeclarationResultsReady(QStringList)),
			m_fileviewer, SLOT(annotate(QStringList)));
	connect(m_fileviewer, SIGNAL(requestAnnotation(QString)),
			m_searchhandler, SLOT(searchDeclaration(QString)));
	connect(m_searchhandler, SIGNAL(searchListFuncResultsReady(sqlqueryresultlist*)),
			m_fileviewer, SLOT(recvFuncList(sqlqueryresultlist*)));
	connect(m_fileviewer, SIGNAL(requestFuncList_filename(QString)),
			m_searchhandler, SLOT(searchFuncList_filename(QString)));
	connect(m_fileviewer, SIGNAL(requestFuncList_fileid(int)),
			m_searchhandler, SLOT(searchFuncList_fileid(int)));
	connect(this, SIGNAL(windowResized()),
			m_fileviewer, SLOT(filePathLabelTextResized()));
	connect(this, SIGNAL(windowRepainted()),
			m_fileviewer, SLOT(repaintWidget()));
	connect(ui->actionExit, SIGNAL(triggered(bool)),
			this, SLOT(ExitTriggered(bool)));
	connect(ui->actionAbout, SIGNAL(triggered(bool)),
			this, SLOT(AboutTriggered(bool)));
	connect(ui->actionAbout_Qt, SIGNAL(triggered(bool)),
			this, SLOT(AboutQtTriggered(bool)));
	connect(ui->actionLanguage, SIGNAL(triggered(bool)),
			this, SLOT(LanguageTriggered(bool)));
	connect(ui->actionOpenDB, SIGNAL(triggered(bool)),
			m_searchhandler, SLOT(OpenDB_ButtonClick(bool)));
	connect(ui->actionOptionsExtEditor, SIGNAL(triggered(bool)),
			m_fileviewer, SLOT(OptionsExtEditor_Triggered(bool)));
	connect(ui->actionFileViewSettings, SIGNAL(triggered(bool)),
			m_fileviewer, SLOT(fileViewSettings_Triggered(bool)));
	m_app->setQuitOnLastWindowClosed(false);
//	connect(m_app, SIGNAL(lastWindowClosed()),
//			this, SLOT(prepareToExit()));
	readSettings();
}

void mainwindow::setup_fileviewer(void)
{
	m_fileviewer->m_pushButtonPrev = ui->pushButtonPrev;
	m_fileviewer->m_pushButtonNext = ui->pushButtonNext;
	m_fileviewer->m_pushButtonTextShrink = ui->pushButtonTextShrink;
	m_fileviewer->m_pushButtonTextEnlarge = ui->pushButtonTextEnlarge;
	m_fileviewer->m_pushButtonOpenInEditor = ui->pushButtonOpenInEditor;
	m_fileviewer->m_pushButtonPaste = ui->pushButtonPaste;
	m_fileviewer->m_pushButtonGoToLine = ui->pushButtonGoToLine;
	m_fileviewer->m_labelFilePath = ui->labelFilePath;
	m_fileviewer->m_textEditSource = ui->textEditSource;
	m_fileviewer->m_listWidgetFunc = ui->listWidgetFunc;
	m_fileviewer->m_comboBoxFuncListSort = ui->comboBoxFuncListSort;
	m_fileviewer->m_checkBoxSymbolOnly = ui->checkBoxSymbolOnly;
	m_fileviewer->init();
}

void mainwindow::setup_listhandler(void)
{
	m_listhandler->m_treeWidgetSearchResults = ui->treeWidgetSearchResults;
	m_listhandler->m_pushButtonUp = ui->pushButtonUp;
	m_listhandler->m_pushButtonDown = ui->pushButtonDown;
	m_listhandler->init();
}

void mainwindow::setup_searchhandler(void)
{
	m_searchhandler->m_pushButtonOpenDB = ui->pushButtonOpenDB;
	m_searchhandler->m_comboBoxDB = ui->comboBoxDB;
	m_searchhandler->m_checkBoxAutoComplete = ui->checkBoxAutoComplete;
	m_searchhandler->m_checkBoxExactMatch = ui->checkBoxExactMatch;
	m_searchhandler->m_pushButtonSearch = ui->pushButtonSearch;
	m_searchhandler->m_pushButtonClipSearch = ui->pushButtonClipSearch;
	m_searchhandler->m_comboBoxSearch = ui->comboBoxSearch;
	m_searchhandler->m_comboBoxQueryType = ui->comboBoxQueryType;
	m_searchhandler->m_pushButtonSearchPrev = ui->pushButtonSearchPrev;
	m_searchhandler->m_pushButtonSearchNext = ui->pushButtonSearchNext;
	m_searchhandler->m_pushButtonGraph = ui->pushButtonGraph;
	m_searchhandler->m_pushButtonFilesList = ui->pushButtonFilesList;
	m_searchhandler->m_checkBoxFilter = ui->checkBoxFilter;
	m_searchhandler->m_comboBoxFilter = ui->comboBoxFilter;
	m_searchhandler->init();
}

void mainwindow::LanguageTriggered(bool checked)
{
	QStringList items(langtable::getLangNameList());
	bool ok;
	int curLangIdx = items.indexOf(m_currentLanguage);
	curLangIdx = curLangIdx != -1 ? curLangIdx : 0;

	QInputDialog qinp(this);
	qinp.setCancelButtonText(tr("Cancel"));
	qinp.setOkButtonText(tr("OK"));
	qinp.setInputMode(QInputDialog::TextInput);
	qinp.setWindowTitle(tr("Language"));
	qinp.setLabelText(tr("Select language:"));
	qinp.setComboBoxEditable(false);
	qinp.setComboBoxItems(items);
	qinp.setTextValue(m_currentLanguage);
	qinp.exec();
	ok = (qinp.result() == QDialog::Accepted);
	QString item = qinp.textValue();
	if (ok && (item.isEmpty() == false))
		{
			m_currentLanguage = item;
			retranslateUi();
		}
}

void mainwindow::retranslateUi(void)
{
	QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
	m_translator.load(langtable::getLangFilePath(m_currentLanguage));
	m_app->installTranslator(&m_translator);
	ui->retranslateUi(this);
	QString langtxt = ui->actionLanguage->text();
	if (m_currentLanguage.compare("English") != 0) langtxt += " (Language)";
	ui->actionLanguage->setText(langtxt);
	m_searchhandler->retranslateUi();
	m_listhandler->retranslateUi();
	QApplication::restoreOverrideCursor();
}

void mainwindow::ExitTriggered(bool checked)
{
	close();
}

void mainwindow::AboutQtTriggered(bool checked)
{
	QMessageBox::aboutQt(this);
}

void mainwindow::AboutTriggered(bool checked)
{
	cqDialogAbout cqdg(this);
	cqdg.setModal(true);
	cqdg.exec();
}

void mainwindow::prepareToExit()
{
	writeSettings();
	m_listhandler->prepareToExit();
	m_app->quit();
}

void mainwindow::writeSettings()
{
	QSettings settings("ruben2020_foss", "CodeQuery");

	settings.beginGroup("MainWindow");
	settings.setValue("Size", size());
	settings.setValue("Pos", pos());
	settings.setValue("Maximized", isMaximized());
	settings.setValue("AutoComplete", ui->checkBoxAutoComplete->isChecked());
	settings.setValue("ExactMatch", ui->checkBoxExactMatch->isChecked());
	settings.setValue("SymbolOnly", ui->checkBoxSymbolOnly->isChecked());
	settings.setValue("FilterCheckBox", ui->checkBoxFilter->isChecked());
	settings.setValue("QueryType", ui->comboBoxQueryType->currentIndex());
	settings.setValue("LastOpenDB", ui->comboBoxDB->currentIndex());
	settings.setValue("Language", m_currentLanguage);
	settings.setValue("ExtEditorPath", m_fileviewer->m_externalEditorPath);
	//settings.setValue("FileViewerFontSize", m_fileviewer->m_textEditSourceFont.pixelSize());
	settings.setValue("FileViewerFontSize", m_fileviewer->m_fontsize);
	settings.setValue("FileViewerFontType", m_fileviewer->m_textEditSourceFont.family());
	settings.setValue("FileViewerTabWidth", (int) m_fileviewer->m_textEditSource->tabWidth());
	settings.setValue("FileViewerTheme", m_fileviewer->m_theme);
	settings.setValue("FuncListSortType", ui->comboBoxFuncListSort->currentIndex());
	settings.endGroup();

	settings.beginWriteArray("SearchHistory");
	for (int i=0; i < ui->comboBoxSearch->count(); i++)
	{
		settings.setArrayIndex(i);
		settings.setValue("hist", ui->comboBoxSearch->itemText(i));
	}
	settings.endArray();

	settings.beginWriteArray("OpenDBHistory");
	for (int i=0; i < ui->comboBoxDB->count(); i++)
	{
		settings.setArrayIndex(i);
		settings.setValue("db", ui->comboBoxDB->itemText(i));
	}
	settings.endArray();

	settings.beginWriteArray("FilterHistory");
	for (int i=0; i < ui->comboBoxFilter->count(); i++)
	{
		settings.setArrayIndex(i);
		settings.setValue("filter", ui->comboBoxFilter->itemText(i));
	}
	settings.endArray();

}

void mainwindow::readSettings()
{
	QSettings settings("ruben2020_foss", "CodeQuery");

	int sizee = settings.beginReadArray("OpenDBHistory");
	QStringList dbhist;
	QString ftoopen = checkForFileToOpen();
	if (ftoopen.isEmpty() == false) dbhist << ftoopen;
	for (int i=0; i < sizee; i++)
	{
		settings.setArrayIndex(i);
		dbhist << settings.value("db").toString();
	}
	settings.endArray();
	dbhist.removeDuplicates();
	if (dbhist.count() > 7) dbhist.removeLast();
	if (dbhist.isEmpty() == false) ui->comboBoxDB->addItems(dbhist);

	int sizef = settings.beginReadArray("FilterHistory");
	QStringList filterhist;
	for (int i=0; i < sizef; i++)
	{
		settings.setArrayIndex(i);
		filterhist << settings.value("filter").toString();
	}
	settings.endArray();
	if (filterhist.isEmpty()) filterhist << "*.h" << "*.c" << "src";
	ui->comboBoxFilter->addItems(filterhist);
	ui->comboBoxFilter->setCurrentIndex(0);

	settings.beginGroup("MainWindow");
	resize(settings.value("Size", size()).toSize());
	move(settings.value("Pos", pos()).toPoint());
	if (settings.value("Maximized", false).toBool()) showMaximized();
	else showNormal();
	ui->checkBoxAutoComplete->setChecked(settings.value("AutoComplete", true).toBool());
	ui->checkBoxExactMatch->setChecked(settings.value("ExactMatch", false).toBool());
	ui->checkBoxSymbolOnly->setChecked(settings.value("SymbolOnly", false).toBool());
	ui->checkBoxFilter->setChecked(settings.value("FilterCheckBox", false).toBool());
	ui->comboBoxQueryType->setCurrentIndex(settings.value("QueryType", 0).toInt());
	if (ftoopen.isEmpty() == false) ui->comboBoxDB->setCurrentIndex(0);
	else ui->comboBoxDB->setCurrentIndex(settings.value("LastOpenDB", ui->comboBoxDB->currentIndex()).toInt());
	m_currentLanguage = settings.value("Language", QString("English")).toString();
	retranslateUi();
	m_fileviewer->m_externalEditorPath =
		settings.value("ExtEditorPath", m_fileviewer->m_externalEditorPath).toString();
	//m_fileviewer->m_textEditSourceFont.setPixelSize(settings.value("FileViewerFontSize", 12).toInt());
	m_fileviewer->m_fontsize = settings.value("FileViewerFontSize", 0).toInt();
	m_fileviewer->m_textEditSource->setZoom(m_fileviewer->m_fontsize);
	m_fileviewer->m_textEditSourceFont.setFamily(m_fileviewer->checkFontFamily(
		settings.value("FileViewerFontType", 
			QFontDatabase::systemFont(QFontDatabase::FixedFont).family()).toString()));
	m_fileviewer->m_textEditSource->setFont(m_fileviewer->m_textEditSourceFont);
	m_fileviewer->m_textEditSource->setTabWidth(settings.value("FileViewerTabWidth", 4).toInt());
	m_fileviewer->m_theme = (settings.value("FileViewerTheme", "Eclipse Default").toString());
	ui->comboBoxFuncListSort->setCurrentIndex(settings.value("FuncListSortType", ui->comboBoxFuncListSort->currentIndex()).toInt());

	settings.endGroup();

	int sizeh = settings.beginReadArray("SearchHistory");
	QStringList searchhist;
	for (int i=0; i < sizeh; i++)
	{
		settings.setArrayIndex(i);
		searchhist << settings.value("hist").toString();
	}
	settings.endArray();
	if (searchhist.isEmpty() == false)
	{
		ui->comboBoxSearch->addItems(searchhist);
		ui->comboBoxSearch->setCurrentIndex(-1);
	}

}

QString mainwindow::checkForFileToOpen(void)
{
	QStringList arg = m_app->arguments();
	QString fn;
	if (arg.size() <= 1) return fn;
	if (arg.size() >= 3)
	{
		printHelpAndExit("ERROR: More than 1 argument is not recognized.");
		return fn;
	}
	if ((arg[1] == "--help")||
		(arg[1] == "-h")||
		(arg[1] == "-?")||
		(arg[1] == "/?"))
	{
		printHelpAndExit("");
		return fn;
	}
	QFileInfo qfi(arg[1]);
	if ((qfi.exists() == false) || (qfi.isFile() == false))
	{
		tempbuf buf(3000);
		sprintf(buf.get(), "ERROR: File \"%s\" does not exist!", arg[1].toStdString().c_str());
		printHelpAndExit(buf.get());
		return fn;
	}
	fn = qfi.canonicalFilePath();
	return fn;
}

void mainwindow::printHelpAndExit(QString str)
{
		printf("codequery [path_to_codequery_database_file_to_open]\n");
		printf("The argument is optional.\n");
		if (str.isEmpty() == false) printf("%s\n", str.toStdString().c_str());
		printf("\n");
		m_listhandler->prepareToExit();
		m_app->quit();
		exit(str.isEmpty() ? 0 : 1);
}


void mainwindow::resizeEvent(QResizeEvent* event)
{
	QMainWindow::resizeEvent(event);
	emit windowResized();
}

void mainwindow::paintEvent(QPaintEvent* event)
{
	QMainWindow::paintEvent(event);
	emit windowRepainted();
}

void mainwindow::closeEvent(QCloseEvent* event)
{
	prepareToExit();
}



================================================
FILE: gui/mainwindow.h
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#ifndef MAINWINDOW_H_CQ
#define MAINWINDOW_H_CQ

#include <QtGlobal>
#include <QtWidgets>

 namespace Ui {
     class MainWindow;
 }

class fileviewer;
class listhandler;
class searchhandler;

class mainwindow : public QMainWindow
{
  Q_OBJECT

public:
Ui::MainWindow *ui;
mainwindow(QMainWindow *parent = NULL, QApplication *app = NULL);
virtual ~mainwindow();
void setup_fileviewer(void);
void setup_listhandler(void);
void setup_searchhandler(void);
void retranslateUi(void);
void writeSettings();
void readSettings();

public slots:
void AboutQtTriggered(bool checked);
void AboutTriggered(bool checked);
void ExitTriggered(bool checked);
void LanguageTriggered(bool checked);
void prepareToExit();

signals:
void windowResized();
void windowRepainted();

private:
QApplication *m_app;
fileviewer* m_fileviewer;
listhandler* m_listhandler;
searchhandler* m_searchhandler;
QString m_currentLanguage;
QTranslator m_translator;

void init(void);
QString checkForFileToOpen(void);
void printHelpAndExit(QString str);

protected:
virtual void resizeEvent(QResizeEvent* event);
virtual void paintEvent(QPaintEvent* event);
virtual void closeEvent(QCloseEvent* event);

};

 
 
#endif
 


================================================
FILE: gui/searchhandler.cpp
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#include <QVector>
#include <QPair>
#include "graphdialog.h"
#include "searchhandler.h"
#include <QtConcurrent/QtConcurrent>

sqlquery* searchhandler::sq = NULL;
bool searchhandler::m_grepExactMatch = false;
QRegularExpression* searchhandler::m_grepRegExp = NULL;

searchitem::searchitem()
:exactmatch(false)
,qtype(sqlquery::sqlquerySYMBOL)
,rownum(1)
{
}

searchitem::searchitem(const searchitem& otheritem)
{
	searchterm = otheritem.searchterm;
	filterterm = otheritem.filterterm;
	exactmatch = otheritem.exactmatch;
	qtype = otheritem.qtype;
	rownum = otheritem.rownum;
}

searchitem& searchitem::operator=(const searchitem& otheritem)
{
	if (&otheritem != this)
	{
		searchterm = otheritem.searchterm;
		filterterm = otheritem.filterterm;
		exactmatch = otheritem.exactmatch;
		qtype = otheritem.qtype;
		rownum = otheritem.rownum;
	}
	return *this;
}

// return value: 0=same, 1=completely different, 2=only linenum changed
int searchitem::compare(const searchitem& otheritem)
{
	if ((searchterm.compare(otheritem.searchterm, Qt::CaseSensitive) != 0) ||
		(exactmatch != otheritem.exactmatch) ||
		(qtype != otheritem.qtype) ||
		(filterterm.compare(otheritem.filterterm, Qt::CaseSensitive) != 0)) return 1;
	if (rownum != otheritem.rownum) return 2;
	return 0;
}


searchhandler::searchhandler(mainwindow* pmw)
:mw(pmw)
,m_pushButtonOpenDB(NULL)
,m_comboBoxDB(NULL)
,m_checkBoxAutoComplete(NULL)
,m_checkBoxExactMatch(NULL)
,m_pushButtonSearch(NULL)
,m_comboBoxSearch(NULL)
,m_comboBoxQueryType(NULL)
,m_checkBoxFilter(NULL)
,m_comboBoxFilter(NULL)
,m_srchStrLstModel(QStringList())
,m_typeOfGraph(1)
,m_autocompBusy(false)
,m_declarBusy(false)
,m_funcListBusy(false)
,m_pushButtonClipSearch(NULL)
,m_pushButtonSearchPrev(NULL)
,m_pushButtonSearchNext(NULL)
,m_pushButtonGraph(NULL)
,m_pushButtonFilesList(NULL)
{
	sq = new sqlquery;
	m_completer = new QCompleter(&m_srchStrLstModel, (QWidget*)mw);
	m_grepRegExp = new QRegularExpression();
	m_iter = m_searchMemoryList.begin();
}

searchhandler::~searchhandler()
{
	disconnect();
	delete sq;
	delete m_completer;
	delete m_grepRegExp;
}

void searchhandler::OpenDB_ButtonClick(bool checked)
{
	if (!checked) perform_open_db();
}

void searchhandler::Search_ButtonClick(bool checked)
{
	if (!checked) perform_search(m_comboBoxSearch->lineEdit()->text().trimmed().C_STR(),
					m_checkBoxExactMatch->isChecked());
}

void searchhandler::ClipSearch_ButtonClick(bool checked)
{
	if (!checked) newSearchText();
}

void searchhandler::Graph_ButtonClick(bool checked)
{
	if (!checked)
	{
		emit getResultCurrentListItemSymbolName();
	}
}

void searchhandler::FilesList_ButtonClick(bool checked)
{
	if (!checked)
	{
		perform_search("*",
			false,
			sqlquery::sqlresultFILESLIST,
			"*",
			0,
			false);
	}
}

void searchhandler::PrevSearch_ButtonClick(bool checked)
{
	if (!checked) goBackInSearchMemory();
}

void searchhandler::NextSearch_ButtonClick(bool checked)
{
	if (!checked) goForwardInSearchMemory();
}

void searchhandler::Search_EnterKeyPressed()
{
	perform_search(m_comboBoxSearch->lineEdit()->text().trimmed().C_STR(),
			m_checkBoxExactMatch->isChecked());
}

void searchhandler::searchTextEdited(const QString& searchtxt)
{
	if (m_checkBoxAutoComplete->isChecked())
	{
		if ((m_autocompBusy)||(m_declarBusy)||(m_funcListBusy))
		{
			m_autocompSrchTerm = searchtxt;
		}
		else
		{
			m_autocompBusy = true;
			m_autocompSrchTerm.clear();
			m_autocompFutureWatcher.setFuture(
				QtConcurrent::run(search_autocomplete_qt, searchtxt));
		}
	}
	m_autocompBusy = (!m_autocompFutureWatcher.isFinished());
}

void searchhandler::autoCompleteFinished()
{
	if (!m_autocompBusy) return;
	m_srchStrLstModel.setStringList(m_autocompFutureWatcher.result());
	if (m_autocompSrchTerm.isEmpty())
	{
		m_autocompBusy = false;
	}
	else
	{
		m_autocompBusy = true;
		m_autocompFutureWatcher.setFuture(
			QtConcurrent::run(search_autocomplete_qt, m_autocompSrchTerm));
		m_autocompSrchTerm.clear();
	}
}

void searchhandler::declarSearchFinished()
{
	QStringList strLst = m_declarFutureWatcher.result();
	m_declarBusy = false;
	if (strLst.length() > 0)
		emit searchDeclarationResultsReady(strLst);
}

void searchhandler::searchDeclaration(QString searchstr)
{
	if ((!m_declarBusy)&&(!m_autocompBusy)&&(!m_funcListBusy))
	{
		m_declarBusy = true;
		m_declarFutureWatcher.setFuture(
			QtConcurrent::run(search_declaration_qt, searchstr));
	}
}

void searchhandler::funcListSearchFinished()
{
	sqlqueryresultlist res = m_listFuncFutureWatcher.result();
	if ((res.result_type == sqlqueryresultlist::sqlresultFUNC_IN_ONE_FILE) &&
		(res.resultlist.empty() == false))
	{
		emit searchListFuncResultsReady(&res);
	}
	m_funcListBusy = false;
}

void searchhandler::searchFuncList_filename(QString filename)
{
	if ((filename.isEmpty() == false)&&(!m_declarBusy)&&(!m_autocompBusy)&&(!m_funcListBusy))
	{
		m_funcListBusy = true;
		m_listFuncFutureWatcher.setFuture(
			QtConcurrent::run(search_funclist_qt_filename, filename));
	}
}

void searchhandler::searchFuncList_fileid(int fileid)
{
	if ((fileid >= 0)&&(!m_declarBusy)&&(!m_autocompBusy)&&(!m_funcListBusy))
	{
		m_funcListBusy = true;
		m_listFuncFutureWatcher.setFuture(
			QtConcurrent::run(search_funclist_qt_fileid, fileid));
	}
}

sqlqueryresultlist searchhandler::search_funclist_qt_filename(QString filename)
{
	return sq->search_funclist_filename(extract_filename(filename.C_STR()));
}

sqlqueryresultlist searchhandler::search_funclist_qt_fileid(int fileid)
{
	return sq->search_funclist_fileid(fileid);
}

QStringList searchhandler::search_declaration_qt(QString searchtxt)
{
	QStringList strLst;
	QString str;
	sqlqueryresultlist reslst = sq->search_declaration(searchtxt.C_STR());
	if (reslst.resultlist.size() > 0)
	{
		str.append(reslst.resultlist[0].filename.C_STR())
			.append(":")
			.append(reslst.resultlist[0].linenum.C_STR())
			.append(" ==> ")
			.append(reslst.resultlist[0].linetext.C_STR());
		strLst << searchtxt;
		strLst << str;
	}
	return strLst;
}

QStringList searchhandler::search_autocomplete_qt(QString searchtxt)
{
	return sq->search_autocomplete(searchtxt.C_STR());
}

void searchhandler::autoCompleteStateChanged(int state)
{
	if (state == Qt::Checked)
	{
		m_srchStrLstModel.setStringList(QStringList(m_comboBoxSearch->lineEdit()->text().trimmed()));
	}
	else if (state == Qt::Unchecked)
	{
		m_srchStrLstModel.setStringList(QStringList());
	}
}

void searchhandler::newSearchText()
{
	QString txt = (QApplication::clipboard())->text();
	//m_comboBoxSearch->lineEdit()->setText(txt);
	perform_search(txt,m_checkBoxExactMatch->isChecked());
}

void searchhandler::newSearchTextSymbolOnly()
{
	QString txt = (QApplication::clipboard())->text();
	//m_comboBoxSearch->lineEdit()->setText(txt);
	perform_search(txt, m_checkBoxExactMatch->isChecked(), sqlquery::sqlquerySYMBOL);
}

void searchhandler::init(void)
{
	m_completer->setModelSorting(QCompleter::CaseSensitivelySortedModel);
	m_completer->setCaseSensitivity(Qt::CaseInsensitive);
	m_comboBoxSearch->lineEdit()->setCompleter(m_completer);
	m_comboBoxSearch->setInsertPolicy(QComboBox::NoInsert);
	retranslateUi();
	m_pushButtonSearchPrev->setEnabled(false);
	m_pushButtonSearchNext->setEnabled(false);
	connect(m_pushButtonOpenDB, SIGNAL(clicked(bool)),
			this, SLOT(OpenDB_ButtonClick(bool)));
	connect(m_pushButtonSearch, SIGNAL(clicked(bool)),
			this, SLOT(Search_ButtonClick(bool)));
	connect(m_pushButtonClipSearch, SIGNAL(clicked(bool)),
			this, SLOT(ClipSearch_ButtonClick(bool)));
	connect(m_pushButtonGraph, SIGNAL(clicked(bool)),
			this, SLOT(Graph_ButtonClick(bool)));
	connect(m_pushButtonFilesList, SIGNAL(clicked(bool)),
			this, SLOT(FilesList_ButtonClick(bool)));
	connect(m_comboBoxSearch->lineEdit(), SIGNAL(returnPressed()),
			this, SLOT(Search_EnterKeyPressed()));
	connect(m_comboBoxSearch->lineEdit(), SIGNAL(textEdited(QString)),
			this, SLOT(searchTextEdited(QString)));
	connect(m_comboBoxDB, SIGNAL(currentIndexChanged(int)),
			this, SLOT(OpenDB_indexChanged(int)));
	connect(m_comboBoxQueryType, SIGNAL(currentIndexChanged(int)),
			this, SLOT(QueryType_indexChanged(int)));
	connect(m_checkBoxAutoComplete, SIGNAL(stateChanged(int)),
			this, SLOT(autoCompleteStateChanged(int)));
	connect(m_pushButtonSearchPrev, SIGNAL(clicked(bool)),
			this, SLOT(PrevSearch_ButtonClick(bool)));
	connect(m_pushButtonSearchNext, SIGNAL(clicked(bool)),
			this, SLOT(NextSearch_ButtonClick(bool)));
	connect(&m_autocompFutureWatcher, SIGNAL(finished()),
			this, SLOT(autoCompleteFinished()));
	connect(&m_declarFutureWatcher, SIGNAL(finished()),
			this, SLOT(declarSearchFinished()));
	connect(&m_listFuncFutureWatcher, SIGNAL(finished()),
			this, SLOT(funcListSearchFinished()));
}

void searchhandler::retranslateUi(void)
{
	int curidx = 0;
	if (m_comboBoxQueryType->count() > 0) curidx = 
			m_comboBoxQueryType->currentIndex();
	m_comboBoxQueryType->clear();
	m_comboBoxQueryType->addItem(QIcon(),
				tr("Symbol"),
				QVariant(sqlquery::sqlquerySYMBOL));
	m_comboBoxQueryType->addItem(QIcon(),
				tr("Function or macro definition (Graph available)"),
				QVariant(sqlquery::sqlresultFUNC_MACRO));
	m_comboBoxQueryType->addItem(QIcon(),
				tr("Calls of this function or macro"),
				QVariant(sqlquery::sqlresultCALLSOFFUNC));
	m_comboBoxQueryType->addItem(QIcon(),
				tr("Functions calling this function"),
				QVariant(sqlquery::sqlresultCALLINGFUNC));
	m_comboBoxQueryType->addItem(QIcon(),
				tr("Functions called by this function"),
				QVariant(sqlquery::sqlresultCALLEDFUNC));
	m_comboBoxQueryType->addItem(QIcon(),
				tr("Class or struct (Graph available)"),
				QVariant(sqlquery::sqlresultCLASS_STRUCT));
	m_comboBoxQueryType->addItem(QIcon(),
				tr("Class which owns this member or method"),
				QVariant(sqlquery::sqlresultOWNERCLASS));
	m_comboBoxQueryType->addItem(QIcon(),
				tr("Members or methods of this class"),
				QVariant(sqlquery::sqlresultMEMBERS));
	m_comboBoxQueryType->addItem(QIcon(),
				tr("Parent of this class"),
				QVariant(sqlquery::sqlresultPARENTCLASS));
	m_comboBoxQueryType->addItem(QIcon(),
				tr("Children of this class"),
				QVariant(sqlquery::sqlresultCHILDCLASS));
	m_comboBoxQueryType->addItem(QIcon(),
				tr("Files including this file"),
				QVariant(sqlquery::sqlresultINCLUDE));
	m_comboBoxQueryType->addItem(QIcon(),
				tr("Full path for file"),
				QVariant(sqlquery::sqlresultFILESLIST));
	m_comboBoxQueryType->addItem(QIcon(),
				tr("Functions or macros inside this file"),
				QVariant(sqlquery::sqlresultFUNCSINFILE));
	m_comboBoxQueryType->addItem(QIcon(),
				"Grep",
				QVariant(sqlquery::sqlresultGREP));
	m_comboBoxQueryType->setCurrentIndex(curidx);

}

void searchhandler::perform_open_db(void)
{
	QString fileext = tr("CodeQuery DB Files");
	fileext += " (*.db)";
	QString fileName = QFileDialog::getOpenFileName( (QWidget*)mw,
	tr("Open CQ database file"), "", fileext);
	if (fileName.isEmpty() == false)
	{
		m_comboBoxDB->insertItem(0, fileName);
		m_comboBoxDB->setCurrentIndex(0);
		for (int i=1; i < (m_comboBoxDB->count()); i++)
		{
			if (fileName.compare(m_comboBoxDB->itemText(i), Qt::CaseSensitive) == 0)
			{
				m_comboBoxDB->removeItem(i);
				break;
			}
		}
		if (m_comboBoxDB->count() > 7) m_comboBoxDB->removeItem(m_comboBoxDB->count() - 1);
	}
}

void searchhandler::OpenDB_indexChanged(const int& idx)
{
	if (idx < 0) return;
	sqlquery::en_filereadstatus sqstatus;
	if (m_autocompBusy)
	{
		m_autocompBusy = false;
		m_autocompFutureWatcher.waitForFinished();
	}
	if (m_declarBusy)
	{
		m_declarBusy = false;
		m_declarFutureWatcher.waitForFinished();
	}
	if (m_funcListBusy)
	{
		m_funcListBusy = false;
		m_listFuncFutureWatcher.waitForFinished();
	}
	sq->close_dbfile();
	QFileInfo dbfile(m_comboBoxDB->itemText(idx));
	sqstatus = sq->open_dbfile(m_comboBoxDB->itemText(idx));
	if (sqstatus != sqlquery::sqlfileOK)
	{
		QMessageBox msgBox((QWidget*)mw);
		msgBox.setText(sqlerrormsg(sqstatus));
		msgBox.exec();
		m_comboBoxDB->removeItem(idx);
	}
	else
	{
		QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
		m_comboBoxSearch->clear();
		m_comboBoxSearch->lineEdit()->clear();
		m_searchMemoryList.clear();
		m_iter = m_searchMemoryList.begin();
		m_pushButtonSearchPrev->setEnabled(false);
		m_pushButtonSearchNext->setEnabled(false);
		emit sendDBtimestamp(dbfile.lastModified());
		emit DBreset();
		QApplication::restoreOverrideCursor();
	}
}

void searchhandler::QueryType_indexChanged(const int& idx)
{
	int qrytype;
	m_pushButtonGraph->setEnabled(false);
	qrytype = m_comboBoxQueryType->itemData(idx).toInt();
	switch(qrytype)
	{
		case sqlquery::sqlresultFUNC_MACRO: // function or macro
			m_graphdesc = tr("Function Call Graph");
			m_typeOfGraph = 1;
			break;
		case sqlquery::sqlresultCLASS_STRUCT: // class or struct
			m_graphdesc = tr("Class Inheritance Graph");
			m_typeOfGraph = 2;
			break;
	}
	if (qrytype == sqlquery::sqlresultGREP)
	{
#ifndef QT_NO_TOOLTIP
        m_comboBoxSearch->setToolTip("Grep: QRegularExpression regular expressions");
#endif // QT_NO_TOOLTIP
#ifndef QT_NO_STATUSTIP
        m_comboBoxSearch->setStatusTip("Grep: QRegularExpression regular expressions");
#endif // QT_NO_STATUSTIP
	}
	else
	{
#ifndef QT_NO_TOOLTIP
        m_comboBoxSearch->setToolTip(tr("If Exact Match is switched off, wildcard searches (* and ?) are supported"));
#endif // QT_NO_TOOLTIP
#ifndef QT_NO_STATUSTIP
        m_comboBoxSearch->setStatusTip(tr("If Exact Match is switched off, wildcard searches (* and ?) are supported"));
#endif // QT_NO_STATUSTIP
	}
	Search_EnterKeyPressed();
}

void searchhandler::perform_search(QString searchtxt,
			bool exactmatch,
			sqlquery::en_queryType qrytyp,
			QString filtertxt,
			int selectitem,
			bool updSearchMemory)
{
	if (sq->isDBOpen() == false) return;
	if (searchtxt.isEmpty()) return;
	sqlqueryresultlist sqlresultlist;
	QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
	if (m_autocompBusy)
	{
		m_autocompBusy = false;
		m_autocompFutureWatcher.waitForFinished();
	}
	if (m_declarBusy)
	{
		m_declarBusy = false;
		m_declarFutureWatcher.waitForFinished();
	}
	if (m_funcListBusy)
	{
		m_funcListBusy = false;
		m_listFuncFutureWatcher.waitForFinished();
	}
	sqlquery::en_queryType querytype = qrytyp;
	if (querytype == sqlquery::sqlresultDEFAULT) querytype = 
		(sqlquery::en_queryType)m_comboBoxQueryType->itemData(m_comboBoxQueryType->currentIndex()).toInt();
	if ((filtertxt.isEmpty()) && (m_checkBoxFilter->isChecked()))
	{
		filtertxt = m_comboBoxFilter->lineEdit()->text().trimmed();
		if (updSearchMemory) updateFilterHistory(filtertxt);
	}
	if (querytype == sqlquery::sqlresultGREP)
	{
		if (filtertxt.isEmpty()) filtertxt = "*";
		sqlresultlist = sq->search(filtertxt.C_STR(),
				sqlquery::sqlresultFILEPATH, false);
	}
	else
	{
		sqlresultlist = sq->search(searchtxt.C_STR(),
				querytype, exactmatch,
				filtertxt.C_STR());
	}
	QApplication::restoreOverrideCursor();
	if (sqlresultlist.result_type == sqlqueryresultlist::sqlresultERROR)
	{
		QMessageBox msgBox((QWidget*)mw);
		msgBox.setText(sqlresultlist.sqlerrmsg);
		msgBox.exec();
	}
	else
	{
		m_pushButtonGraph->setEnabled((querytype == sqlquery::sqlresultFUNC_MACRO)||
			(querytype == sqlquery::sqlresultCLASS_STRUCT));
		updateSearchHistory(searchtxt);
		if (updSearchMemory) addToSearchMemory(searchtxt, filtertxt);
		if (querytype == sqlquery::sqlresultGREP)
		{
			sqlresultlist = perform_grep(searchtxt, sqlresultlist, exactmatch);
		}
		emit searchresults(sqlresultlist, selectitem);
		QString str;
		str = QString("%1").arg(sqlresultlist.resultlist.size());
		str += " ";
		str += tr("results found");
		emit updateStatus(str, 5000);
	}
}

sqlqueryresultlist searchhandler::perform_grep(QString searchtxt, sqlqueryresultlist searchlist, bool exactmatch)
{
	QVector<QPair<QString, int>> strvec;
	sqlqueryresultlist resultlist;
	QFutureWatcher<sqlqueryresultlist> futureWatcher;
	QProgressDialog dialog;
	long n = searchlist.resultlist.size();
	if (n == 0) return resultlist;
	strvec.resize(n);
	for (long i=0; i < n; i++)
	{
		strvec.replace(i, qMakePair(searchlist.resultlist[i].filepath, searchlist.resultlist[i].fileid));
	}
	dialog.setAutoReset(false);
	dialog.setLabelText(QString("Grep ").append(QString(tr("in progress"))).append(QString(" ...")));
	dialog.setCancelButtonText(tr("Cancel"));
	QObject::connect(&futureWatcher, SIGNAL(finished()), &dialog, SLOT(reset()));
	QObject::connect(&dialog, SIGNAL(canceled()), &futureWatcher, SLOT(cancel()));
	QObject::connect(&futureWatcher, SIGNAL(progressRangeChanged(int,int)), &dialog, SLOT(setRange(int,int)));
	QObject::connect(&futureWatcher, SIGNAL(progressValueChanged(int)), &dialog, SLOT(setValue(int)));
	m_grepExactMatch = exactmatch;
	(*m_grepRegExp) = QRegularExpression(searchtxt.C_STR(), QRegularExpression::CaseInsensitiveOption);
	futureWatcher.setFuture(QtConcurrent::mappedReduced(strvec, doGrep,
				collateGrep, QtConcurrent::SequentialReduce));
	dialog.exec();
	futureWatcher.waitForFinished();
	if (futureWatcher.isCanceled() == false)
		resultlist = futureWatcher.result();
	return resultlist;
}

sqlqueryresultlist searchhandler::doGrep(const QPair<QString, int> &fp)
{
	sqlqueryresultlist reslist;
	sqlqueryresult res;
	tStr str, fp2, fn;
	QRegularExpressionMatch pos;
	long linenumber=0;
	char numtext[30];
	QRegularExpression rx1(*m_grepRegExp);
	reslist.result_type = sqlqueryresultlist::sqlresultFILE_LINE;
	fp2 = fp.first; // path of file to be searched
	fp2.replace(QString("$HOME"), QDir::homePath());
#ifdef _WIN32
	fp2.replace("/", "\\");
#endif
	fn = extract_filename(fp2.C_STR());
	QFile file(fp2);
	QTextStream in(&file);
	if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
	{
		return reslist;
	}
	while (!in.atEnd())
	{
		linenumber++;
		str = in.readLine();
		pos = rx1.match(str);
		if (pos.hasMatch())
		{
			res.filepath = fp2;
			res.filename = fn;
			res.fileid = fp.second;
			sprintf(numtext, "%ld", linenumber);
			res.linenum = numtext;
			res.linetext = str.trimmed().left(800);
			reslist.resultlist.push_back(res);
		}
	}
	return reslist;
}

void searchhandler::collateGrep(sqlqueryresultlist &result,
			const sqlqueryresultlist &intermediate)
{
	long i, n;
	n = intermediate.resultlist.size();
	result.result_type = sqlqueryresultlist::sqlresultFILE_LINE;
	result.resultlist.reserve(n);
	for(i=0; i<n; i++)
	{
		result.resultlist.push_back(intermediate.resultlist[i]);
	}
}

void searchhandler::updateFilterHistory(QString filtertxt)
{
	if (filtertxt.isEmpty()) return;
	m_comboBoxFilter->insertItem(0, filtertxt);
	m_comboBoxFilter->setCurrentIndex(0);
	for(int i=1; i < m_comboBoxFilter->count(); i++)
	{
		if (m_comboBoxFilter->itemText(i).compare(filtertxt) == 0)
		{
			m_comboBoxFilter->removeItem(i);
			break;
		}
	}
	if (m_comboBoxFilter->count() > 7) // limit to 7
	{
		m_comboBoxFilter->removeItem(m_comboBoxFilter->count() - 1);
	}
}

void searchhandler::resultCurrentListItemSymbolName(const QString symName)
{
	if (symName.isEmpty())
	{
		QMessageBox msgBox((QWidget*)mw);
		msgBox.setIcon(QMessageBox::Information);
		msgBox.setStandardButtons(QMessageBox::Ok);
		msgBox.setText(tr("You have to first select an item from the list before pushing the Graph button."));
		msgBox.exec();
		return;
	}	

	QStringList grpxml, grpdot;
	bool res;
	QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
	if (m_autocompBusy)
	{
		m_autocompBusy = false;
		m_autocompFutureWatcher.waitForFinished();
	}
	if (m_declarBusy)
	{
		m_declarBusy = false;
		m_declarFutureWatcher.waitForFinished();
	}
	if (m_funcListBusy)
	{
		m_funcListBusy = false;
		m_listFuncFutureWatcher.waitForFinished();
	}
	if (m_typeOfGraph == 1)
	{
		res = sq->search_funcgraph(symName,
				true,
				grpxml, grpdot);
		res = sq->search_funcgraph(symName,
				true,
				grpxml, grpdot, 2);
	}
	else if (m_typeOfGraph == 2)
	{
		res = sq->search_classinheritgraph(symName,
				true,
				grpxml, grpdot);
	}
	else {QApplication::restoreOverrideCursor(); return;}
	QApplication::restoreOverrideCursor();
	QMessageBox msgBox((QWidget*)mw);
	msgBox.setIcon(QMessageBox::Warning);
	msgBox.setStandardButtons(QMessageBox::Ok);
	if (!res)
	{
		msgBox.setText("SQL Query error");
		msgBox.exec();
		return;
	}
	QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
	cqDialogGraph cqdg((QWidget*)mw);
	cqdg.setModal(true);
	cqdg.setupGraphFromXML(grpxml, grpdot, m_graphdesc);
	QApplication::restoreOverrideCursor();
	cqdg.exec();
}

void searchhandler::addToSearchMemory(const QString& searchtxt, const QString& filtertxt)
{
	searchitem item;
	item.searchterm = searchtxt;
	item.filterterm = filtertxt;
	item.exactmatch = m_checkBoxExactMatch->isChecked();
	item.qtype = (sqlquery::en_queryType)
		m_comboBoxQueryType->itemData(m_comboBoxQueryType->currentIndex()).toInt();
	m_searchMemoryList.push_back(item);
	if (m_searchMemoryList.size() > 20) m_searchMemoryList.erase(m_searchMemoryList.begin());
	m_iter = m_searchMemoryList.end() - 1;
	m_pushButtonSearchPrev->setEnabled(m_searchMemoryList.isEmpty() == false);
	m_pushButtonSearchNext->setEnabled(false);
}

void searchhandler::goForwardInSearchMemory(void)
{
	if (m_searchMemoryList.size() <= 1) return;
	if (m_iter == m_searchMemoryList.end() - 1) return;
	m_iter++;
	m_pushButtonSearchPrev->setEnabled(m_searchMemoryList.isEmpty() == false);
	m_pushButtonSearchNext->setEnabled(m_iter != m_searchMemoryList.end() - 1);
	restoreSearchMemoryItem();
}

void searchhandler::goBackInSearchMemory(void)
{
	if (m_searchMemoryList.size() <= 1) return;
	if (m_iter == m_searchMemoryList.begin()) return;
	m_iter--;
	m_pushButtonSearchPrev->setEnabled(m_iter != m_searchMemoryList.begin());
	m_pushButtonSearchNext->setEnabled(m_searchMemoryList.isEmpty() == false);
	restoreSearchMemoryItem();
}

void searchhandler::restoreSearchMemoryItem(void)
{
	perform_search(m_iter->searchterm,
			m_iter->exactmatch,
			m_iter->qtype,
			m_iter->filterterm,
			m_iter->rownum,
			false);
}

void searchhandler::updateListItemRowNum(const int& row)
{
	if (m_searchMemoryList.isEmpty() == false) m_iter->rownum = row;
}

void searchhandler::updateSearchHistory(const QString& searchtxt)
{
	m_comboBoxSearch->insertItem(0, searchtxt); // insert to top
	int n = (m_comboBoxSearch->count());
	for(int i=1; i < n; i++)
	{
		if (m_comboBoxSearch->itemText(i).compare(searchtxt, Qt::CaseSensitive) == 0)
		{
			m_comboBoxSearch->removeItem(i); // remove duplicates
			break;
		}
	}
	// limit to 15 only
	if (m_comboBoxSearch->count() > 15) m_comboBoxSearch->removeItem(m_comboBoxSearch->count() - 1);
	m_comboBoxSearch->setCurrentIndex(0);
}

QString searchhandler::sqlerrormsg(sqlquery::en_filereadstatus status)
{
	QString str;
	switch(status)
	{
		case sqlquery::sqlfileOPENERROR: str = tr("File open error"); break;
		case sqlquery::sqlfileNOTCORRECTDB: str = tr("Wrong file format"); break;
		case sqlquery::sqlfileINCORRECTVER: str = tr("Incorrect CQ database version"); break;
		case sqlquery::sqlfileOK: str = tr("OK"); break;
		case sqlquery::sqlfileUNKNOWNERROR:
		default: str = tr("Unknown Error"); break;
	}
	return str;
}



================================================
FILE: gui/searchhandler.h
================================================

/*
 * CodeQuery
 * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 */


#ifndef SEARCHHANDLER_H_CQ
#define SEARCHHANDLER_H_CQ

#include <QtGlobal>
#include <QtWidgets>

#include "sqlquery.h"

class mainwindow;

class searchitem
{
public:
	searchitem();
	~searchitem(){}
	searchitem(const searchitem& otheritem);
	searchitem& operator=(const searchitem& otheritem);

	// return value: 0=same, 1=completely different, 2=only linenum changed
	int compare(const searchitem& otheritem);

	QString searchterm;
	QString filterterm;
	bool exactmatch;
	sqlquery::en_queryType qtype;
	int rownum;
};

class searchhandler : public QObject
{
  Q_OBJECT

public:
QPushButton *m_pushButtonOpenDB;
QComboBox *m_comboBoxDB;
QCheckBox *m_checkBoxAutoComplete;
QCheckBox *m_checkBoxExactMatch;
QPushButton *m_pushButtonSearch;
QPushButton *m_pushButtonClipSearch;
QPushButton *m_pushButtonSearchPrev;
QPushButton *m_pushButtonSearchNext;
QComboBox *m_comboBoxSearch;
QComboBox *m_comboBoxQueryType;
QPushButton *m_pushButtonGraph;
QPushButton *m_pushButtonFilesList;
QCheckBox *m_checkBoxFilter;
QComboBox *m_comboBoxFilter;
QCompleter *m_completer;
QFutureWatcher<QStringList> m_autocompFutureWatcher;
QFutureWatcher<QStringList> m_declarFutureWatcher;
QFutureWatcher<sqlqueryresultlist> m_listFuncFutureWatcher;
static bool m_grepExactMatch;
static QRegularExpression* m_grepRegExp;

searchhandler(mainwindow* pmw);
~searchhandler();
void init(void);
void perform_open_db(void);
void perform_search(QString searchtxt,
			bool exactmatch,
			sqlquery::en_queryType qrytyp = sqlquery::sqlresultDEFAULT,
			QString filtertxt = "",
			int selectitem = 0,
			bool updSearchMemory = true);
void updateSearchHistory(const QString& searchtxt);
void addToSearchMemory(const QString& searchtxt, const QString& filtertxt);
void goForwardInSearchMemory(void);
void goBackInSearchMemory(void);
void restoreSearchMemoryItem(void);
void retranslateUi(void);
static QStringList search_autocomplete_qt(QString searchtxt);
static QStringList search_declaration_qt(QString searchtxt);
static sqlqueryresultlist search_funclist_qt_filename(QString filename);
static sqlqueryresultlist search_funclist_qt_fileid(int fileid);
static sqlqueryresultlist doGrep(const QPair<QString, int> &fp);
static void collateGrep(sqlqueryresultlist &result,
			const sqlqueryresultlist &intermediate);

public slots:
void OpenDB_ButtonClick(bool checked);
void Search_ButtonClick(bool checked);
void PrevSearch_ButtonClick(bool checked);
void NextSearch_ButtonClick(bool checked);
void ClipSearch_ButtonClick(bool checked);
void Graph_ButtonClick(bool checked);
void FilesList_ButtonClick(bool checked);
void Search_EnterKeyPressed();
void searchTextEdited(const QString& searchtxt);
void newSearchText();
void newSearchTextSymbolOnly();
void autoCompleteStateChanged(int state);
void OpenDB_indexChanged(const int& idx);
void QueryType_indexChanged(const int& idx);
void updateListItemRowNum(const int& row);
void resultCurrentListItemSymbolName(const QString symName);
void searchDeclaration(QString searchstr);
void searchFuncList_filename(QString filename);
void searchFuncList_fileid(int fileid);
void autoCompleteFinished();
void declarSearchFinished();
void funcListSearchFinished();

signals:
void searchresults(sqlqueryresultlist resultlist, int selectitem);
void updateStatus(const QString & message, int timeout = 0);
void DBreset();
void sendDBtimestamp(QDateTime dt);
void getResultCurrentListItemSymbolName();
void searchDeclarationResultsReady(QStringList resdeclar);
void searchListFuncResultsReady(sqlqueryresultlist* res);

private:
mainwindow *mw;
static sqlquery* sq;
QString m_graphdesc;
int m_typeOfGraph; // 1 = Function Call, 2 = Class Inheritance
QStringListModel m_srchStrLstModel;
QString sqlerrormsg(sqlquery::en_filereadstatus status);
QVector<searchitem> m_searchMemoryList;
QVector<searchitem>::iterator m_iter;
bool m_autocompBusy;
bool m_declarBusy;
bool m_funcListBusy;
QString m_autocompSrchTerm;

void updateFilterHistory(QString filtertxt);
sqlqueryresultlist perform_grep(QString searchtxt, sqlqueryresultlist searchlist, bool exactmatch);

};


#endif



================================================
FILE: gui/themes/Bespin.xml
================================================
<?xml version="1.0" encoding="Windows-1252" ?>
<!--//

Bespin
Copyright (c) 2009 Oren Farhi, Orizen Designs - http://www.orizens.com

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.

Requirements:
    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.
    * Notepad++, of course.

Installation:
    Copy this file to C:\Documents and Settings\%%USERNAME%%\Application Data\Notepad++\themes


Credits:
    Thanks for the original Textmate theme author.
    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.
    Thanks for the user for the tmTheme source.

//-->
<NotepadPlus>
    <LexerStyles>
        <LexerType name="c" desc="C" ext="">
            <WordsStyle name="PREPROCESSOR" styleID="9" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="DEFAULT" styleID="11" fgColor="F8F8F8" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="INSTRUCTION WORD" styleID="5" fgColor="F6F080" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="instre1" />
            <WordsStyle name="TYPEWORD" styleID="16" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="type1" />
            <WordsStyle name="NUMBER" styleID="4" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="STRING" styleID="6" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="CHARACTER" styleID="7" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="OPERATOR" styleID="10" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="VERBATIM" styleID="13" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="REGEX" styleID="14" fgColor="FFB454" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT" styleID="1" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE" styleID="2" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC" styleID="3" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE DOC" styleID="15" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD" styleID="17" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD ERROR" styleID="18" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
        </LexerType>
        <LexerType name="cpp" desc="C++" ext="">
            <WordsStyle name="PREPROCESSOR" styleID="9" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="DEFAULT" styleID="11" fgColor="F8F8F8" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="INSTRUCTION WORD" styleID="5" fgColor="F6F080" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="instre1" />
            <WordsStyle name="TYPE WORD" styleID="16" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="type1" />
            <WordsStyle name="NUMBER" styleID="4" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="STRING" styleID="6" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="CHARACTER" styleID="7" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="OPERATOR" styleID="10" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="VERBATIM" styleID="13" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="REGEX" styleID="14" fgColor="FFB454" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT" styleID="1" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE" styleID="2" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC" styleID="3" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE DOC" styleID="15" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD" styleID="17" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD ERROR" styleID="18" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
        </LexerType>
        <LexerType name="java" desc="Java" ext="">
            <WordsStyle name="PREPROCESSOR" styleID="9" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="DEFAULT" styleID="11" fgColor="F8F8F8" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="INSTRUCTION WORD" styleID="5" fgColor="F6F080" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="instre1" />
            <WordsStyle name="TYPE WORD" styleID="16" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="type1" />
            <WordsStyle name="NUMBER" styleID="4" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="STRING" styleID="6" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="CHARACTER" styleID="7" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="OPERATOR" styleID="10" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="VERBATIM" styleID="13" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="REGEX" styleID="14" fgColor="FFB454" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT" styleID="1" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE" styleID="2" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC" styleID="3" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE DOC" styleID="15" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD" styleID="17" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD ERROR" styleID="18" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
        </LexerType>
        <LexerType name="cs" desc="C#" ext="">
            <WordsStyle name="PREPROCESSOR" styleID="9" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="DEFAULT" styleID="11" fgColor="F8F8F8" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="INSTRUCTION WORD" styleID="5" fgColor="F6F080" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="instre1" />
            <WordsStyle name="TYPE WORD" styleID="16" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="NUMBER" styleID="4" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="STRING" styleID="6" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="CHARACTER" styleID="7" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="OPERATOR" styleID="10" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="VERBATIM" styleID="13" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="REGEX" styleID="14" fgColor="FFB454" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT" styleID="1" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE" styleID="2" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC" styleID="3" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE DOC" styleID="15" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD" styleID="17" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD ERROR" styleID="18" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
        </LexerType>
        <LexerType name="rc" desc="RC" ext="">
            <WordsStyle name="PREPROCESSOR" styleID="9" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="DEFAULT" styleID="11" fgColor="F8F8F8" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="INSTRUCTION WORD" styleID="5" fgColor="F6F080" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="instre1" />
            <WordsStyle name="TYPE WORD" styleID="16" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="NUMBER" styleID="4" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="STRING" styleID="6" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="CHARACTER" styleID="7" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="OPERATOR" styleID="10" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="VERBATIM" styleID="13" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="REGEX" styleID="14" fgColor="FFB454" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT" styleID="1" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE" styleID="2" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC" styleID="3" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE DOC" styleID="15" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD" styleID="17" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD ERROR" styleID="18" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
        </LexerType>
        <LexerType name="tcl" desc="TCL" ext="">
            <WordsStyle name="PREPROCESSOR" styleID="9" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="DEFAULT" styleID="11" fgColor="F8F8F8" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="INSTRUCTION WORD" styleID="5" fgColor="F6F080" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="instre1" />
            <WordsStyle name="TYPE WORD" styleID="16" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="type1" />
            <WordsStyle name="NUMBER" styleID="4" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="STRING" styleID="6" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="CHARACTER" styleID="7" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="OPERATOR" styleID="10" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="VERBATIM" styleID="13" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="REGEX" styleID="14" fgColor="FFB454" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT" styleID="1" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE" styleID="2" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC" styleID="3" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE DOC" styleID="15" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD" styleID="17" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD ERROR" styleID="18" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
        </LexerType>
        <LexerType name="objc" desc="Objective-C" ext="">
            <WordsStyle name="DIRECTIVE" styleID="19" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="instre2" />
            <WordsStyle name="DEFAULT" styleID="11" fgColor="F8F8F8" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="QUALIFIER" styleID="20" fgColor="000000" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="type2" />
            <WordsStyle name="PREPROCESSOR" styleID="9" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="INSTRUCTION WORD" styleID="5" fgColor="F6F080" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="instre1" />
            <WordsStyle name="TYPE WORD" styleID="16" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="type1" />
            <WordsStyle name="NUMBER" styleID="4" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="STRING" styleID="6" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="CHARACTER" styleID="7" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="OPERATOR" styleID="10" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="VERBATIM" styleID="13" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="REGEX" styleID="14" fgColor="FFB454" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT" styleID="1" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE" styleID="2" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC" styleID="3" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE DOC" styleID="15" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD" styleID="17" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT DOC KEYWORD ERROR" styleID="18" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
        </LexerType>
        <LexerType name="sql" desc="SQL" ext="">
            <WordsStyle name="KEYWORD" styleID="5" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="instre1" />
            <WordsStyle name="NUMBER" styleID="4" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="STRING" styleID="6" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="STRING2" styleID="7" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="OPERATOR" styleID="10" fgColor="FFAA00" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT" styleID="1" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT LINE" styleID="2" fgColor="1E9AE0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
        </LexerType>
        <LexerType name="html" desc="HTML" ext="">
            <WordsStyle name="DEFAULT" styleID="0" fgColor="BDAE9D" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="COMMENT" styleID="9" fgColor="666666" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="NUMBER" styleID="5" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="DOUBLESTRING" styleID="6" fgColor="80FF80" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="SINGLESTRING" styleID="7" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="TAG" styleID="1" fgColor="37A8ED" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="TAGEND" styleID="11" fgColor="37A8ED" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="TAGUNKNOWN" styleID="2" fgColor="FF0000" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="ATTRIBUTE" styleID="3" fgColor="E5C138" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="ATTRIBUTEUNKNOWN" styleID="4" fgColor="FF0080" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="SGMLDEFAULT" styleID="21" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="CDATA" styleID="17" fgColor="FF82B0" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="VALUE" styleID="19" fgColor="FF8080" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="ENTITY" styleID="10" fgColor="FF3A83" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
        </LexerType>
        <LexerType name="php" desc="php" ext="">
            <WordsStyle name="QUESTION MARK" styleID="18" fgColor="FF0080" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="DEFAULT" styleID="118" fgColor="F8F8F8" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="USER-DEFINED" styleID="16" fgColor="FF5555" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" keywordClass="type1">the_ID the_post have_posts wp_link_pages the_content</WordsStyle>
            <WordsStyle name="STRING" styleID="119" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="STRING VARIABLE" styleID="126" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="SIMPLESTRING" styleID="120" fgColor="55E439" bgColor="2A211C" fontName="" fontStyle="0" fontSize="10" />
            <WordsStyle name="WORD" styleID="121" fgColor="37A3ED" bgColor="2
Download .txt
gitextract_stnjarzb/

├── .github/
│   └── workflows/
│       └── cmake.yml
├── .gitignore
├── CMakeLists.txt
├── LICENSE.md
├── NEWS.md
├── README.md
├── THIRDPARTY.md
├── cli/
│   ├── CMakeLists.txt
│   ├── README.md
│   └── main_cli.cpp
├── cmakefind/
│   └── FindSqlite.cmake
├── doc/
│   ├── HOWTO-LINUX.md
│   ├── INSTALL-LINUX.md
│   └── workflow.dia
├── gui/
│   ├── CMakeLists.txt
│   ├── aboutdialog.cpp
│   ├── aboutdialog.h
│   ├── cqimages.qrc
│   ├── cqtrans.qrc.template
│   ├── cqwin32.rc
│   ├── cqwin64.rc
│   ├── fileviewer.cpp
│   ├── fileviewer.h
│   ├── fileviewsettingsdialog.cpp
│   ├── fileviewsettingsdialog.h
│   ├── graphdialog.cpp
│   ├── graphdialog.h
│   ├── images/
│   │   └── axialisReadMe.txt
│   ├── langtable.cpp
│   ├── langtable.h
│   ├── listhandler.cpp
│   ├── listhandler.h
│   ├── main_gui.cpp
│   ├── mainwindow.cpp
│   ├── mainwindow.h
│   ├── searchhandler.cpp
│   ├── searchhandler.h
│   ├── themes/
│   │   ├── Bespin.xml
│   │   ├── Black_board.xml
│   │   ├── Choco.xml
│   │   ├── Deep_Black.xml
│   │   ├── Eclipse_Default.xml
│   │   ├── Hello_Kitty.xml
│   │   ├── HotFudgeSundae.xml
│   │   ├── Mono_Industrial.xml
│   │   ├── Monokai.xml
│   │   ├── MossyLawn.xml
│   │   ├── Navajo.xml
│   │   ├── NotepadPlusPlus.xml
│   │   ├── Obsidian.xml
│   │   ├── Plastic_Code_Wrap.xml
│   │   ├── Ruby_Blue.xml
│   │   ├── Solarized.xml
│   │   ├── Solarized_light.xml
│   │   ├── Twilight.xml
│   │   ├── Vibrant_Ink.xml
│   │   ├── Zenburn.xml
│   │   ├── khaki.xml
│   │   ├── parse_themes.pl
│   │   └── vim_Dark_Blue.xml
│   ├── themes.cpp
│   ├── themes.h
│   ├── themes_gen.cpp
│   ├── translations/
│   │   ├── codequery_de.ts
│   │   ├── codequery_en.ts
│   │   ├── codequery_es.ts
│   │   ├── codequery_fr.ts
│   │   ├── codequery_id.ts
│   │   ├── codequery_it.ts
│   │   ├── codequery_ja.ts
│   │   ├── codequery_ko.ts
│   │   ├── codequery_zh-CHS.ts
│   │   ├── codequery_zh-CHT.ts
│   │   ├── dolupdate.pl
│   │   ├── dowebtranslate.pl
│   │   └── tslist.txt
│   ├── ui/
│   │   ├── aboutDialog.ui
│   │   ├── fileViewSettingsDialog.ui
│   │   ├── graphDialog.ui
│   │   └── mainWindow.ui
│   └── winmain.cpp
├── lexilla/
│   ├── .gitattributes
│   ├── .github/
│   │   └── workflows/
│   │       ├── build-check-macos.yml
│   │       ├── build-check-win32.yml
│   │       └── build-check.yml
│   ├── .gitignore
│   ├── .travis.yml
│   ├── CMakeLists.txt
│   ├── CONTRIBUTING
│   ├── License.txt
│   ├── README
│   ├── access/
│   │   ├── LexillaAccess.cxx
│   │   ├── LexillaAccess.h
│   │   └── README
│   ├── cppcheck.suppress
│   ├── delbin.bat
│   ├── doc/
│   │   ├── Lexilla.html
│   │   ├── LexillaDoc.html
│   │   ├── LexillaDownload.html
│   │   └── LexillaHistory.html
│   ├── examples/
│   │   ├── CheckLexilla/
│   │   │   ├── CheckLexilla.c
│   │   │   └── makefile
│   │   └── SimpleLexer/
│   │       ├── SimpleLexer.cxx
│   │       └── makefile
│   ├── include/
│   │   ├── LexicalStyles.iface
│   │   ├── Lexilla.h
│   │   └── SciLexer.h
│   ├── lexers/
│   │   ├── LexA68k.cxx
│   │   ├── LexAPDL.cxx
│   │   ├── LexASY.cxx
│   │   ├── LexAU3.cxx
│   │   ├── LexAVE.cxx
│   │   ├── LexAVS.cxx
│   │   ├── LexAbaqus.cxx
│   │   ├── LexAda.cxx
│   │   ├── LexAsciidoc.cxx
│   │   ├── LexAsm.cxx
│   │   ├── LexAsn1.cxx
│   │   ├── LexBaan.cxx
│   │   ├── LexBash.cxx
│   │   ├── LexBasic.cxx
│   │   ├── LexBatch.cxx
│   │   ├── LexBibTeX.cxx
│   │   ├── LexBullant.cxx
│   │   ├── LexCIL.cxx
│   │   ├── LexCLW.cxx
│   │   ├── LexCOBOL.cxx
│   │   ├── LexCPP.cxx
│   │   ├── LexCSS.cxx
│   │   ├── LexCaml.cxx
│   │   ├── LexCmake.cxx
│   │   ├── LexCoffeeScript.cxx
│   │   ├── LexConf.cxx
│   │   ├── LexCrontab.cxx
│   │   ├── LexCsound.cxx
│   │   ├── LexD.cxx
│   │   ├── LexDMAP.cxx
│   │   ├── LexDMIS.cxx
│   │   ├── LexDataflex.cxx
│   │   ├── LexDiff.cxx
│   │   ├── LexECL.cxx
│   │   ├── LexEDIFACT.cxx
│   │   ├── LexEScript.cxx
│   │   ├── LexEiffel.cxx
│   │   ├── LexErlang.cxx
│   │   ├── LexErrorList.cxx
│   │   ├── LexFSharp.cxx
│   │   ├── LexFlagship.cxx
│   │   ├── LexForth.cxx
│   │   ├── LexFortran.cxx
│   │   ├── LexGAP.cxx
│   │   ├── LexGDScript.cxx
│   │   ├── LexGui4Cli.cxx
│   │   ├── LexHTML.cxx
│   │   ├── LexHaskell.cxx
│   │   ├── LexHex.cxx
│   │   ├── LexHollywood.cxx
│   │   ├── LexIndent.cxx
│   │   ├── LexInno.cxx
│   │   ├── LexJSON.cxx
│   │   ├── LexJulia.cxx
│   │   ├── LexKVIrc.cxx
│   │   ├── LexKix.cxx
│   │   ├── LexLaTeX.cxx
│   │   ├── LexLisp.cxx
│   │   ├── LexLout.cxx
│   │   ├── LexLua.cxx
│   │   ├── LexMMIXAL.cxx
│   │   ├── LexMPT.cxx
│   │   ├── LexMSSQL.cxx
│   │   ├── LexMagik.cxx
│   │   ├── LexMake.cxx
│   │   ├── LexMarkdown.cxx
│   │   ├── LexMatlab.cxx
│   │   ├── LexMaxima.cxx
│   │   ├── LexMetapost.cxx
│   │   ├── LexModula.cxx
│   │   ├── LexMySQL.cxx
│   │   ├── LexNim.cxx
│   │   ├── LexNimrod.cxx
│   │   ├── LexNsis.cxx
│   │   ├── LexNull.cxx
│   │   ├── LexOScript.cxx
│   │   ├── LexOpal.cxx
│   │   ├── LexPB.cxx
│   │   ├── LexPLM.cxx
│   │   ├── LexPO.cxx
│   │   ├── LexPOV.cxx
│   │   ├── LexPS.cxx
│   │   ├── LexPascal.cxx
│   │   ├── LexPerl.cxx
│   │   ├── LexPowerPro.cxx
│   │   ├── LexPowerShell.cxx
│   │   ├── LexProgress.cxx
│   │   ├── LexProps.cxx
│   │   ├── LexPython.cxx
│   │   ├── LexR.cxx
│   │   ├── LexRaku.cxx
│   │   ├── LexRebol.cxx
│   │   ├── LexRegistry.cxx
│   │   ├── LexRuby.cxx
│   │   ├── LexRust.cxx
│   │   ├── LexSAS.cxx
│   │   ├── LexSML.cxx
│   │   ├── LexSQL.cxx
│   │   ├── LexSTTXT.cxx
│   │   ├── LexScriptol.cxx
│   │   ├── LexSmalltalk.cxx
│   │   ├── LexSorcus.cxx
│   │   ├── LexSpecman.cxx
│   │   ├── LexSpice.cxx
│   │   ├── LexStata.cxx
│   │   ├── LexTACL.cxx
│   │   ├── LexTADS3.cxx
│   │   ├── LexTAL.cxx
│   │   ├── LexTCL.cxx
│   │   ├── LexTCMD.cxx
│   │   ├── LexTeX.cxx
│   │   ├── LexTxt2tags.cxx
│   │   ├── LexVB.cxx
│   │   ├── LexVHDL.cxx
│   │   ├── LexVerilog.cxx
│   │   ├── LexVisualProlog.cxx
│   │   ├── LexX12.cxx
│   │   └── LexYAML.cxx
│   ├── lexlib/
│   │   ├── Accessor.cxx
│   │   ├── Accessor.h
│   │   ├── CatalogueModules.h
│   │   ├── CharacterCategory.cxx
│   │   ├── CharacterCategory.h
│   │   ├── CharacterSet.cxx
│   │   ├── CharacterSet.h
│   │   ├── DefaultLexer.cxx
│   │   ├── DefaultLexer.h
│   │   ├── InList.cxx
│   │   ├── InList.h
│   │   ├── LexAccessor.cxx
│   │   ├── LexAccessor.h
│   │   ├── LexerBase.cxx
│   │   ├── LexerBase.h
│   │   ├── LexerModule.cxx
│   │   ├── LexerModule.h
│   │   ├── LexerNoExceptions.cxx
│   │   ├── LexerNoExceptions.h
│   │   ├── LexerSimple.cxx
│   │   ├── LexerSimple.h
│   │   ├── OptionSet.h
│   │   ├── PropSetSimple.cxx
│   │   ├── PropSetSimple.h
│   │   ├── SparseState.h
│   │   ├── StringCopy.h
│   │   ├── StyleContext.cxx
│   │   ├── StyleContext.h
│   │   ├── SubStyles.h
│   │   ├── WordList.cxx
│   │   └── WordList.h
│   ├── scripts/
│   │   ├── HeaderOrder.txt
│   │   ├── LexFacer.py
│   │   ├── LexillaData.py
│   │   ├── LexillaGen.py
│   │   ├── LexillaLogo.py
│   │   ├── PromoteNew.bat
│   │   ├── RunTest.bat
│   │   └── RunTest.sh
│   ├── src/
│   │   ├── DepGen.py
│   │   ├── Lexilla/
│   │   │   ├── Info.plist
│   │   │   └── Lexilla.xcodeproj/
│   │   │       ├── project.pbxproj
│   │   │       └── project.xcworkspace/
│   │   │           └── contents.xcworkspacedata
│   │   ├── Lexilla.cxx
│   │   ├── Lexilla.def
│   │   ├── Lexilla.pro
│   │   ├── Lexilla.ruleset
│   │   ├── Lexilla.vcxproj
│   │   ├── LexillaVersion.rc
│   │   ├── deps.mak
│   │   ├── lexilla.mak
│   │   ├── makefile
│   │   └── nmdeps.mak
│   ├── test/
│   │   ├── README
│   │   ├── TestDocument.cxx
│   │   ├── TestDocument.h
│   │   ├── TestLexers.cxx
│   │   ├── TestLexers.vcxproj
│   │   ├── examples/
│   │   │   ├── asciidoc/
│   │   │   │   ├── AllStyles.adoc
│   │   │   │   ├── AllStyles.adoc.folded
│   │   │   │   ├── AllStyles.adoc.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── asm/
│   │   │   │   ├── AllStyles.asm
│   │   │   │   ├── AllStyles.asm.folded
│   │   │   │   ├── AllStyles.asm.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── bash/
│   │   │   │   ├── 197ArithmeticOperator.bsh
│   │   │   │   ├── 197ArithmeticOperator.bsh.folded
│   │   │   │   ├── 197ArithmeticOperator.bsh.styled
│   │   │   │   ├── 199Numbers.bsh
│   │   │   │   ├── 199Numbers.bsh.folded
│   │   │   │   ├── 199Numbers.bsh.styled
│   │   │   │   ├── 202LineStartOption.bsh
│   │   │   │   ├── 202LineStartOption.bsh.folded
│   │   │   │   ├── 202LineStartOption.bsh.styled
│   │   │   │   ├── 203TestOption.bsh
│   │   │   │   ├── 203TestOption.bsh.folded
│   │   │   │   ├── 203TestOption.bsh.styled
│   │   │   │   ├── AllStyles.bsh
│   │   │   │   ├── AllStyles.bsh.folded
│   │   │   │   ├── AllStyles.bsh.styled
│   │   │   │   ├── Issue180.bsh
│   │   │   │   ├── Issue180.bsh.folded
│   │   │   │   ├── Issue180.bsh.styled
│   │   │   │   ├── Issue182.bsh
│   │   │   │   ├── Issue182.bsh.folded
│   │   │   │   ├── Issue182.bsh.styled
│   │   │   │   ├── Issue184.bsh
│   │   │   │   ├── Issue184.bsh.folded
│   │   │   │   ├── Issue184.bsh.styled
│   │   │   │   ├── Issue184Copy.bsh
│   │   │   │   ├── Issue184Copy.bsh.folded
│   │   │   │   ├── Issue184Copy.bsh.styled
│   │   │   │   ├── Nested.bsh
│   │   │   │   ├── Nested.bsh.folded
│   │   │   │   ├── Nested.bsh.styled
│   │   │   │   ├── NestedRich.bsh
│   │   │   │   ├── NestedRich.bsh.folded
│   │   │   │   ├── NestedRich.bsh.styled
│   │   │   │   ├── NestedStyledInside.bsh
│   │   │   │   ├── NestedStyledInside.bsh.folded
│   │   │   │   ├── NestedStyledInside.bsh.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── continuation.bsh
│   │   │   │   ├── continuation.bsh.folded
│   │   │   │   ├── continuation.bsh.styled
│   │   │   │   ├── hash.zsh
│   │   │   │   ├── hash.zsh.folded
│   │   │   │   ├── hash.zsh.styled
│   │   │   │   ├── x.bsh
│   │   │   │   ├── x.bsh.folded
│   │   │   │   └── x.bsh.styled
│   │   │   ├── batch/
│   │   │   │   ├── Issue115.bat
│   │   │   │   ├── Issue115.bat.folded
│   │   │   │   ├── Issue115.bat.styled
│   │   │   │   ├── Issue222.bat
│   │   │   │   ├── Issue222.bat.folded
│   │   │   │   ├── Issue222.bat.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.bat
│   │   │   │   ├── x.bat.folded
│   │   │   │   └── x.bat.styled
│   │   │   ├── caml/
│   │   │   │   ├── AllStyles.ml
│   │   │   │   ├── AllStyles.ml.folded
│   │   │   │   ├── AllStyles.ml.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── cmake/
│   │   │   │   ├── Bug77_0.cmake
│   │   │   │   ├── Bug77_0.cmake.folded
│   │   │   │   ├── Bug77_0.cmake.styled
│   │   │   │   ├── Bug77_1.cmake
│   │   │   │   ├── Bug77_1.cmake.folded
│   │   │   │   ├── Bug77_1.cmake.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── cobol/
│   │   │   │   ├── 229.cob
│   │   │   │   ├── 229.cob.folded
│   │   │   │   ├── 229.cob.styled
│   │   │   │   ├── 230.cob
│   │   │   │   ├── 230.cob.folded
│   │   │   │   ├── 230.cob.styled
│   │   │   │   ├── 231.cob
│   │   │   │   ├── 231.cob.folded
│   │   │   │   ├── 231.cob.styled
│   │   │   │   ├── AllStyles.cob
│   │   │   │   ├── AllStyles.cob.folded
│   │   │   │   ├── AllStyles.cob.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── cpp/
│   │   │   │   ├── 130NonAsciiKeyword.cxx
│   │   │   │   ├── 130NonAsciiKeyword.cxx.folded
│   │   │   │   ├── 130NonAsciiKeyword.cxx.styled
│   │   │   │   ├── 149KeywordCase.cxx
│   │   │   │   ├── 149KeywordCase.cxx.folded
│   │   │   │   ├── 149KeywordCase.cxx.styled
│   │   │   │   ├── 94Template.cxx
│   │   │   │   ├── 94Template.cxx.folded
│   │   │   │   ├── 94Template.cxx.styled
│   │   │   │   ├── AllStyles.cxx
│   │   │   │   ├── AllStyles.cxx.folded
│   │   │   │   ├── AllStyles.cxx.styled
│   │   │   │   ├── Bug2245.cxx
│   │   │   │   ├── Bug2245.cxx.folded
│   │   │   │   ├── Bug2245.cxx.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.cxx
│   │   │   │   ├── x.cxx.folded
│   │   │   │   └── x.cxx.styled
│   │   │   ├── css/
│   │   │   │   ├── AllStyles.css
│   │   │   │   ├── AllStyles.css.folded
│   │   │   │   ├── AllStyles.css.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── d/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.d
│   │   │   │   ├── x.d.folded
│   │   │   │   └── x.d.styled
│   │   │   ├── diff/
│   │   │   │   ├── AllStyles.diff
│   │   │   │   ├── AllStyles.diff.folded
│   │   │   │   ├── AllStyles.diff.styled
│   │   │   │   ├── LongLine.diff
│   │   │   │   ├── LongLine.diff.folded
│   │   │   │   ├── LongLine.diff.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── erlang/
│   │   │   │   ├── AllStyles.erl
│   │   │   │   ├── AllStyles.erl.folded
│   │   │   │   ├── AllStyles.erl.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── errorlist/
│   │   │   │   ├── AllStyles.err
│   │   │   │   ├── AllStyles.err.folded
│   │   │   │   ├── AllStyles.err.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── fortran/
│   │   │   │   ├── AllStyles.f
│   │   │   │   ├── AllStyles.f.folded
│   │   │   │   ├── AllStyles.f.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── fsharp/
│   │   │   │   ├── FmtSpecs.fs
│   │   │   │   ├── FmtSpecs.fs.folded
│   │   │   │   ├── FmtSpecs.fs.styled
│   │   │   │   ├── Issue56.fs
│   │   │   │   ├── Issue56.fs.folded
│   │   │   │   ├── Issue56.fs.styled
│   │   │   │   ├── Issue93.fs
│   │   │   │   ├── Issue93.fs.folded
│   │   │   │   ├── Issue93.fs.styled
│   │   │   │   ├── Literals.fs
│   │   │   │   ├── Literals.fs.folded
│   │   │   │   ├── Literals.fs.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.fs
│   │   │   │   ├── x.fs.folded
│   │   │   │   └── x.fs.styled
│   │   │   ├── gdscript/
│   │   │   │   ├── AllStyles.gd
│   │   │   │   ├── AllStyles.gd.folded
│   │   │   │   ├── AllStyles.gd.styled
│   │   │   │   ├── NodePath.gd
│   │   │   │   ├── NodePath.gd.folded
│   │   │   │   ├── NodePath.gd.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── gui4cli/
│   │   │   │   ├── AllStyles.gui
│   │   │   │   ├── AllStyles.gui.folded
│   │   │   │   ├── AllStyles.gui.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── hypertext/
│   │   │   │   ├── Bug2207.html
│   │   │   │   ├── Bug2207.html.folded
│   │   │   │   ├── Bug2207.html.styled
│   │   │   │   ├── Bug2219.html
│   │   │   │   ├── Bug2219.html.folded
│   │   │   │   ├── Bug2219.html.styled
│   │   │   │   ├── Issue19.php
│   │   │   │   ├── Issue19.php.folded
│   │   │   │   ├── Issue19.php.styled
│   │   │   │   ├── Issue192.html
│   │   │   │   ├── Issue192.html.folded
│   │   │   │   ├── Issue192.html.styled
│   │   │   │   ├── Issue20Numbers.php
│   │   │   │   ├── Issue20Numbers.php.folded
│   │   │   │   ├── Issue20Numbers.php.styled
│   │   │   │   ├── Issue47.html
│   │   │   │   ├── Issue47.html.folded
│   │   │   │   ├── Issue47.html.styled
│   │   │   │   ├── Issue53.html
│   │   │   │   ├── Issue53.html.folded
│   │   │   │   ├── Issue53.html.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── ServerBasic.aspx
│   │   │   │   ├── ServerBasic.aspx.folded
│   │   │   │   ├── ServerBasic.aspx.styled
│   │   │   │   ├── ServerJavaScript.aspx
│   │   │   │   ├── ServerJavaScript.aspx.folded
│   │   │   │   ├── ServerJavaScript.aspx.styled
│   │   │   │   ├── apostophe.php
│   │   │   │   ├── apostophe.php.folded
│   │   │   │   ├── apostophe.php.styled
│   │   │   │   ├── comment.html
│   │   │   │   ├── comment.html.folded
│   │   │   │   ├── comment.html.styled
│   │   │   │   ├── mako.html
│   │   │   │   ├── mako.html.folded
│   │   │   │   ├── mako.html.styled
│   │   │   │   ├── x.asp
│   │   │   │   ├── x.asp.folded
│   │   │   │   ├── x.asp.styled
│   │   │   │   ├── x.html
│   │   │   │   ├── x.html.folded
│   │   │   │   ├── x.html.styled
│   │   │   │   ├── x.php
│   │   │   │   ├── x.php.folded
│   │   │   │   └── x.php.styled
│   │   │   ├── inno/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.iss
│   │   │   │   ├── x.iss.folded
│   │   │   │   └── x.iss.styled
│   │   │   ├── json/
│   │   │   │   ├── AllStyles.json
│   │   │   │   ├── AllStyles.json.folded
│   │   │   │   ├── AllStyles.json.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── julia/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.jl
│   │   │   │   ├── x.jl.folded
│   │   │   │   └── x.jl.styled
│   │   │   ├── latex/
│   │   │   │   ├── AllStyles.tex
│   │   │   │   ├── AllStyles.tex.folded
│   │   │   │   ├── AllStyles.tex.styled
│   │   │   │   ├── Feature1358.tex
│   │   │   │   ├── Feature1358.tex.folded
│   │   │   │   ├── Feature1358.tex.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── lua/
│   │   │   │   ├── AllStyles.lua
│   │   │   │   ├── AllStyles.lua.folded
│   │   │   │   ├── AllStyles.lua.styled
│   │   │   │   ├── Bug2205.lua
│   │   │   │   ├── Bug2205.lua.folded
│   │   │   │   ├── Bug2205.lua.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── folding.lua
│   │   │   │   ├── folding.lua.folded
│   │   │   │   ├── folding.lua.styled
│   │   │   │   ├── x.lua
│   │   │   │   ├── x.lua.folded
│   │   │   │   └── x.lua.styled
│   │   │   ├── makefile/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── longline.mak
│   │   │   │   ├── longline.mak.folded
│   │   │   │   ├── longline.mak.styled
│   │   │   │   ├── x.mak
│   │   │   │   ├── x.mak.folded
│   │   │   │   └── x.mak.styled
│   │   │   ├── markdown/
│   │   │   │   ├── AllStyles.md
│   │   │   │   ├── AllStyles.md.folded
│   │   │   │   ├── AllStyles.md.styled
│   │   │   │   ├── Bug1216.md
│   │   │   │   ├── Bug1216.md.folded
│   │   │   │   ├── Bug1216.md.styled
│   │   │   │   ├── Bug2235.md
│   │   │   │   ├── Bug2235.md.folded
│   │   │   │   ├── Bug2235.md.styled
│   │   │   │   ├── Bug2247.md
│   │   │   │   ├── Bug2247.md.folded
│   │   │   │   ├── Bug2247.md.styled
│   │   │   │   ├── HeaderEOLFill_0.md
│   │   │   │   ├── HeaderEOLFill_0.md.folded
│   │   │   │   ├── HeaderEOLFill_0.md.styled
│   │   │   │   ├── HeaderEOLFill_1.md
│   │   │   │   ├── HeaderEOLFill_1.md.folded
│   │   │   │   ├── HeaderEOLFill_1.md.styled
│   │   │   │   ├── Issue117.md
│   │   │   │   ├── Issue117.md.folded
│   │   │   │   ├── Issue117.md.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── matlab/
│   │   │   │   ├── AllStyles.m.matlab
│   │   │   │   ├── AllStyles.m.matlab.folded
│   │   │   │   ├── AllStyles.m.matlab.styled
│   │   │   │   ├── AllStyles.m.octave
│   │   │   │   ├── AllStyles.m.octave.folded
│   │   │   │   ├── AllStyles.m.octave.styled
│   │   │   │   ├── ArgumentsBlock.m.matlab
│   │   │   │   ├── ArgumentsBlock.m.matlab.folded
│   │   │   │   ├── ArgumentsBlock.m.matlab.styled
│   │   │   │   ├── ClassDefinition.m.matlab
│   │   │   │   ├── ClassDefinition.m.matlab.folded
│   │   │   │   ├── ClassDefinition.m.matlab.styled
│   │   │   │   ├── FoldPoints.m.matlab
│   │   │   │   ├── FoldPoints.m.matlab.folded
│   │   │   │   ├── FoldPoints.m.matlab.styled
│   │   │   │   ├── Issue18_EscapeSequence.m.matlab
│   │   │   │   ├── Issue18_EscapeSequence.m.matlab.folded
│   │   │   │   ├── Issue18_EscapeSequence.m.matlab.styled
│   │   │   │   ├── Issue18_EscapeSequence.m.octave
│   │   │   │   ├── Issue18_EscapeSequence.m.octave.folded
│   │   │   │   ├── Issue18_EscapeSequence.m.octave.styled
│   │   │   │   ├── NumericLiterals.m.matlab
│   │   │   │   ├── NumericLiterals.m.matlab.folded
│   │   │   │   ├── NumericLiterals.m.matlab.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── mmixal/
│   │   │   │   ├── AllStyles.mms
│   │   │   │   ├── AllStyles.mms.folded
│   │   │   │   ├── AllStyles.mms.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── references.mms
│   │   │   │   ├── references.mms.folded
│   │   │   │   ├── references.mms.styled
│   │   │   │   ├── x.mms
│   │   │   │   ├── x.mms.folded
│   │   │   │   └── x.mms.styled
│   │   │   ├── modula/
│   │   │   │   ├── 128Endless.m3
│   │   │   │   ├── 128Endless.m3.folded
│   │   │   │   ├── 128Endless.m3.styled
│   │   │   │   ├── Issue129.m3
│   │   │   │   ├── Issue129.m3.folded
│   │   │   │   ├── Issue129.m3.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── mssql/
│   │   │   │   ├── AllStyles.tsql
│   │   │   │   ├── AllStyles.tsql.folded
│   │   │   │   ├── AllStyles.tsql.styled
│   │   │   │   ├── Issue87.tsql
│   │   │   │   ├── Issue87.tsql.folded
│   │   │   │   ├── Issue87.tsql.styled
│   │   │   │   ├── Issue90.tsql
│   │   │   │   ├── Issue90.tsql.folded
│   │   │   │   ├── Issue90.tsql.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── Various.tsql
│   │   │   │   ├── Various.tsql.folded
│   │   │   │   └── Various.tsql.styled
│   │   │   ├── mysql/
│   │   │   │   ├── AllStyles.sql
│   │   │   │   ├── AllStyles.sql.folded
│   │   │   │   ├── AllStyles.sql.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── nim/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.nim
│   │   │   │   ├── x.nim.folded
│   │   │   │   └── x.nim.styled
│   │   │   ├── perl/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── perl-test-5220delta.pl
│   │   │   │   ├── perl-test-5220delta.pl.folded
│   │   │   │   ├── perl-test-5220delta.pl.styled
│   │   │   │   ├── perl-test-sub-prototypes.pl
│   │   │   │   ├── perl-test-sub-prototypes.pl.folded
│   │   │   │   ├── perl-test-sub-prototypes.pl.styled
│   │   │   │   ├── x.pl
│   │   │   │   ├── x.pl.folded
│   │   │   │   └── x.pl.styled
│   │   │   ├── powershell/
│   │   │   │   ├── AllStyles.ps1
│   │   │   │   ├── AllStyles.ps1.folded
│   │   │   │   ├── AllStyles.ps1.styled
│   │   │   │   ├── CharacterTruncation.ps1
│   │   │   │   ├── CharacterTruncation.ps1.folded
│   │   │   │   ├── CharacterTruncation.ps1.styled
│   │   │   │   ├── NumericLiterals.ps1
│   │   │   │   ├── NumericLiterals.ps1.folded
│   │   │   │   ├── NumericLiterals.ps1.styled
│   │   │   │   ├── Pull92.ps1
│   │   │   │   ├── Pull92.ps1.folded
│   │   │   │   ├── Pull92.ps1.styled
│   │   │   │   ├── Pull99Comment.ps1
│   │   │   │   ├── Pull99Comment.ps1.folded
│   │   │   │   ├── Pull99Comment.ps1.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── props/
│   │   │   │   ├── Issue96Folding.props
│   │   │   │   ├── Issue96Folding.props.folded
│   │   │   │   ├── Issue96Folding.props.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── example.session
│   │   │   │   ├── example.session.folded
│   │   │   │   └── example.session.styled
│   │   │   ├── python/
│   │   │   │   ├── AllStyles.py
│   │   │   │   ├── AllStyles.py.folded
│   │   │   │   ├── AllStyles.py.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── attributes/
│   │   │   │   │   ├── SciTE.properties
│   │   │   │   │   ├── attributes.py
│   │   │   │   │   ├── attributes.py.folded
│   │   │   │   │   └── attributes.py.styled
│   │   │   │   ├── f-strings.py
│   │   │   │   ├── f-strings.py.folded
│   │   │   │   ├── f-strings.py.styled
│   │   │   │   ├── matchcase.py
│   │   │   │   ├── matchcase.py.folded
│   │   │   │   ├── matchcase.py.styled
│   │   │   │   ├── strings.py
│   │   │   │   ├── strings.py.folded
│   │   │   │   ├── strings.py.styled
│   │   │   │   ├── x.py
│   │   │   │   ├── x.py.folded
│   │   │   │   └── x.py.styled
│   │   │   ├── r/
│   │   │   │   ├── 102Backticks.r
│   │   │   │   ├── 102Backticks.r.folded
│   │   │   │   ├── 102Backticks.r.styled
│   │   │   │   ├── AllStyles.r
│   │   │   │   ├── AllStyles.r.folded
│   │   │   │   ├── AllStyles.r.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── raku/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.p6
│   │   │   │   ├── x.p6.folded
│   │   │   │   └── x.p6.styled
│   │   │   ├── ruby/
│   │   │   │   ├── 225NumberDotMethod.rb
│   │   │   │   ├── 225NumberDotMethod.rb.folded
│   │   │   │   ├── 225NumberDotMethod.rb.styled
│   │   │   │   ├── 234HereDoc.rb
│   │   │   │   ├── 234HereDoc.rb.folded
│   │   │   │   ├── 234HereDoc.rb.styled
│   │   │   │   ├── AllStyles.rb
│   │   │   │   ├── AllStyles.rb.folded
│   │   │   │   ├── AllStyles.rb.styled
│   │   │   │   ├── Issue132.rb
│   │   │   │   ├── Issue132.rb.folded
│   │   │   │   ├── Issue132.rb.styled
│   │   │   │   ├── Issue135.rb
│   │   │   │   ├── Issue135.rb.folded
│   │   │   │   ├── Issue135.rb.styled
│   │   │   │   ├── Issue136.rb
│   │   │   │   ├── Issue136.rb.folded
│   │   │   │   ├── Issue136.rb.styled
│   │   │   │   ├── Issue140.rb
│   │   │   │   ├── Issue140.rb.folded
│   │   │   │   ├── Issue140.rb.styled
│   │   │   │   ├── Issue65.rb
│   │   │   │   ├── Issue65.rb.folded
│   │   │   │   ├── Issue65.rb.styled
│   │   │   │   ├── Issue66.rb
│   │   │   │   ├── Issue66.rb.folded
│   │   │   │   ├── Issue66.rb.styled
│   │   │   │   ├── Issue67.rb
│   │   │   │   ├── Issue67.rb.folded
│   │   │   │   ├── Issue67.rb.styled
│   │   │   │   ├── Issue69.rb
│   │   │   │   ├── Issue69.rb.folded
│   │   │   │   ├── Issue69.rb.styled
│   │   │   │   ├── PercentEquals124.rb
│   │   │   │   ├── PercentEquals124.rb.folded
│   │   │   │   ├── PercentEquals124.rb.styled
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.rb
│   │   │   │   ├── x.rb.folded
│   │   │   │   └── x.rb.styled
│   │   │   ├── rust/
│   │   │   │   ├── Issue239.rs
│   │   │   │   ├── Issue239.rs.folded
│   │   │   │   ├── Issue239.rs.styled
│   │   │   │   ├── Issue33.rs
│   │   │   │   ├── Issue33.rs.folded
│   │   │   │   ├── Issue33.rs.styled
│   │   │   │   ├── Issue34.rs
│   │   │   │   ├── Issue34.rs.folded
│   │   │   │   ├── Issue34.rs.styled
│   │   │   │   ├── Issue35.rs
│   │   │   │   ├── Issue35.rs.folded
│   │   │   │   ├── Issue35.rs.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── sql/
│   │   │   │   ├── AllStyles.sql
│   │   │   │   ├── AllStyles.sql.folded
│   │   │   │   ├── AllStyles.sql.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── tcl/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.tcl
│   │   │   │   ├── x.tcl.folded
│   │   │   │   └── x.tcl.styled
│   │   │   ├── vb/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.vb
│   │   │   │   ├── x.vb.folded
│   │   │   │   └── x.vb.styled
│   │   │   ├── verilog/
│   │   │   │   ├── AllStyles.vh
│   │   │   │   ├── AllStyles.vh.folded
│   │   │   │   ├── AllStyles.vh.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── vhdl/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── x.vhd
│   │   │   │   ├── x.vhd.folded
│   │   │   │   └── x.vhd.styled
│   │   │   ├── visualprolog/
│   │   │   │   ├── AllStyles.pl
│   │   │   │   ├── AllStyles.pl.folded
│   │   │   │   ├── AllStyles.pl.styled
│   │   │   │   ├── AllStyles.pro
│   │   │   │   ├── AllStyles.pro.folded
│   │   │   │   ├── AllStyles.pro.styled
│   │   │   │   └── SciTE.properties
│   │   │   ├── x12/
│   │   │   │   ├── SciTE.properties
│   │   │   │   ├── empty.x12
│   │   │   │   ├── empty.x12.folded
│   │   │   │   ├── empty.x12.styled
│   │   │   │   ├── x.x12
│   │   │   │   ├── x.x12.folded
│   │   │   │   └── x.x12.styled
│   │   │   └── yaml/
│   │   │       ├── SciTE.properties
│   │   │       ├── longline.yaml
│   │   │       ├── longline.yaml.folded
│   │   │       ├── longline.yaml.styled
│   │   │       ├── x.yaml
│   │   │       ├── x.yaml.folded
│   │   │       └── x.yaml.styled
│   │   ├── makefile
│   │   ├── testlexers.mak
│   │   └── unit/
│   │       ├── LICENSE_1_0.txt
│   │       ├── README
│   │       ├── Sci.natvis
│   │       ├── SciTE.properties
│   │       ├── UnitTester.cxx
│   │       ├── UnitTester.vcxproj
│   │       ├── catch.hpp
│   │       ├── makefile
│   │       ├── test.mak
│   │       ├── testCharacterSet.cxx
│   │       ├── testInList.cxx
│   │       ├── testLexerSimple.cxx
│   │       ├── testOptionSet.cxx
│   │       ├── testPropSetSimple.cxx
│   │       ├── testSparseState.cxx
│   │       ├── testWordList.cxx
│   │       └── unitTest.cxx
│   ├── tgzsrc
│   ├── version.txt
│   └── zipsrc.bat
├── makedb/
│   ├── CMakeLists.txt
│   ├── cs2sq.cpp
│   ├── cs2sq.h
│   ├── cscommon.h
│   ├── csdbheader.cpp
│   ├── csdbheader.h
│   ├── csdbparser.cpp
│   ├── csdbparser.h
│   ├── ctagread.cpp
│   ├── ctagread.h
│   ├── main.cpp
│   ├── sqlbase.cpp
│   ├── sqlbase.h
│   └── swver.h
├── querylib/
│   ├── CMakeLists.txt
│   ├── README.txt
│   ├── getopt2.cpp
│   ├── getopt2.h
│   ├── small_lib.cpp
│   ├── small_lib.h
│   ├── sqlquery.cpp
│   └── sqlquery.h
├── release.json
├── scintilla/
│   ├── .editorconfig
│   ├── .hg_archival.txt
│   ├── .hgeol
│   ├── .hgignore
│   ├── .hgtags
│   ├── CONTRIBUTING
│   ├── License.txt
│   ├── README
│   ├── call/
│   │   └── ScintillaCall.cxx
│   ├── cocoa/
│   │   ├── InfoBar.h
│   │   ├── InfoBar.mm
│   │   ├── InfoBarCommunicator.h
│   │   ├── PlatCocoa.h
│   │   ├── PlatCocoa.mm
│   │   ├── QuartzTextLayout.h
│   │   ├── QuartzTextStyle.h
│   │   ├── QuartzTextStyleAttribute.h
│   │   ├── Scintilla/
│   │   │   ├── Info.plist
│   │   │   ├── Scintilla.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── project.xcworkspace/
│   │   │   │       ├── contents.xcworkspacedata
│   │   │   │       └── xcshareddata/
│   │   │   │           └── IDEWorkspaceChecks.plist
│   │   │   └── module.modulemap
│   │   ├── ScintillaCocoa.h
│   │   ├── ScintillaCocoa.mm
│   │   ├── ScintillaTest/
│   │   │   ├── AppController.h
│   │   │   ├── AppController.mm
│   │   │   ├── Info.plist
│   │   │   ├── Scintilla-Info.plist
│   │   │   ├── ScintillaTest.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── project.xcworkspace/
│   │   │   │       ├── contents.xcworkspacedata
│   │   │   │       └── xcshareddata/
│   │   │   │           └── IDEWorkspaceChecks.plist
│   │   │   ├── ScintillaTest_Prefix.pch
│   │   │   ├── TestData.sql
│   │   │   ├── en.lproj/
│   │   │   │   ├── InfoPlist.strings
│   │   │   │   └── MainMenu.xib
│   │   │   └── main.m
│   │   ├── ScintillaView.h
│   │   ├── ScintillaView.mm
│   │   └── checkbuildosx.sh
│   ├── cppcheck.suppress
│   ├── delbin.bat
│   ├── doc/
│   │   ├── AddSource.txt
│   │   ├── Design.html
│   │   ├── Icons.html
│   │   ├── Lexer.txt
│   │   ├── Privacy.html
│   │   ├── SciCoding.html
│   │   ├── Scintilla5Migration.html
│   │   ├── ScintillaDoc.html
│   │   ├── ScintillaDownload.html
│   │   ├── ScintillaHistory.html
│   │   ├── ScintillaRelated.html
│   │   ├── ScintillaToDo.html
│   │   ├── ScintillaUsage.html
│   │   ├── Steps.html
│   │   ├── StyleMetadata.html
│   │   └── index.html
│   ├── gtk/
│   │   ├── Converter.h
│   │   ├── DepGen.py
│   │   ├── PlatGTK.cxx
│   │   ├── ScintillaGTK.cxx
│   │   ├── ScintillaGTK.h
│   │   ├── ScintillaGTKAccessible.cxx
│   │   ├── ScintillaGTKAccessible.h
│   │   ├── Wrappers.h
│   │   ├── deps.mak
│   │   ├── makefile
│   │   ├── scintilla-marshal.c
│   │   ├── scintilla-marshal.h
│   │   └── scintilla-marshal.list
│   ├── include/
│   │   ├── ILexer.h
│   │   ├── ILoader.h
│   │   ├── Sci_Position.h
│   │   ├── Scintilla.h
│   │   ├── Scintilla.iface
│   │   ├── ScintillaCall.h
│   │   ├── ScintillaMessages.h
│   │   ├── ScintillaStructures.h
│   │   ├── ScintillaTypes.h
│   │   └── ScintillaWidget.h
│   ├── qt/
│   │   ├── README
│   │   ├── ScintillaEdit/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── ScintillaDocument.cpp
│   │   │   ├── ScintillaDocument.h
│   │   │   ├── ScintillaEdit.cpp
│   │   │   ├── ScintillaEdit.cpp.template
│   │   │   ├── ScintillaEdit.h
│   │   │   ├── ScintillaEdit.h.template
│   │   │   ├── ScintillaEdit.pro
│   │   │   └── WidgetGen.py
│   │   └── ScintillaEditBase/
│   │       ├── Notes.txt
│   │       ├── PlatQt.cpp
│   │       ├── PlatQt.h
│   │       ├── ScintillaEditBase.cpp
│   │       ├── ScintillaEditBase.h
│   │       ├── ScintillaEditBase.pro
│   │       ├── ScintillaQt.cpp
│   │       └── ScintillaQt.h
│   ├── scripts/
│   │   ├── CheckMentioned.py
│   │   ├── Dependencies.py
│   │   ├── Face.py
│   │   ├── FileGenerator.py
│   │   ├── GenerateCaseConvert.py
│   │   ├── GenerateCharacterCategory.py
│   │   ├── HFacer.py
│   │   ├── HeaderCheck.py
│   │   ├── HeaderOrder.txt
│   │   ├── LexGen.py
│   │   ├── ScintillaAPIFacer.py
│   │   ├── ScintillaData.py
│   │   ├── __init__.py
│   │   └── archive.sh
│   ├── src/
│   │   ├── AutoComplete.cxx
│   │   ├── AutoComplete.h
│   │   ├── CallTip.cxx
│   │   ├── CallTip.h
│   │   ├── CaseConvert.cxx
│   │   ├── CaseConvert.h
│   │   ├── CaseFolder.cxx
│   │   ├── CaseFolder.h
│   │   ├── CellBuffer.cxx
│   │   ├── CellBuffer.h
│   │   ├── ChangeHistory.cxx
│   │   ├── ChangeHistory.h
│   │   ├── CharClassify.cxx
│   │   ├── CharClassify.h
│   │   ├── CharacterCategoryMap.cxx
│   │   ├── CharacterCategoryMap.h
│   │   ├── CharacterType.cxx
│   │   ├── CharacterType.h
│   │   ├── ContractionState.cxx
│   │   ├── ContractionState.h
│   │   ├── DBCS.cxx
│   │   ├── DBCS.h
│   │   ├── Debugging.h
│   │   ├── Decoration.cxx
│   │   ├── Decoration.h
│   │   ├── Document.cxx
│   │   ├── Document.h
│   │   ├── EditModel.cxx
│   │   ├── EditModel.h
│   │   ├── EditView.cxx
│   │   ├── EditView.h
│   │   ├── Editor.cxx
│   │   ├── Editor.h
│   │   ├── ElapsedPeriod.h
│   │   ├── Geometry.cxx
│   │   ├── Geometry.h
│   │   ├── Indicator.cxx
│   │   ├── Indicator.h
│   │   ├── KeyMap.cxx
│   │   ├── KeyMap.h
│   │   ├── LineMarker.cxx
│   │   ├── LineMarker.h
│   │   ├── MarginView.cxx
│   │   ├── MarginView.h
│   │   ├── Partitioning.h
│   │   ├── PerLine.cxx
│   │   ├── PerLine.h
│   │   ├── Platform.h
│   │   ├── Position.h
│   │   ├── PositionCache.cxx
│   │   ├── PositionCache.h
│   │   ├── RESearch.cxx
│   │   ├── RESearch.h
│   │   ├── RunStyles.cxx
│   │   ├── RunStyles.h
│   │   ├── SciTE.properties
│   │   ├── ScintillaBase.cxx
│   │   ├── ScintillaBase.h
│   │   ├── Selection.cxx
│   │   ├── Selection.h
│   │   ├── SparseVector.h
│   │   ├── SplitVector.h
│   │   ├── Style.cxx
│   │   ├── Style.h
│   │   ├── UndoHistory.cxx
│   │   ├── UndoHistory.h
│   │   ├── UniConversion.cxx
│   │   ├── UniConversion.h
│   │   ├── UniqueString.cxx
│   │   ├── UniqueString.h
│   │   ├── ViewStyle.cxx
│   │   ├── ViewStyle.h
│   │   ├── XPM.cxx
│   │   └── XPM.h
│   ├── test/
│   │   ├── MessageNumbers.py
│   │   ├── README
│   │   ├── ScintillaCallable.py
│   │   ├── XiteMenu.py
│   │   ├── XiteWin.py
│   │   ├── gi/
│   │   │   ├── Scintilla-0.1.gir.good
│   │   │   ├── filter-scintilla-h.py
│   │   │   ├── gi-test.py
│   │   │   └── makefile
│   │   ├── performanceTests.py
│   │   ├── simpleTests.py
│   │   ├── unit/
│   │   │   ├── LICENSE_1_0.txt
│   │   │   ├── README
│   │   │   ├── Sci.natvis
│   │   │   ├── SciTE.properties
│   │   │   ├── UnitTester.cxx
│   │   │   ├── UnitTester.vcxproj
│   │   │   ├── catch.hpp
│   │   │   ├── makefile
│   │   │   ├── test.mak
│   │   │   ├── testCellBuffer.cxx
│   │   │   ├── testCharClassify.cxx
│   │   │   ├── testCharacterCategoryMap.cxx
│   │   │   ├── testContractionState.cxx
│   │   │   ├── testDecoration.cxx
│   │   │   ├── testDocument.cxx
│   │   │   ├── testGeometry.cxx
│   │   │   ├── testPartitioning.cxx
│   │   │   ├── testPerLine.cxx
│   │   │   ├── testRESearch.cxx
│   │   │   ├── testRunStyles.cxx
│   │   │   ├── testSparseVector.cxx
│   │   │   ├── testSplitVector.cxx
│   │   │   ├── testUniConversion.cxx
│   │   │   └── unitTest.cxx
│   │   ├── win32Tests.py
│   │   └── xite.py
│   ├── tgzsrc
│   ├── version.txt
│   ├── win32/
│   │   ├── DepGen.py
│   │   ├── HanjaDic.cxx
│   │   ├── HanjaDic.h
│   │   ├── PlatWin.cxx
│   │   ├── PlatWin.h
│   │   ├── SciTE.properties
│   │   ├── ScintRes.rc
│   │   ├── Scintilla.def
│   │   ├── Scintilla.vcxproj
│   │   ├── ScintillaDLL.cxx
│   │   ├── ScintillaWin.cxx
│   │   ├── ScintillaWin.h
│   │   ├── WinTypes.h
│   │   ├── deps.mak
│   │   ├── makefile
│   │   ├── nmdeps.mak
│   │   └── scintilla.mak
│   └── zipsrc.bat
├── showgraph/
│   ├── CMakeLists.txt
│   ├── Graph/
│   │   ├── README.txt
│   │   ├── agraph.h
│   │   ├── edge.cpp
│   │   ├── edge.h
│   │   ├── edge_inline.h
│   │   ├── graph.cpp
│   │   ├── graph.h
│   │   ├── graph_iface.h
│   │   ├── graph_inline.h
│   │   ├── marker.h
│   │   ├── node.cpp
│   │   ├── node.h
│   │   ├── node_inline.h
│   │   ├── node_iter.h
│   │   ├── num.h
│   │   └── predecls.h
│   ├── GraphView/
│   │   ├── edge_helper.cpp
│   │   ├── edge_helper.h
│   │   ├── edge_item.cpp
│   │   ├── edge_item.h
│   │   ├── graph_view.cpp
│   │   ├── graph_view.h
│   │   ├── gstyle.h
│   │   ├── gview_iface.h
│   │   ├── gview_impl.h
│   │   ├── navigation.cpp
│   │   ├── navigation.h
│   │   ├── node_item.cpp
│   │   ├── node_item.h
│   │   ├── style_edit.cpp
│   │   ├── style_edit.h
│   │   ├── visible_edge.cpp
│   │   └── visible_edge.h
│   ├── LICENSE.txt
│   ├── Layout/
│   │   ├── aux_edge.h
│   │   ├── aux_graph.cpp
│   │   ├── aux_graph.h
│   │   ├── aux_node.h
│   │   ├── layout.cpp
│   │   ├── layout_iface.h
│   │   ├── node_group.cpp
│   │   └── node_group.h
│   ├── README.txt
│   ├── Utils/
│   │   ├── asrt.h
│   │   ├── conf.cpp
│   │   ├── conf.h
│   │   ├── conf_utest.cpp
│   │   ├── list.h
│   │   ├── list_utest.cpp
│   │   ├── mem.h
│   │   ├── mem_chunk.h
│   │   ├── mem_entry.h
│   │   ├── mem_fixed_pool.h
│   │   ├── mem_mgr.cpp
│   │   ├── mem_mgr.h
│   │   ├── mem_obj.h
│   │   ├── mem_pool.cpp
│   │   ├── mem_pool.h
│   │   ├── mem_ref.h
│   │   ├── mem_utest.cpp
│   │   ├── misc.h
│   │   ├── print.h
│   │   ├── singleton.h
│   │   ├── ulist.h
│   │   ├── utils.cpp
│   │   ├── utils_iface.h
│   │   └── utils_utest.cpp
│   ├── core_iface.h
│   ├── showgraph.cpp
│   └── showgraph.h
└── windows-install/
    ├── qt5/
    │   ├── buildqt5.bat
    │   ├── buildqt5_github.bat
    │   ├── codequeryqt5.wxs
    │   ├── packqt5_github.bat
    │   └── testqt5_github.bat
    ├── qt6/
    │   ├── buildqt6.bat
    │   ├── buildqt6_github.bat
    │   ├── codequeryqt661.wxs
    │   ├── codequeryqt671.wxs
    │   ├── codequeryqt690.wxs
    │   ├── packqt6_github.bat
    │   └── testqt6_github.bat
    └── wincommon/
        ├── HOWTO-WINDOWS.txt
        ├── LICENSE.rtf
        ├── LICENSE.txt
        ├── README.txt
        └── uninstall.bat
Copy disabled (too large) Download .txt
Showing preview only (753,924K chars total). Download the full file to get everything.
SYMBOL INDEX (7545 symbols across 406 files)

FILE: cli/main_cli.cpp
  function printhelp (line 22) | void printhelp(const char* str)
  function printlicense (line 74) | void printlicense(void)
  function fileexists (line 81) | bool fileexists(const char* fn)
  function process_argwithopt (line 91) | void process_argwithopt(char* thisOpt, int option, bool& err, tStr& fnst...
  function tStr (line 109) | tStr limitcstr(int limitlen, tStr str)
  function process_query (line 117) | int process_query(tStr sqfn, tStr term, tStr param, bool exact,
  function main (line 215) | int main(int argc, char *argv[])

FILE: gui/aboutdialog.h
  function namespace (line 19) | namespace Ui {
  function class (line 23) | class cqDialogAbout : public QDialog

FILE: gui/fileviewer.cpp
  function filedata (line 103) | filedata& filedata::operator=(const filedata& fd)
  function QString (line 166) | QString fileviewer::checkFontFamily(QString fontname)

FILE: gui/fileviewer.h
  function class (line 26) | class filedata
  type langtypes (line 43) | enum langtypes
  function class (line 54) | class fileviewer : public QObject

FILE: gui/fileviewsettingsdialog.h
  function namespace (line 19) | namespace Ui {
  function class (line 25) | class cqDialogFileViewSettings : public QDialog

FILE: gui/graphdialog.h
  function namespace (line 19) | namespace Ui {
  function class (line 23) | class cqDialogGraph : public QDialog

FILE: gui/langtable.cpp
  function QStringList (line 33) | QStringList langtable::getLangNameList(void)
  function QString (line 44) | QString langtable::getLangFilePath(const QString& lang)

FILE: gui/langtable.h
  function class (line 20) | class langtable

FILE: gui/listhandler.h
  function class (line 23) | class listhandler : public QObject

FILE: gui/main_gui.cpp
  function main (line 20) | int main(int argc, char *argv[])

FILE: gui/mainwindow.cpp
  function QString (line 345) | QString mainwindow::checkForFileToOpen(void)

FILE: gui/mainwindow.h
  function namespace (line 19) | namespace Ui {
  function class (line 27) | class mainwindow : public QMainWindow

FILE: gui/searchhandler.cpp
  function searchitem (line 39) | searchitem& searchitem::operator=(const searchitem& otheritem)
  function sqlqueryresultlist (line 238) | sqlqueryresultlist searchhandler::search_funclist_qt_filename(QString fi...
  function sqlqueryresultlist (line 243) | sqlqueryresultlist searchhandler::search_funclist_qt_fileid(int fileid)
  function QStringList (line 248) | QStringList searchhandler::search_declaration_qt(QString searchtxt)
  function QStringList (line 266) | QStringList searchhandler::search_autocomplete_qt(QString searchtxt)
  function sqlqueryresultlist (line 565) | sqlqueryresultlist searchhandler::perform_grep(QString searchtxt, sqlque...
  function sqlqueryresultlist (line 596) | sqlqueryresultlist searchhandler::doGrep(const QPair<QString, int> &fp)
  function QString (line 800) | QString searchhandler::sqlerrormsg(sqlquery::en_filereadstatus status)

FILE: gui/searchhandler.h
  function class (line 23) | class searchitem
  function class (line 41) | class searchhandler : public QObject

FILE: gui/themes.cpp
  function QStringList (line 135) | QStringList themes::getThemesList(void)

FILE: gui/themes.h
  type lexstyle (line 21) | typedef struct
  function class (line 29) | class themes

FILE: gui/winmain.cpp
  function split_cmd_line (line 44) | vector<string> split_cmd_line()
  function WinMain (line 82) | int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

FILE: lexilla/access/LexillaAccess.cxx
  function T (line 45) | T FunctionPointer(Function function) noexcept {
  function WideStringFromUTF8 (line 54) | std::wstring WideStringFromUTF8(std::string_view sv) {
  type LexLibrary (line 75) | struct LexLibrary {
  function Function (line 87) | Function FindSymbol(Module m, const char *symbol) noexcept {
  function NameContainsDot (line 97) | bool NameContainsDot(std::string_view path) noexcept {
  function HasPrefix (line 108) | constexpr bool HasPrefix(std::string_view s, std::string_view prefix) no...

FILE: lexilla/access/LexillaAccess.h
  function namespace (line 12) | namespace Lexilla {

FILE: lexilla/examples/CheckLexilla/CheckLexilla.c
  type FARPROC (line 59) | typedef FARPROC Function;
  type HMODULE (line 60) | typedef HMODULE Module;
  function Function (line 66) | static Function FindSymbol(Module m, const char *symbol) {
  function main (line 74) | int main(int argc, char *argv[]) {

FILE: lexilla/examples/SimpleLexer/SimpleLexer.cxx
  class LexerSimple (line 49) | class LexerSimple : public LexerBase {
    method LexerSimple (line 51) | LexerSimple() {
    method Lex (line 53) | void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int i...
    method Fold (line 69) | void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int ...
    method ILexer5 (line 72) | static ILexer5 *LexerFactorySimple() {
  function EXPORT_FUNCTION (line 94) | EXPORT_FUNCTION int CALLING_CONVENTION GetLexerCount() {
  function EXPORT_FUNCTION (line 98) | EXPORT_FUNCTION void CALLING_CONVENTION GetLexerName(unsigned int index,...
  function EXPORT_FUNCTION (line 105) | EXPORT_FUNCTION LexerFactoryFunction CALLING_CONVENTION GetLexerFactory(...
  function CreateLexer (line 112) | CreateLexer(const char *name) {
  function EXPORT_FUNCTION (line 119) | EXPORT_FUNCTION const char * CALLING_CONVENTION GetNameSpace() {

FILE: lexilla/include/Lexilla.h
  type ILexer5 (line 48) | typedef void ILexer5;
  type ILexer5 (line 51) | typedef ILexer5 *(*LexerFactoryFunction)(void);
  type ILexer5 (line 60) | typedef ILexer5*(LEXILLA_CALL *CreateLexerFn)(const char *name);
  function namespace (line 101) | namespace Lexilla {

FILE: lexilla/lexers/LexA68k.cxx
  function IsIdentifierStart (line 47) | static inline bool IsIdentifierStart (const int ch)
  function IsIdentifierChar (line 59) | static inline bool IsIdentifierChar (const int ch)
  function GetOperatorType (line 74) | static inline int GetOperatorType (const int ch1, const int ch2)
  function IsBin (line 95) | static inline bool IsBin (const int ch)
  function IsDoxygenChar (line 107) | static inline bool IsDoxygenChar (const int ch)
  function ColouriseA68kDoc (line 119) | static void ColouriseA68kDoc (Sci_PositionU startPos, Sci_Position lengt...

FILE: lexilla/lexers/LexAPDL.cxx
  function IsAWordChar (line 32) | static inline bool IsAWordChar(const int ch) {
  function IsAnOperator (line 36) | static inline bool IsAnOperator(char ch) {
  function ColouriseAPDLDoc (line 47) | static void ColouriseAPDLDoc(Sci_PositionU startPos, Sci_Position length...
  function IsSpace (line 159) | static bool IsSpace(int c) {
  function IsIdentifier (line 163) | static bool IsIdentifier(int c) {
  function LowerCase (line 167) | static int LowerCase(int c)
  function CheckAPDLFoldPoint (line 174) | static int CheckAPDLFoldPoint(char const *token, int &level) {
  function FoldAPDLDoc (line 188) | static void FoldAPDLDoc(Sci_PositionU startPos, Sci_Position length, int,

FILE: lexilla/lexers/LexASY.cxx
  function ColouriseAsyDoc (line 30) | static void ColouriseAsyDoc(Sci_PositionU startPos, Sci_Position length,...
  function IsAsyCommentStyle (line 149) | static bool IsAsyCommentStyle(int style) {
  function isASYidentifier (line 154) | static inline bool isASYidentifier(int ch) {
  function ParseASYWord (line 159) | static int ParseASYWord(Sci_PositionU pos, Accessor &styler, char *word)
  function IsASYDrawingLine (line 174) | static bool IsASYDrawingLine(Sci_Position line, Accessor &styler) {
  function FoldAsyDoc (line 193) | static void FoldAsyDoc(Sci_PositionU startPos, Sci_Position length, int ...

FILE: lexilla/lexers/LexAU3.cxx
  function IsTypeCharacter (line 76) | static inline bool IsTypeCharacter(const int ch)
  function IsAWordChar (line 80) | static inline bool IsAWordChar(const int ch)
  function IsAWordStart (line 85) | static inline bool IsAWordStart(const int ch)
  function IsAOperator (line 90) | static inline bool IsAOperator(char ch) {
  function GetSendKey (line 106) | static int GetSendKey(const char *szLine, char *szKey)
  function IsContinuationLine (line 174) | static bool IsContinuationLine(Sci_PositionU szLine, Accessor &styler)
  function ColouriseAU3Doc (line 199) | static void ColouriseAU3Doc(Sci_PositionU startPos,
  function IsStreamCommentStyle (line 656) | static bool IsStreamCommentStyle(int style) {
  function GetStyleFirstWord (line 663) | static int GetStyleFirstWord(Sci_PositionU szLine, Accessor &styler)
  function FoldAU3Doc (line 678) | static void FoldAU3Doc(Sci_PositionU startPos, Sci_Position length, int,...

FILE: lexilla/lexers/LexAVE.cxx
  function IsAWordChar (line 34) | static inline bool IsAWordChar(const int ch) {
  function IsEnumChar (line 37) | static inline bool IsEnumChar(const int ch) {
  function IsANumberChar (line 40) | static inline bool IsANumberChar(const int ch) {
  function IsAWordStart (line 44) | inline bool IsAWordStart(const int ch) {
  function isAveOperator (line 48) | inline bool isAveOperator(char ch) {
  function ColouriseAveDoc (line 62) | static void ColouriseAveDoc(
  function FoldAveDoc (line 161) | static void FoldAveDoc(Sci_PositionU startPos, Sci_Position length, int ...

FILE: lexilla/lexers/LexAVS.cxx
  function IsAWordChar (line 32) | static inline bool IsAWordChar(const int ch) {
  function IsAWordStart (line 36) | static inline bool IsAWordStart(int ch) {
  function IsANumberChar (line 40) | static inline bool IsANumberChar(int ch) {
  function ColouriseAvsDoc (line 47) | static void ColouriseAvsDoc(
  function FoldAvsDoc (line 211) | static void FoldAvsDoc(

FILE: lexilla/lexers/LexAbaqus.cxx
  function IsAKeywordChar (line 34) | static inline bool IsAKeywordChar(const int ch) {
  function IsASetChar (line 38) | static inline bool IsASetChar(const int ch) {
  function ColouriseABAQUSDoc (line 42) | static void ColouriseABAQUSDoc(Sci_PositionU startPos, Sci_Position leng...
  function IsSpace (line 290) | static bool IsSpace(int c) {
  function IsIdentifier (line 294) | static bool IsIdentifier(int c) {
  function LowerCase (line 298) | static int LowerCase(int c)
  function Sci_Position (line 305) | static Sci_Position LineEnd(Sci_Position line, Accessor &styler)
  function Sci_Position (line 318) | static Sci_Position LineStart(Sci_Position line, Accessor &styler)
  function LineType (line 334) | static int LineType(Sci_Position line, Accessor &styler) {
  function SafeSetLevel (line 422) | static void SafeSetLevel(Sci_Position line, int level, Accessor &styler)
  function FoldABAQUSDoc (line 436) | static void FoldABAQUSDoc(Sci_PositionU startPos, Sci_Position length, int,

FILE: lexilla/lexers/LexAda.cxx
  function ColouriseCharacter (line 73) | static void ColouriseCharacter(StyleContext& sc, bool& apostropheStartsA...
  function ColouriseContext (line 86) | static void ColouriseContext(StyleContext& sc, char chEnd, int stateEOL) {
  function ColouriseComment (line 98) | static void ColouriseComment(StyleContext& sc, bool& /*apostropheStartsA...
  function ColouriseDelimiter (line 108) | static void ColouriseDelimiter(StyleContext& sc, bool& apostropheStartsA...
  function ColouriseLabel (line 114) | static void ColouriseLabel(StyleContext& sc, WordList& keywords, bool& a...
  function ColouriseNumber (line 147) | static void ColouriseNumber(StyleContext& sc, bool& apostropheStartsAttr...
  function ColouriseString (line 179) | static void ColouriseString(StyleContext& sc, bool& apostropheStartsAttr...
  function ColouriseWhiteSpace (line 188) | static void ColouriseWhiteSpace(StyleContext& sc, bool& /*apostropheStar...
  function ColouriseWord (line 194) | static void ColouriseWord(StyleContext& sc, WordList& keywords, bool& ap...
  function ColouriseDocument (line 223) | static void ColouriseDocument(
  function IsDelimiterCharacter (line 286) | static inline bool IsDelimiterCharacter(int ch) {
  function IsSeparatorOrDelimiterCharacter (line 310) | static inline bool IsSeparatorOrDelimiterCharacter(int ch) {
  function IsValidIdentifier (line 314) | static bool IsValidIdentifier(const std::string& identifier) {
  function IsValidNumber (line 348) | static bool IsValidNumber(const std::string& number) {
  function IsWordCharacter (line 508) | static inline bool IsWordCharacter(int ch) {
  function IsWordStartCharacter (line 512) | static inline bool IsWordStartCharacter(int ch) {

FILE: lexilla/lexers/LexAsciidoc.cxx
  function IsNewline (line 75) | constexpr bool IsNewline(const int ch) {
  function AtTermStart (line 82) | static bool AtTermStart(StyleContext &sc) {
  function ColorizeAsciidocDoc (line 86) | static void ColorizeAsciidocDoc(Sci_PositionU startPos, Sci_Position len...

FILE: lexilla/lexers/LexAsm.cxx
  function IsAWordChar (line 40) | static inline bool IsAWordChar(const int ch) {
  function IsAWordStart (line 45) | static inline bool IsAWordStart(const int ch) {
  function IsAsmOperator (line 50) | static inline bool IsAsmOperator(const int ch) {
  function IsStreamCommentStyle (line 63) | static bool IsStreamCommentStyle(int style) {
  function LowerCase (line 67) | static inline int LowerCase(int c) {
  type OptionsAsm (line 76) | struct OptionsAsm {
    method OptionsAsm (line 87) | OptionsAsm() {
  type OptionSetAsm (line 113) | struct OptionSetAsm : public OptionSet<OptionsAsm> {
    method OptionSetAsm (line 114) | OptionSetAsm() {
  class LexerAsm (line 149) | class LexerAsm : public DefaultLexer {
    method LexerAsm (line 162) | LexerAsm(const char *languageName_, int language_, int commentChar_) :...
    method Release (line 167) | void SCI_METHOD Release() override {
    method Version (line 170) | int SCI_METHOD Version() const override {
    method PropertyType (line 176) | int SCI_METHOD PropertyType(const char *name) override {
    method ILexer5 (line 197) | static ILexer5 *LexerFactoryAsm() {
    method ILexer5 (line 201) | static ILexer5 *LexerFactoryAs() {
  function Sci_Position (line 206) | Sci_Position SCI_METHOD LexerAsm::PropertySet(const char *key, const cha...
  function Sci_Position (line 213) | Sci_Position SCI_METHOD LexerAsm::WordListSet(int n, const char *wl) {

FILE: lexilla/lexers/LexAsn1.cxx
  function isAsn1Number (line 32) | static bool isAsn1Number(int ch)
  function isAsn1Letter (line 37) | static bool isAsn1Letter(int ch)
  function isAsn1Char (line 42) | static bool isAsn1Char(int ch)
  function ColouriseAsn1Doc (line 51) | static void ColouriseAsn1Doc(Sci_PositionU startPos, Sci_Position length...
  function FoldAsn1Doc (line 172) | static void FoldAsn1Doc(Sci_PositionU, Sci_Position, int, WordList *[], ...

FILE: lexilla/lexers/LexBaan.cxx
  type OptionsBaan (line 48) | struct OptionsBaan {
    method OptionsBaan (line 58) | OptionsBaan() {
  type OptionSetBaan (line 83) | struct OptionSetBaan : public OptionSet<OptionsBaan> {
    method OptionSetBaan (line 84) | OptionSetBaan() {
  function IsAWordChar (line 117) | static inline bool IsAWordChar(const int  ch) {
  function IsAnOperator (line 121) | static inline bool IsAnOperator(int ch) {
  function IsAnyOtherIdentifier (line 135) | static inline int IsAnyOtherIdentifier(char *s, Sci_Position sLength) {
  function IsCommentLine (line 211) | static bool IsCommentLine(Sci_Position line, LexAccessor &styler) {
  function IsPreProcLine (line 225) | static bool IsPreProcLine(Sci_Position line, LexAccessor &styler) {
  function mainOrSubSectionLine (line 247) | static int mainOrSubSectionLine(Sci_Position line, LexAccessor &styler) {
  function priorSectionIsSubSection (line 263) | static bool priorSectionIsSubSection(Sci_Position line, LexAccessor &sty...
  function nextSectionIsSubSection (line 284) | static bool nextSectionIsSubSection(Sci_Position line, LexAccessor &styl...
  function IsDeclarationLine (line 305) | static bool IsDeclarationLine(Sci_Position line, LexAccessor &styler) {
  function IsInnerLevelFold (line 337) | static bool IsInnerLevelFold(Sci_Position line, LexAccessor &styler) {
  function wordInArray (line 355) | static inline bool wordInArray(const std::string& value, std::string *ar...
  class WordListAbridged (line 368) | class WordListAbridged : public WordList {
    method WordListAbridged (line 370) | WordListAbridged() {
    method Contains (line 379) | bool Contains(const char *s) {
  class LexerBaan (line 386) | class LexerBaan : public DefaultLexer {
    method LexerBaan (line 399) | LexerBaan() : DefaultLexer("baan", SCLEX_BAAN) {
    method Version (line 405) | int SCI_METHOD Version() const override {
    method Release (line 409) | void SCI_METHOD Release() override {
    method PropertyType (line 417) | int SCI_METHOD PropertyType(const char * name) override {
    method ILexer5 (line 445) | static ILexer5 * LexerFactoryBaan() {
  function Sci_Position (line 450) | Sci_Position SCI_METHOD LexerBaan::PropertySet(const char *key, const ch...
  function Sci_Position (line 457) | Sci_Position SCI_METHOD LexerBaan::WordListSet(int n, const char *wl) {

FILE: lexilla/lexers/LexBash.cxx
  type CmdState (line 57) | enum class CmdState {
  type CommandSubstitution (line 68) | enum class CommandSubstitution : int {
  type QuoteStyle (line 76) | enum class QuoteStyle {
  function MaskCommand (line 93) | constexpr int MaskCommand(int state) noexcept {
  function translateBashDigit (line 97) | constexpr int translateBashDigit(int ch) noexcept {
  function getBashNumberBase (line 112) | int getBashNumberBase(char *s) noexcept {
  function opposite (line 125) | constexpr int opposite(int ch) noexcept {
  function GlobScan (line 133) | int GlobScan(StyleContext &sc) {
  function IsCommentLine (line 160) | bool IsCommentLine(Sci_Position line, LexAccessor &styler) {
  function StyleForceBacktrack (line 173) | constexpr bool StyleForceBacktrack(int state) noexcept {
  type OptionsBash (line 177) | struct OptionsBash {
    method stylingInside (line 189) | [[nodiscard]] bool stylingInside(int state) const noexcept {
  type OptionSetBash (line 210) | struct OptionSetBash : public OptionSet<OptionsBash> {
    method OptionSetBash (line 211) | OptionSetBash() {
  class QuoteCls (line 246) | class QuoteCls {	// Class to manage quote pairs (simplified vs LexPerl)
    method Clear (line 254) | void Clear() noexcept {
    method Start (line 262) | void Start(int u, QuoteStyle s, int outer, CmdState state) noexcept {
  class QuoteStackCls (line 272) | class QuoteStackCls {	// Class to manage quote pairs that nest
    method QuoteStackCls (line 284) | QuoteStackCls(const CharacterSet &setParamStart_) noexcept : setParamS...
    method Empty (line 285) | [[nodiscard]] bool Empty() const noexcept {
    method Start (line 288) | void Start(int u, QuoteStyle s, int outer, CmdState state) noexcept {
    method Push (line 298) | void Push(int u, QuoteStyle s, int outer, CmdState state) noexcept {
    method Pop (line 309) | void Pop() noexcept {
    method Clear (line 329) | void Clear() noexcept {
    method CountDown (line 336) | bool CountDown(StyleContext &sc, CmdState &cmdState) {
    method Expand (line 351) | void Expand(StyleContext &sc, CmdState &cmdState, bool stylingInside) {
    method Escape (line 401) | void Escape(StyleContext &sc) {
  class LexerBash (line 476) | class LexerBash final : public DefaultLexer {
    method LexerBash (line 488) | LexerBash() :
    method Release (line 496) | void SCI_METHOD Release() override {
    method Version (line 499) | int SCI_METHOD Version() const override {
    method PropertyType (line 505) | int SCI_METHOD PropertyType(const char* name) override {
    method AllocateSubStyles (line 526) | int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) over...
    method SubStylesStart (line 529) | int SCI_METHOD SubStylesStart(int styleBase) override {
    method SubStylesLength (line 532) | int SCI_METHOD SubStylesLength(int styleBase) override {
    method StyleFromSubStyle (line 535) | int SCI_METHOD StyleFromSubStyle(int subStyle) override {
    method PrimaryStyleFromStyle (line 539) | int SCI_METHOD PrimaryStyleFromStyle(int style) override {
    method FreeSubStyles (line 542) | void SCI_METHOD FreeSubStyles() override {
    method SetIdentifiers (line 545) | void SCI_METHOD SetIdentifiers(int style, const char *identifiers) ove...
    method DistanceToSecondaryStyles (line 548) | int SCI_METHOD DistanceToSecondaryStyles() override {
    method IsTestOperator (line 555) | bool IsTestOperator(const char *s, const CharacterSet &setSingleCharOp...
    method ILexer5 (line 560) | static ILexer5 *LexerFactoryBash() {
  function Sci_Position (line 565) | Sci_Position SCI_METHOD LexerBash::PropertySet(const char *key, const ch...
  function Sci_Position (line 576) | Sci_Position SCI_METHOD LexerBash::WordListSet(int n, const char *wl) {
  class HereDocCls (line 605) | class HereDocCls {	// Class to manage HERE document elements
    method HereDocCls (line 616) | HereDocCls() noexcept = default;
    method Append (line 617) | void Append(int ch) {

FILE: lexilla/lexers/LexBasic.cxx
  function IsSpace (line 68) | static bool IsSpace(int c) {
  function IsOperator (line 72) | static bool IsOperator(int c) {
  function IsIdentifier (line 76) | static bool IsIdentifier(int c) {
  function IsDigit (line 80) | static bool IsDigit(int c) {
  function IsHexDigit (line 84) | static bool IsHexDigit(int c) {
  function IsBinDigit (line 88) | static bool IsBinDigit(int c) {
  function IsLetter (line 92) | static bool IsLetter(int c) {
  function LowerCase (line 96) | static int LowerCase(int c)
  function CheckBlitzFoldPoint (line 103) | static int CheckBlitzFoldPoint(char const *token, int &level) {
  function CheckPureFoldPoint (line 116) | static int CheckPureFoldPoint(char const *token, int &level) {
  function CheckFreeFoldPoint (line 133) | static int CheckFreeFoldPoint(char const *token, int &level) {
  type OptionsBasic (line 161) | struct OptionsBasic {
    method OptionsBasic (line 169) | OptionsBasic() {
  type OptionSetBasic (line 204) | struct OptionSetBasic : public OptionSet<OptionsBasic> {
    method OptionSetBasic (line 205) | OptionSetBasic(const char * const wordListDescriptions[]) {
  class LexerBasic (line 231) | class LexerBasic : public DefaultLexer {
    method LexerBasic (line 238) | LexerBasic(const char *languageName_, int language_, char comment_char_,
    method Release (line 247) | void SCI_METHOD Release() override {
    method Version (line 250) | int SCI_METHOD Version() const override {
    method PropertyType (line 256) | int SCI_METHOD PropertyType(const char *name) override {
    method ILexer5 (line 276) | static ILexer5 *LexerFactoryBlitzBasic() {
    method ILexer5 (line 279) | static ILexer5 *LexerFactoryPureBasic() {
    method ILexer5 (line 282) | static ILexer5 *LexerFactoryFreeBasic() {
  function Sci_Position (line 287) | Sci_Position SCI_METHOD LexerBasic::PropertySet(const char *key, const c...
  function Sci_Position (line 294) | Sci_Position SCI_METHOD LexerBasic::WordListSet(int n, const char *wl) {

FILE: lexilla/lexers/LexBatch.cxx
  function Is0To9 (line 35) | constexpr bool Is0To9(char ch) noexcept {
  function IsAlphabetic (line 39) | bool IsAlphabetic(int ch) noexcept {
  function AtEOL (line 43) | inline bool AtEOL(Accessor &styler, Sci_PositionU i) {
  function IsBOperator (line 49) | constexpr bool IsBOperator(char ch) noexcept {
  function IsBSeparator (line 56) | constexpr bool IsBSeparator(char ch) noexcept {
  function IsEscaped (line 62) | constexpr bool IsEscaped(const char* wordStr, Sci_PositionU pos) noexcept {
  function IsQuotedBy (line 74) | constexpr bool IsQuotedBy(std::string_view svBuffer, char quote) noexcept {
  function textQuoted (line 87) | constexpr bool textQuoted(const char *lineBuffer, Sci_PositionU endPos) ...
  function ColouriseBatchDoc (line 92) | void ColouriseBatchDoc(

FILE: lexilla/lexers/LexBibTeX.cxx
  function IsAlphabetic (line 37) | bool IsAlphabetic(unsigned int ch)
  function IsAlphaNumeric (line 41) | bool IsAlphaNumeric(char ch)
  function EqualCaseInsensitive (line 46) | bool EqualCaseInsensitive(const char* a, const char* b)
  function EntryWithoutKey (line 51) | bool EntryWithoutKey(const char* name)
  function GetClosingBrace (line 56) | char GetClosingBrace(char openbrace)
  function IsEntryStart (line 68) | bool IsEntryStart(char prev, char ch)
  function IsEntryStart (line 73) | bool IsEntryStart(const StyleContext& sc)
  function ColorizeBibTeX (line 78) | void ColorizeBibTeX(Sci_PositionU start_pos, Sci_Position length, int /*...

FILE: lexilla/lexers/LexBullant.cxx
  function classifyWordBullant (line 27) | static int classifyWordBullant(Sci_PositionU start, Sci_PositionU end, W...
  function ColouriseBullantDoc (line 62) | static void ColouriseBullantDoc(Sci_PositionU startPos, Sci_Position len...

FILE: lexilla/lexers/LexCIL.cxx
  function IsAWordChar (line 43) | bool IsAWordChar(const int ch) {
  function IsOperator (line 47) | bool IsOperator(const int ch) {
  function IsStreamCommentStyle (line 58) | constexpr bool IsStreamCommentStyle(const int style) noexcept {
  type OptionsCIL (line 62) | struct OptionsCIL {
    method OptionsCIL (line 68) | OptionsCIL() {
  type OptionSetCIL (line 83) | struct OptionSetCIL : public OptionSet<OptionsCIL> {
    method OptionSetCIL (line 84) | OptionSetCIL() {
  class LexerCIL (line 114) | class LexerCIL : public DefaultLexer {
    method LexerCIL (line 120) | LexerCIL() : DefaultLexer("cil", SCLEX_CIL, lexicalClasses, ELEMENTS(l...
    method Release (line 124) | void SCI_METHOD Release() override {
    method Version (line 128) | int SCI_METHOD Version() const override {
    method PropertyType (line 136) | int SCI_METHOD PropertyType(const char *name) override {
    method LineEndTypesSupported (line 163) | int SCI_METHOD LineEndTypesSupported() override {
    method PrimaryStyleFromStyle (line 167) | int SCI_METHOD PrimaryStyleFromStyle(int style) override {
    method ILexer5 (line 171) | static ILexer5 *LexerFactoryCIL() {
  function Sci_Position (line 176) | Sci_Position SCI_METHOD LexerCIL::PropertySet(const char *key, const cha...
  function Sci_Position (line 184) | Sci_Position SCI_METHOD LexerCIL::WordListSet(int n, const char *wl) {

FILE: lexilla/lexers/LexCLW.cxx
  function IsEOL (line 33) | inline bool IsEOL(const int ch) {
  function CharacterUpper (line 39) | static char CharacterUpper(char chChar) {
  function StringUpper (line 50) | static void StringUpper(char *szString) {
  function IsALabelStart (line 59) | inline bool IsALabelStart(const int iChar) {
  function IsALabelCharacter (line 65) | inline bool IsALabelCharacter(const int iChar) {
  function IsACommentStart (line 71) | inline bool IsACommentStart(const int iChar) {
  function IsAHexCharacter (line 77) | inline bool IsAHexCharacter(const int iChar, bool bCaseSensitive) {
  function IsANumericBaseCharacter (line 95) | inline bool IsANumericBaseCharacter(const int iChar, bool bCaseSensitive) {
  function SetNumericConstantState (line 115) | inline bool SetNumericConstantState(StyleContext &scDoc) {
  function GetNextWordUpper (line 146) | inline bool GetNextWordUpper(Accessor &styler, Sci_PositionU uiStartPos,...
  function ColouriseClarionDoc (line 178) | static void ColouriseClarionDoc(Sci_PositionU uiStartPos, Sci_Position i...
  function ColouriseClarionDocSensitive (line 525) | static void ColouriseClarionDocSensitive(Sci_PositionU uiStartPos, Sci_P...
  function ColouriseClarionDocInsensitive (line 531) | static void ColouriseClarionDocInsensitive(Sci_PositionU uiStartPos, Sci...
  function FillBuffer (line 538) | static void FillBuffer(Sci_PositionU uiStart, Sci_PositionU uiEnd, Acces...
  function ClassifyClarionFoldPoint (line 551) | static int ClassifyClarionFoldPoint(int iLevel, const char* szString) {
  function FoldClarionDoc (line 603) | static void FoldClarionDoc(Sci_PositionU uiStartPos, Sci_Position iLengt...

FILE: lexilla/lexers/LexCOBOL.cxx
  function isCOBOLoperator (line 41) | inline bool isCOBOLoperator(char ch)
  function isCOBOLwordchar (line 46) | inline bool isCOBOLwordchar(char ch)
  function isCOBOLwordstart (line 52) | inline bool isCOBOLwordstart(char ch)
  function CountBits (line 57) | static int CountBits(int nBits)
  function getRange (line 68) | static void getRange(Sci_PositionU start,
  function ColourTo (line 81) | static void ColourTo(Accessor &styler, Sci_PositionU end, unsigned int a...
  function classifyWordCOBOL (line 86) | static int classifyWordCOBOL(Sci_PositionU start, Sci_PositionU end, /*W...
  function ColouriseCOBOLDoc (line 146) | static void ColouriseCOBOLDoc(Sci_PositionU startPos, Sci_Position lengt...
  function FoldCOBOLDoc (line 318) | static void FoldCOBOLDoc(Sci_PositionU startPos, Sci_Position length, in...

FILE: lexilla/lexers/LexCPP.cxx
  function IsSpaceEquiv (line 43) | constexpr bool IsSpaceEquiv(int state) noexcept {
  function FollowsPostfixOperator (line 57) | bool FollowsPostfixOperator(const StyleContext &sc, LexAccessor &styler) {
  function followsReturnKeyword (line 68) | bool followsReturnKeyword(const StyleContext &sc, LexAccessor &styler) {
  function IsOperatorOrSpace (line 90) | constexpr bool IsOperatorOrSpace(int ch) noexcept {
  function OnlySpaceOrTab (line 94) | bool OnlySpaceOrTab(std::string_view s) noexcept {
  function Tokens (line 104) | Tokens StringSplit(const std::string &text, int separator) {
  type BracketPair (line 116) | struct BracketPair {
  function BracketPair (line 121) | BracketPair FindBracketPair(Tokens &tokens) {
  function highlightTaskMarker (line 139) | void highlightTaskMarker(StyleContext &sc, LexAccessor &styler,
  class EscapeSequence (line 163) | class EscapeSequence {
    method EscapeSequence (line 168) | EscapeSequence() = default;
    method resetEscapeState (line 169) | void resetEscapeState(int state, int nextChar) noexcept {
    method atEscapeEnd (line 187) | [[nodiscard]] bool atEscapeEnd(int currChar) const noexcept {
    method consumeDigit (line 190) | void consumeDigit() noexcept {
  function GetRestOfLine (line 195) | std::string GetRestOfLine(LexAccessor &styler, Sci_Position start, bool ...
  function IsStreamCommentStyle (line 222) | constexpr bool IsStreamCommentStyle(int style) noexcept {
  type PPDefinition (line 229) | struct PPDefinition {
    method PPDefinition (line 235) | PPDefinition(Sci_Position line_, std::string_view key_, std::string_vi...
  class LinePPState (line 242) | class LinePPState {
    method maskLevel (line 256) | [[nodiscard]] int maskLevel() const noexcept {
    method LinePPState (line 263) | LinePPState() noexcept = default;
    method ValidLevel (line 264) | [[nodiscard]] bool ValidLevel() const noexcept {
    method IsActive (line 267) | [[nodiscard]] bool IsActive() const noexcept {
    method IsInactive (line 270) | [[nodiscard]] bool IsInactive() const noexcept {
    method ActiveState (line 273) | [[nodiscard]] int ActiveState() const noexcept {
    method CurrentIfTaken (line 276) | [[nodiscard]] bool CurrentIfTaken() const noexcept {
    method StartSection (line 279) | void StartSection(bool on) noexcept {
    method EndSection (line 291) | void EndSection() noexcept {
    method InvertCurrentLevel (line 298) | void InvertCurrentLevel() noexcept {
  class PPStates (line 308) | class PPStates {
    method LinePPState (line 311) | [[nodiscard]] LinePPState ForLine(Sci_Position line) const noexcept {
    method Add (line 317) | void Add(Sci_Position line, LinePPState lls) {
  type BackQuotedString (line 323) | enum class BackQuotedString : int {
  type InterpolatingState (line 330) | struct InterpolatingState {
  type Definition (line 335) | struct Definition {
  function TrimSpaceTab (line 341) | constexpr std::string_view TrimSpaceTab(std::string_view sv) noexcept {
  function Definition (line 357) | constexpr Definition ParseDefine(std::string_view definition, std::strin...
  type OptionsCPP (line 388) | struct OptionsCPP {
  type OptionSetCPP (line 422) | struct OptionSetCPP : public OptionSet<OptionsCPP> {
    method OptionSetCPP (line 423) | OptionSetCPP() {
  class LexerCPP (line 535) | class LexerCPP : public ILexer5 {
    type SymbolValue (line 553) | struct SymbolValue {
      method SymbolValue (line 556) | SymbolValue() noexcept = default;
      method SymbolValue (line 557) | SymbolValue(std::string_view value_, std::string_view arguments_) : ...
      method SymbolValue (line 559) | SymbolValue &operator = (const std::string &value_) {
      method IsMacro (line 564) | [[nodiscard]] bool IsMacro() const noexcept {
    method LexerCPP (line 578) | explicit LexerCPP(bool caseSensitive_) :
    method LexerCPP (line 588) | LexerCPP(const LexerCPP &) = delete;
    method LexerCPP (line 589) | LexerCPP(LexerCPP &&) = delete;
    method Release (line 593) | void SCI_METHOD Release() noexcept override {
    method Version (line 596) | int SCI_METHOD Version() const noexcept override {
    method PropertyType (line 602) | int SCI_METHOD PropertyType(const char *name) override {
    method LineEndTypesSupported (line 620) | int SCI_METHOD LineEndTypesSupported() noexcept override {
    method AllocateSubStyles (line 624) | int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) over...
    method SubStylesStart (line 627) | int SCI_METHOD SubStylesStart(int styleBase) override {
    method SubStylesLength (line 630) | int SCI_METHOD SubStylesLength(int styleBase) override {
    method StyleFromSubStyle (line 633) | int SCI_METHOD StyleFromSubStyle(int subStyle) override {
    method PrimaryStyleFromStyle (line 638) | int SCI_METHOD PrimaryStyleFromStyle(int style) noexcept override {
    method FreeSubStyles (line 641) | void SCI_METHOD FreeSubStyles() override {
    method SetIdentifiers (line 644) | void SCI_METHOD SetIdentifiers(int style, const char *identifiers) ove...
    method DistanceToSecondaryStyles (line 647) | int SCI_METHOD DistanceToSecondaryStyles() noexcept override {
    method NamedStyles (line 653) | int SCI_METHOD NamedStyles() override {
    method GetIdentifier (line 711) | int SCI_METHOD  GetIdentifier() override {
    method ILexer5 (line 716) | static ILexer5 *LexerFactoryCPP() {
    method ILexer5 (line 719) | static ILexer5 *LexerFactoryCPPInsensitive() {
    method MaskActive (line 722) | constexpr static int MaskActive(int style) noexcept {
  function Sci_Position (line 730) | Sci_Position SCI_METHOD LexerCPP::PropertySet(const char *key, const cha...
  function Sci_Position (line 747) | Sci_Position SCI_METHOD LexerCPP::WordListSet(int n, const char *wl) {
  type precedence (line 1735) | enum precedence { precMult, precAdd, precRelative
  function Tokens (line 1786) | Tokens LexerCPP::Tokenize(const std::string &expr) const {

FILE: lexilla/lexers/LexCSS.cxx
  function IsAWordChar (line 41) | static inline bool IsAWordChar(const unsigned int ch) {
  function IsCssOperator (line 50) | inline bool IsCssOperator(const int ch) {
  function NestingLevelLookBehind (line 63) | inline int NestingLevelLookBehind(Sci_PositionU startPos, Accessor &styl...
  function ColouriseCssDoc (line 78) | static void ColouriseCssDoc(Sci_PositionU startPos, Sci_Position length,...
  function FoldCSSDoc (line 508) | static void FoldCSSDoc(Sci_PositionU startPos, Sci_Position length, int,...

FILE: lexilla/lexers/LexCaml.cxx
  function iscaml (line 47) | inline int  iscaml(int c) {return isalnum(c) || c == '_';}
  function iscamlf (line 48) | inline int iscamlf(int c) {return isalpha(c) || c == '_';}
  function ColouriseCamlDoc (line 57) | static void ColouriseCamlDoc(
  function FoldCamlDoc (line 313) | static

FILE: lexilla/lexers/LexCmake.cxx
  function isCmakeNumber (line 32) | static bool isCmakeNumber(char ch)
  function isCmakeChar (line 37) | static bool isCmakeChar(char ch)
  function isCmakeLetter (line 42) | static bool isCmakeLetter(char ch)
  function CmakeNextLineHasElse (line 47) | static bool CmakeNextLineHasElse(Sci_PositionU start, Sci_PositionU end,...
  function calculateFoldCmake (line 75) | static int calculateFoldCmake(Sci_PositionU start, Sci_PositionU end, in...
  function classifyWordCmake (line 105) | static int classifyWordCmake(Sci_PositionU start, Sci_PositionU end, Wor...
  function ColouriseCmakeDoc (line 167) | static void ColouriseCmakeDoc(Sci_PositionU startPos, Sci_Position lengt...
  function FoldCmakeDoc (line 382) | static void FoldCmakeDoc(Sci_PositionU startPos, Sci_Position length, in...

FILE: lexilla/lexers/LexCoffeeScript.cxx
  function IsSpaceEquiv (line 35) | static bool IsSpaceEquiv(int state) {
  function enterInnerExpression (line 48) | static void enterInnerExpression(int  *p_inner_string_types,
  function exitInnerExpression (line 65) | static int exitInnerExpression(int  *p_inner_string_types,
  function FollowsPostfixOperator (line 82) | static bool FollowsPostfixOperator(StyleContext &sc, Accessor &styler) {
  function followsKeyword (line 93) | static bool followsKeyword(StyleContext &sc, Accessor &styler) {
  function ColouriseCoffeeScriptDoc (line 114) | static void ColouriseCoffeeScriptDoc(Sci_PositionU startPos, Sci_Positio...
  function IsCommentLine (line 349) | static bool IsCommentLine(Sci_Position line, Accessor &styler) {
  function FoldCoffeeScriptDoc (line 362) | static void FoldCoffeeScriptDoc(Sci_PositionU startPos, Sci_Position len...

FILE: lexilla/lexers/LexConf.cxx
  function ColouriseConfDoc (line 35) | static void ColouriseConfDoc(Sci_PositionU startPos, Sci_Position length...

FILE: lexilla/lexers/LexCrontab.cxx
  function ColouriseNncrontabDoc (line 33) | static void ColouriseNncrontabDoc(Sci_PositionU startPos, Sci_Position l...

FILE: lexilla/lexers/LexCsound.cxx
  function IsAWordChar (line 32) | static inline bool IsAWordChar(const int ch) {
  function IsAWordStart (line 37) | static inline bool IsAWordStart(const int ch) {
  function IsCsoundOperator (line 42) | static inline bool IsCsoundOperator(char ch) {
  function ColouriseCsoundDoc (line 55) | static void ColouriseCsoundDoc(Sci_PositionU startPos, Sci_Position leng...
  function FoldCsoundInstruments (line 154) | static void FoldCsoundInstruments(Sci_PositionU startPos, Sci_Position l...

FILE: lexilla/lexers/LexD.cxx
  function IsWordStart (line 45) | static bool IsWordStart(int ch) {
  function IsWord (line 49) | static bool IsWord(int ch) {
  function IsDoxygen (line 53) | static bool IsDoxygen(int ch) {
  function IsStringSuffix (line 63) | static bool IsStringSuffix(int ch) {
  function IsStreamCommentStyle (line 67) | static bool IsStreamCommentStyle(int style) {
  type OptionsD (line 77) | struct OptionsD {
    method OptionsD (line 89) | OptionsD() {
  type OptionSetD (line 115) | struct OptionSetD : public OptionSet<OptionsD> {
    method OptionSetD (line 116) | OptionSetD() {
  class LexerD (line 150) | class LexerD : public DefaultLexer {
    method LexerD (line 162) | LexerD(bool caseSensitive_) :
    method Release (line 168) | void SCI_METHOD Release() override {
    method Version (line 171) | int SCI_METHOD Version() const override {
    method PropertyType (line 177) | int SCI_METHOD PropertyType(const char *name) override {
    method ILexer5 (line 198) | static ILexer5 *LexerFactoryD() {
  function Sci_Position (line 203) | Sci_Position SCI_METHOD LexerD::PropertySet(const char *key, const char ...
  function Sci_Position (line 210) | Sci_Position SCI_METHOD LexerD::WordListSet(int n, const char *wl) {

FILE: lexilla/lexers/LexDMAP.cxx
  function IsAWordChar (line 39) | static inline bool IsAWordChar(const int ch) {
  function IsAWordStart (line 43) | static inline bool IsAWordStart(const int ch) {
  function ColouriseDMAPDoc (line 47) | static void ColouriseDMAPDoc(Sci_PositionU startPos, Sci_Position length...
  function classifyFoldPointDMAP (line 150) | static int classifyFoldPointDMAP(const char* s, const char* prevWord) {
  function FoldDMAPDoc (line 160) | static void FoldDMAPDoc(Sci_PositionU startPos, Sci_Position length, int...

FILE: lexilla/lexers/LexDMIS.cxx
  class LexerDMIS (line 43) | class LexerDMIS : public DefaultLexer
    method Version (line 61) | int SCI_METHOD Version() const override {
    method Release (line 65) | void SCI_METHOD Release() override {
    method PropertyType (line 73) | int SCI_METHOD PropertyType(const char *) override {
    method Sci_Position (line 81) | Sci_Position SCI_METHOD PropertySet(const char *, const char *) overri...
    method ILexer5 (line 95) | static ILexer5 *LexerFactoryDMIS() {
  function Sci_Position (line 154) | Sci_Position SCI_METHOD LexerDMIS::WordListSet(int n, const char *wl)

FILE: lexilla/lexers/LexDataflex.cxx
  function GetRangeLowered (line 74) | static void GetRangeLowered(Sci_PositionU start,
  function GetForwardRangeLowered (line 87) | static void GetForwardRangeLowered(Sci_PositionU start,
  function IsFirstDataFlexWord (line 112) | static bool IsFirstDataFlexWord(Sci_Position pos, Accessor &styler) {
  function IsADataFlexField (line 124) | inline bool IsADataFlexField(int ch) {
  function ClassifyDataFlexWord (line 129) | static void ClassifyDataFlexWord(WordList *keywordlists[], StyleContext ...
  function ColouriseDataFlexDoc (line 193) | static void ColouriseDataFlexDoc(Sci_PositionU startPos, Sci_Position le...
  function IsStreamCommentStyle (line 349) | static bool IsStreamCommentStyle(int style) {
  function IsCommentLine (line 353) | static bool IsCommentLine(Sci_Position line, Accessor &styler) {
  function GetFoldInPreprocessorLevelFlag (line 371) | static unsigned int GetFoldInPreprocessorLevelFlag(int lineFoldStateCurr...
  function SetFoldInPreprocessorLevelFlag (line 375) | static void SetFoldInPreprocessorLevelFlag(int &lineFoldStateCurrent, un...
  function ClassifyDataFlexPreprocessorFoldPoint (line 380) | static int ClassifyDataFlexPreprocessorFoldPoint(int &levelCurrent, int ...
  function ClassifyDataFlexWordFoldPoint (line 417) | static void ClassifyDataFlexWordFoldPoint(int &levelCurrent, int &lineFo...
  function ClassifyDataFlexMetaDataFoldPoint (line 483) | static void ClassifyDataFlexMetaDataFoldPoint(int &levelCurrent,
  function FoldDataFlexDoc (line 500) | static void FoldDataFlexDoc(Sci_PositionU startPos, Sci_Position length,...

FILE: lexilla/lexers/LexDiff.cxx
  function AtEOL (line 33) | inline bool AtEOL(Accessor &styler, Sci_PositionU i) {
  function ColouriseDiffLine (line 38) | void ColouriseDiffLine(const char *lineBuffer, Sci_Position endLine, Acc...
  function ColouriseDiffDoc (line 103) | void ColouriseDiffDoc(Sci_PositionU startPos, Sci_Position length, int, ...
  function FoldDiffDoc (line 120) | void FoldDiffDoc(Sci_PositionU startPos, Sci_Position length, int, WordL...

FILE: lexilla/lexers/LexECL.cxx
  function IsSpaceEquiv (line 49) | static bool IsSpaceEquiv(int state) {
  function ColouriseEclDoc (line 65) | static void ColouriseEclDoc(Sci_PositionU startPos, Sci_Position length,...
  function IsStreamCommentStyle (line 384) | static bool IsStreamCommentStyle(int style) {
  function MatchNoCase (line 391) | static bool MatchNoCase(Accessor & styler, Sci_PositionU & pos, const ch...
  function FoldEclDoc (line 408) | static void FoldEclDoc(Sci_PositionU startPos, Sci_Position length, int ...

FILE: lexilla/lexers/LexEDIFACT.cxx
  class LexerEDIFACT (line 30) | class LexerEDIFACT : public DefaultLexer
    method ILexer5 (line 36) | static ILexer5 *Factory() {
    method Version (line 40) | int SCI_METHOD Version() const override
    method Release (line 44) | void SCI_METHOD Release() override
    method PropertyType (line 53) | int SCI_METHOD PropertyType(const char *) override
    method Sci_Position (line 66) | Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) ...
    method Sci_Position (line 99) | Sci_Position SCI_METHOD WordListSet(int, const char *) override
  function Sci_Position (line 312) | Sci_Position LexerEDIFACT::InitialiseFromUNA(IDocument *pAccess, Sci_Pos...
  function Sci_Position (line 347) | Sci_Position LexerEDIFACT::ForwardPastWhitespace(IDocument *pAccess, Sci...
  function Sci_Position (line 393) | Sci_Position LexerEDIFACT::FindPreviousEnd(IDocument *pAccess, Sci_Posit...

FILE: lexilla/lexers/LexEScript.cxx
  function IsAWordChar (line 31) | static inline bool IsAWordChar(const int ch) {
  function IsAWordStart (line 35) | static inline bool IsAWordStart(const int ch) {
  function ColouriseESCRIPTDoc (line 41) | static void ColouriseESCRIPTDoc(Sci_PositionU startPos, Sci_Position len...
  function classifyFoldPointESCRIPT (line 152) | static int classifyFoldPointESCRIPT(const char* s, const char* prevWord) {
  function IsStreamCommentStyle (line 174) | static bool IsStreamCommentStyle(int style) {
  function FoldESCRIPTDoc (line 180) | static void FoldESCRIPTDoc(Sci_PositionU startPos, Sci_Position length, ...

FILE: lexilla/lexers/LexEiffel.cxx
  function isEiffelOperator (line 31) | static inline bool isEiffelOperator(unsigned int ch) {
  function IsAWordChar (line 42) | static inline bool IsAWordChar(unsigned int  ch) {
  function IsAWordStart (line 46) | static inline bool IsAWordStart(unsigned int ch) {
  function ColouriseEiffelDoc (line 50) | static void ColouriseEiffelDoc(Sci_PositionU startPos,
  function IsEiffelComment (line 122) | static bool IsEiffelComment(Accessor &styler, Sci_Position pos, Sci_Posi...
  function FoldEiffelDocIndent (line 126) | static void FoldEiffelDocIndent(Sci_PositionU startPos, Sci_Position len...
  function FoldEiffelDocKeyWords (line 168) | static void FoldEiffelDocKeyWords(Sci_PositionU startPos, Sci_Position l...

FILE: lexilla/lexers/LexErlang.cxx
  function is_radix (line 35) | static int is_radix(int radix, int ch) {
  function IsAWordChar (line 76) | static inline bool IsAWordChar(const int ch) {
  function ColouriseErlangDoc (line 80) | static void ColouriseErlangDoc(Sci_PositionU startPos, Sci_Position leng...
  function ClassifyErlangFoldPoint (line 508) | static int ClassifyErlangFoldPoint(
  function FoldErlangDoc (line 531) | static void FoldErlangDoc(

FILE: lexilla/lexers/LexErrorList.cxx
  function strstart (line 34) | bool strstart(const char *haystack, const char *needle) noexcept {
  function Is0To9 (line 38) | constexpr bool Is0To9(char ch) noexcept {
  function Is1To9 (line 42) | constexpr bool Is1To9(char ch) noexcept {
  function AtEOL (line 46) | bool AtEOL(Accessor &styler, Sci_Position i) {
  function IsGccExcerpt (line 51) | bool IsGccExcerpt(const char *s) noexcept {
  function IsBashDiagnostic (line 65) | bool IsBashDiagnostic(std::string_view sv) {
  function RecogniseErrorListLine (line 81) | int RecogniseErrorListLine(const char *lineBuffer, Sci_PositionU lengthL...
  function SequenceEnd (line 314) | constexpr bool SequenceEnd(int ch) noexcept {
  function StyleFromSequence (line 318) | int StyleFromSequence(const char *seq) noexcept {
  function ColouriseErrorListLine (line 345) | void ColouriseErrorListLine(
  function ColouriseErrorListDoc (line 396) | void ColouriseErrorListDoc(Sci_PositionU startPos, Sci_Position length, ...

FILE: lexilla/lexers/LexFSharp.cxx
  type OptionsFSharp (line 50) | struct OptionsFSharp {
  type OptionSetFSharp (line 60) | struct OptionSetFSharp : public OptionSet<OptionsFSharp> {
    method OptionSetFSharp (line 61) | OptionSetFSharp() {
  type FSharpString (line 85) | struct FSharpString {
    method HasLength (line 88) | constexpr bool HasLength() const {
    method CanInterpolate (line 91) | constexpr bool CanInterpolate() const {
    method IsVerbatim (line 94) | constexpr bool IsVerbatim() const {
  class UnicodeChar (line 99) | class UnicodeChar {
    type Notation (line 100) | enum class Notation { none, asciiDec, asciiHex, utf16, utf32 }
    method UnicodeChar (line 109) | UnicodeChar() noexcept = default;
    method UnicodeChar (line 110) | explicit UnicodeChar(const int prefix) {
    method Parse (line 135) | void Parse(const int ch) {
    method AtEnd (line 167) | constexpr bool AtEnd() noexcept {
  function MatchStreamCommentStart (line 172) | inline bool MatchStreamCommentStart(StyleContext &cxt) {
  function MatchStreamCommentEnd (line 178) | inline bool MatchStreamCommentEnd(const StyleContext &cxt) {
  function MatchLineComment (line 182) | inline bool MatchLineComment(const StyleContext &cxt) {
  function MatchLineNumberStart (line 188) | inline bool MatchLineNumberStart(StyleContext &cxt) {
  function MatchPPDirectiveStart (line 193) | inline bool MatchPPDirectiveStart(const StyleContext &cxt) {
  function MatchTypeAttributeStart (line 197) | inline bool MatchTypeAttributeStart(const StyleContext &cxt) {
  function MatchTypeAttributeEnd (line 201) | inline bool MatchTypeAttributeEnd(const StyleContext &cxt) {
  function MatchQuotedExpressionStart (line 205) | inline bool MatchQuotedExpressionStart(const StyleContext &cxt) {
  function MatchQuotedExpressionEnd (line 209) | inline bool MatchQuotedExpressionEnd(const StyleContext &cxt) {
  function MatchStringStart (line 213) | inline bool MatchStringStart(StyleContext &cxt) {
  function FollowsEscapedBackslash (line 218) | inline bool FollowsEscapedBackslash(StyleContext &cxt) {
  function MatchStringEnd (line 225) | inline bool MatchStringEnd(StyleContext &cxt, const FSharpString &fsStr) {
  function MatchCharacterStart (line 247) | inline bool MatchCharacterStart(StyleContext &cxt) {
  function CanEmbedQuotes (line 252) | inline bool CanEmbedQuotes(StyleContext &cxt) {
  function IsLineEnd (line 262) | inline bool IsLineEnd(StyleContext &cxt, const Sci_Position offset) {
  class LexerFSharp (line 267) | class LexerFSharp : public DefaultLexer {
    method LexerFSharp (line 280) | explicit LexerFSharp()
    method LexerFSharp (line 289) | LexerFSharp(const LexerFSharp &) = delete;
    method LexerFSharp (line 290) | LexerFSharp(LexerFSharp &&) = delete;
    method LexerFSharp (line 291) | LexerFSharp &operator=(const LexerFSharp &) = delete;
    method LexerFSharp (line 292) | LexerFSharp &operator=(LexerFSharp &&) = delete;
    method ILexer5 (line 293) | static ILexer5 *LexerFactoryFSharp() {
    method Release (line 298) | void SCI_METHOD Release() noexcept override {
    method Version (line 301) | int SCI_METHOD Version() const noexcept override {
    method GetIdentifier (line 307) | int SCI_METHOD GetIdentifier() noexcept override {
    method LineEndTypesSupported (line 310) | int SCI_METHOD LineEndTypesSupported() noexcept override {
    method PropertyType (line 322) | int SCI_METHOD PropertyType(const char *name) override {
    method Sci_Position (line 331) | Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) ...
    method IsNumber (line 342) | inline bool IsNumber(StyleContext &cxt, const int base = 10) {
    method IsFloat (line 347) | inline bool IsFloat(StyleContext &cxt) {
  function Sci_Position (line 357) | Sci_Position SCI_METHOD LexerFSharp::WordListSet(int n, const char *wl) {
  function LineContains (line 742) | bool LineContains(LexAccessor &styler, const char *word, const Sci_Posit...
  function FoldLexicalGroup (line 754) | void FoldLexicalGroup(LexAccessor &styler, int &levelNext, const Sci_Pos...

FILE: lexilla/lexers/LexFlagship.cxx
  function IsAWordChar (line 35) | static inline bool IsAWordChar(int ch)
  function ColouriseFlagShipDoc (line 41) | static void ColouriseFlagShipDoc(Sci_PositionU startPos, Sci_Position le...
  function FoldFlagShipDoc (line 306) | static void FoldFlagShipDoc(Sci_PositionU startPos, Sci_Position length,...

FILE: lexilla/lexers/LexForth.cxx
  function IsAWordStart (line 31) | static inline bool IsAWordStart(int ch) {
  function IsANumChar (line 35) | static inline bool IsANumChar(int ch) {
  function IsASpaceChar (line 39) | static inline bool IsASpaceChar(int ch) {
  function ColouriseForthDoc (line 43) | static void ColouriseForthDoc(Sci_PositionU startPos, Sci_Position lengt...
  function FoldForthDoc (line 155) | static void FoldForthDoc(Sci_PositionU, Sci_Position, int, WordList *[],

FILE: lexilla/lexers/LexFortran.cxx
  function IsAWordChar (line 34) | static inline bool IsAWordChar(const int ch) {
  function IsAWordStart (line 38) | static inline bool IsAWordStart(const int ch) {
  function IsABlank (line 42) | static inline bool IsABlank(unsigned int ch) {
  function IsALineEnd (line 46) | static inline bool IsALineEnd(char ch) {
  function Sci_PositionU (line 50) | static Sci_PositionU GetContinuedPos(Sci_PositionU pos, Accessor &styler) {
  function ColouriseFortranDoc (line 63) | static void ColouriseFortranDoc(Sci_PositionU startPos, Sci_Position len...
  function CheckLevelCommentLine (line 260) | static void CheckLevelCommentLine(const unsigned int nComL,
  function GetIfLineComment (line 293) | static void GetIfLineComment(Accessor &styler, bool isFixFormat, const S...
  function StepCommentLine (line 313) | static void StepCommentLine(Accessor &styler, bool isFixFormat, Sci_Posi...
  function CheckBackComLines (line 342) | static void CheckBackComLines(Accessor &styler, bool isFixFormat, Sci_Po...
  function classifyFoldPointFortran (line 420) | static int classifyFoldPointFortran(const char* s, const char* prevWord,...
  function FoldFortranDoc (line 465) | static void FoldFortranDoc(Sci_PositionU startPos, Sci_Position length, ...
  function ColouriseFortranDocFreeFormat (line 703) | static void ColouriseFortranDocFreeFormat(Sci_PositionU startPos, Sci_Po...
  function ColouriseFortranDocFixFormat (line 708) | static void ColouriseFortranDocFixFormat(Sci_PositionU startPos, Sci_Pos...
  function FoldFortranDocFreeFormat (line 713) | static void FoldFortranDocFreeFormat(Sci_PositionU startPos, Sci_Positio...
  function FoldFortranDocFixFormat (line 718) | static void FoldFortranDocFixFormat(Sci_PositionU startPos, Sci_Position...

FILE: lexilla/lexers/LexGAP.cxx
  function IsGAPOperator (line 32) | static inline bool IsGAPOperator(char ch) {
  function GetRange (line 43) | static void GetRange(Sci_PositionU start, Sci_PositionU end, Accessor &s...
  function ColouriseGAPDoc (line 52) | static void ColouriseGAPDoc(Sci_PositionU startPos, Sci_Position length,...
  function ClassifyFoldPointGAP (line 185) | static int ClassifyFoldPointGAP(const char* s) {
  function FoldGAPDoc (line 201) | static void FoldGAPDoc( Sci_PositionU startPos, Sci_Position length, int...

FILE: lexilla/lexers/LexGDScript.cxx
  type kwType (line 41) | enum kwType { kwOther, kwClass, kwDef, kwExtends}
  function IsGDStringStart (line 45) | bool IsGDStringStart(int ch) {
  function IsGDComment (line 49) | bool IsGDComment(Accessor &styler, Sci_Position pos, Sci_Position len) {
  function IsGDSingleQuoteStringState (line 53) | constexpr bool IsGDSingleQuoteStringState(int st) noexcept {
  function IsGDTripleQuoteStringState (line 57) | constexpr bool IsGDTripleQuoteStringState(int st) noexcept {
  function GetGDStringQuoteChar (line 61) | char GetGDStringQuoteChar(int st) noexcept {
  function GetGDStringState (line 71) | int GetGDStringState(Accessor &styler, Sci_Position i, Sci_PositionU *ne...
  function GetGDStringState (line 97) | int GetGDStringState(int ch) {
  function IsAWordChar (line 107) | inline bool IsAWordChar(int ch, bool unicodeIdentifiers) {
  function IsANodePathChar (line 117) | inline bool IsANodePathChar(int ch, bool unicodeIdentifiers) {
  function IsAWordStart (line 127) | inline bool IsAWordStart(int ch, bool unicodeIdentifiers) {
  function IsFirstNonWhitespace (line 137) | bool IsFirstNonWhitespace(Sci_Position pos, Accessor &styler) {
  type OptionsGDScript (line 149) | struct OptionsGDScript {
    method OptionsGDScript (line 159) | OptionsGDScript() noexcept {
  type OptionSetGDScript (line 177) | struct OptionSetGDScript : public OptionSet<OptionsGDScript> {
    method OptionSetGDScript (line 178) | OptionSetGDScript() {
  class LexerGDScript (line 237) | class LexerGDScript : public DefaultLexer {
    method LexerGDScript (line 245) | explicit LexerGDScript() :
    method Release (line 250) | void SCI_METHOD Release() override {
    method Version (line 253) | int SCI_METHOD Version() const override {
    method PropertyType (line 259) | int SCI_METHOD PropertyType(const char *name) override {
    method LineEndTypesSupported (line 280) | int SCI_METHOD LineEndTypesSupported() override {
    method AllocateSubStyles (line 284) | int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) over...
    method SubStylesStart (line 287) | int SCI_METHOD SubStylesStart(int styleBase) override {
    method SubStylesLength (line 290) | int SCI_METHOD SubStylesLength(int styleBase) override {
    method StyleFromSubStyle (line 293) | int SCI_METHOD StyleFromSubStyle(int subStyle) override {
    method PrimaryStyleFromStyle (line 297) | int SCI_METHOD PrimaryStyleFromStyle(int style) override {
    method FreeSubStyles (line 300) | void SCI_METHOD FreeSubStyles() override {
    method SetIdentifiers (line 303) | void SCI_METHOD SetIdentifiers(int style, const char *identifiers) ove...
    method DistanceToSecondaryStyles (line 306) | int SCI_METHOD DistanceToSecondaryStyles() override {
    method ILexer5 (line 313) | static ILexer5 *LexerFactoryGDScript() {
  function Sci_Position (line 321) | Sci_Position SCI_METHOD LexerGDScript::PropertySet(const char *key, cons...
  function Sci_Position (line 328) | Sci_Position SCI_METHOD LexerGDScript::WordListSet(int n, const char *wl) {
  function IsCommentLine (line 614) | static bool IsCommentLine(Sci_Position line, Accessor &styler) {
  function IsQuoteLine (line 627) | static bool IsQuoteLine(Sci_Position line, const Accessor &styler) {

FILE: lexilla/lexers/LexGui4Cli.cxx
  function IsAWordChar (line 50) | static inline bool IsAWordChar(const int ch) {
  function isGCOperator (line 54) | inline bool isGCOperator(int ch)
  function colorFirstWord (line 72) | static void colorFirstWord(WordList *keywordlists[], Accessor &styler,
  function ColouriseGui4CliDoc (line 123) | static void
  function FoldGui4Cli (line 249) | static void FoldGui4Cli(Sci_PositionU startPos, Sci_Position length, int,

FILE: lexilla/lexers/LexHTML.cxx
  type script_type (line 45) | enum script_type { eScriptNone = 0, eScriptJS, eScriptVBS, eScriptPython...
  type script_mode (line 46) | enum script_mode { eHtml = 0, eNonHtmlScript, eNonHtmlPreProc, eNonHtmlS...
  function IsAWordChar (line 48) | constexpr bool IsAWordChar(int ch) noexcept {
  function IsAWordStart (line 52) | constexpr bool IsAWordStart(int ch) noexcept {
  function IsOperator (line 56) | bool IsOperator(int ch) noexcept {
  function SafeGetUnsignedCharAt (line 70) | unsigned char SafeGetUnsignedCharAt(Accessor &styler, Sci_Position posit...
  function GetNextWord (line 77) | std::string GetNextWord(Accessor &styler, Sci_PositionU start) {
  function Contains (line 90) | bool Contains(const std::string &s, std::string_view search) noexcept {
  function script_type (line 94) | script_type segIsScriptingIndicator(Accessor &styler, Sci_PositionU star...
  function PrintScriptingIndicatorOffset (line 121) | int PrintScriptingIndicatorOffset(Accessor &styler, Sci_PositionU start,...
  function script_type (line 130) | script_type ScriptOfState(int state) noexcept {
  function statePrintForState (line 148) | constexpr int statePrintForState(int state, script_mode inScriptType) no...
  function stateForPrintState (line 164) | constexpr int stateForPrintState(int StateToPrint) noexcept {
  function IsNumberChar (line 178) | constexpr bool IsNumberChar(char ch) noexcept {
  function isStringState (line 182) | constexpr bool isStringState(int state) noexcept {
  function stateAllowsTermination (line 212) | constexpr bool stateAllowsTermination(int state) noexcept {
  function isPreProcessorEndTag (line 228) | bool isPreProcessorEndTag(int state, int ch) noexcept {
  function isCommentASPState (line 240) | constexpr bool isCommentASPState(int state) noexcept {
  function classifyAttribHTML (line 259) | bool classifyAttribHTML(script_mode inScriptType, Sci_PositionU start, S...
  function isHTMLCustomElement (line 295) | bool isHTMLCustomElement(const std::string &tag) noexcept {
  function classifyTagHTML (line 307) | int classifyTagHTML(Sci_PositionU start, Sci_PositionU end,
  function classifyWordHTJS (line 368) | void classifyWordHTJS(Sci_PositionU start, Sci_PositionU end,
  function classifyWordHTVB (line 387) | int classifyWordHTVB(Sci_PositionU start, Sci_PositionU end, const WordL...
  function classifyWordHTPy (line 412) | void classifyWordHTPy(Sci_PositionU start, Sci_PositionU end, const Word...
  function classifyWordHTPHP (line 438) | void classifyWordHTPHP(Sci_PositionU start, Sci_PositionU end, const Wor...
  function isWordHSGML (line 457) | bool isWordHSGML(Sci_PositionU start, Sci_PositionU end, const WordList ...
  function isWordCdata (line 462) | bool isWordCdata(Sci_PositionU start, Sci_PositionU end, Accessor &style...
  function StateForScript (line 468) | constexpr int StateForScript(script_type scriptLanguage) noexcept {
  function issgmlwordchar (line 495) | constexpr bool issgmlwordchar(int ch) noexcept {
  function IsPhpWordStart (line 500) | constexpr bool IsPhpWordStart(int ch) noexcept {
  function IsPhpWordChar (line 504) | constexpr bool IsPhpWordChar(int ch) noexcept {
  function InTagState (line 508) | constexpr bool InTagState(int state) noexcept {
  function IsCommentState (line 515) | constexpr bool IsCommentState(const int state) noexcept {
  function IsScriptCommentState (line 519) | constexpr bool IsScriptCommentState(const int state) noexcept {
  function isLineEnd (line 524) | constexpr bool isLineEnd(int ch) noexcept {
  function isMakoBlockEnd (line 528) | bool isMakoBlockEnd(const int ch, const int chNext, const std::string &b...
  function isDjangoBlockEnd (line 545) | bool isDjangoBlockEnd(const int ch, const int chNext, const std::string ...
  class PhpNumberState (line 557) | class PhpNumberState {
    type NumberBase (line 558) | enum NumberBase { BASE_10 = 0, BASE_2, BASE_8, BASE_16 }
    method isInvalid (line 575) | [[nodiscard]] bool isInvalid() const noexcept { return invalid; }
    method isFinished (line 576) | [[nodiscard]] bool isFinished() const noexcept { return finished; }
    method init (line 578) | bool init(int ch, int chPlus1, int chPlus2) noexcept {
    method check (line 615) | bool check(int ch, int chPlus1) noexcept {
  function isPHPStringState (line 670) | constexpr bool isPHPStringState(int state) noexcept {
  function Sci_Position (line 678) | Sci_Position FindPhpStringDelimiter(std::string &phpStringDelimiter, Sci...
  type OptionsHTML (line 721) | struct OptionsHTML {
  type OptionSetHTML (line 756) | struct OptionSetHTML : public OptionSet<OptionsHTML> {
    method OptionSetHTML (line 757) | explicit OptionSetHTML(bool isPHPScript_) {
  class LexerHTML (line 1000) | class LexerHTML : public DefaultLexer {
    method LexerHTML (line 1014) | explicit LexerHTML(bool isXml_, bool isPHPScript_) :
    method Release (line 1027) | void SCI_METHOD Release() override {
    method PropertyType (line 1033) | int SCI_METHOD PropertyType(const char *name) override {
    method AllocateSubStyles (line 1050) | int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) over...
    method SubStylesStart (line 1053) | int SCI_METHOD SubStylesStart(int styleBase) override {
    method SubStylesLength (line 1056) | int SCI_METHOD SubStylesLength(int styleBase) override {
    method StyleFromSubStyle (line 1059) | int SCI_METHOD StyleFromSubStyle(int subStyle) override {
    method PrimaryStyleFromStyle (line 1063) | int SCI_METHOD PrimaryStyleFromStyle(int style) override {
    method FreeSubStyles (line 1066) | void SCI_METHOD FreeSubStyles() override {
    method SetIdentifiers (line 1069) | void SCI_METHOD SetIdentifiers(int style, const char *identifiers) ove...
    method DistanceToSecondaryStyles (line 1072) | int SCI_METHOD DistanceToSecondaryStyles() override {
    method ILexer5 (line 1079) | static ILexer5 *LexerFactoryHTML() {
    method ILexer5 (line 1082) | static ILexer5 *LexerFactoryXML() {
    method ILexer5 (line 1085) | static ILexer5 *LexerFactoryPHPScript() {
  function Sci_Position (line 1090) | Sci_Position SCI_METHOD LexerHTML::PropertySet(const char *key, const ch...
  function Sci_Position (line 1097) | Sci_Position SCI_METHOD LexerHTML::WordListSet(int n, const char *wl) {

FILE: lexilla/lexers/LexHaskell.cxx
  function u_iswupper (line 55) | static int u_iswupper (int ch) {
  function u_iswalpha (line 60) | static int u_iswalpha (int ch) {
  function u_iswalnum (line 65) | static int u_iswalnum (int ch) {
  function u_IsHaskellSymbol (line 71) | static int u_IsHaskellSymbol(int ch) {
  function IsHaskellLetter (line 77) | static inline bool IsHaskellLetter(const int ch) {
  function IsHaskellAlphaNumeric (line 86) | static inline bool IsHaskellAlphaNumeric(const int ch) {
  function IsHaskellUpperCase (line 94) | static inline bool IsHaskellUpperCase(const int ch) {
  function IsAnHaskellOperatorChar (line 102) | static inline bool IsAnHaskellOperatorChar(const int ch) {
  function IsAHaskellWordStart (line 115) | static inline bool IsAHaskellWordStart(const int ch) {
  function IsAHaskellWordChar (line 119) | static inline bool IsAHaskellWordChar(const int ch) {
  function IsCommentBlockStyle (line 125) | static inline bool IsCommentBlockStyle(int style) {
  function IsCommentStyle (line 129) | static inline bool IsCommentStyle(int style) {
  function IsExternalStyle (line 136) | static inline bool IsExternalStyle(int style) {
  function CommentBlockStyleFromNestLevel (line 142) | static inline int CommentBlockStyleFromNestLevel(const unsigned int nest...
  function HaskellIndentAmount (line 149) | static int HaskellIndentAmount(Accessor &styler, const Sci_Position line) {
  type OptionsHaskell (line 199) | struct OptionsHaskell {
    method OptionsHaskell (line 210) | OptionsHaskell() {
  type OptionSetHaskell (line 231) | struct OptionSetHaskell : public OptionSet<OptionsHaskell> {
    method OptionSetHaskell (line 232) | OptionSetHaskell() {
  class LexerHaskell (line 275) | class LexerHaskell : public DefaultLexer {
    type HashCount (line 285) | enum HashCount {
    type KeywordMode (line 291) | enum KeywordMode {
    type LiterateMode (line 301) | enum LiterateMode {
    type HaskellLineInfo (line 314) | struct HaskellLineInfo {
      method HaskellLineInfo (line 322) | HaskellLineInfo(int state) :
      method ToLineState (line 330) | int ToLineState() {
    method skipMagicHash (line 340) | inline void skipMagicHash(StyleContext &sc, const HashCount hashes) co...
    method LineContainsImport (line 353) | bool LineContainsImport(const Sci_Position line, Accessor &styler) con...
    method IndentAmountWithOffset (line 380) | inline int IndentAmountWithOffset(Accessor &styler, const Sci_Position...
    method IndentLevelRemoveIndentOffset (line 388) | inline int IndentLevelRemoveIndentOffset(const int indentLevel) const {
    method LexerHaskell (line 395) | LexerHaskell(bool literate_)
    method Release (line 403) | void SCI_METHOD Release() override {
    method Version (line 407) | int SCI_METHOD Version() const override {
    method PropertyType (line 415) | int SCI_METHOD PropertyType(const char *name) override {
    method ILexer5 (line 443) | static ILexer5 *LexerFactoryHaskell() {
    method ILexer5 (line 447) | static ILexer5 *LexerFactoryLiterateHaskell() {
  function Sci_Position (line 452) | Sci_Position SCI_METHOD LexerHaskell::PropertySet(const char *key, const...
  function Sci_Position (line 459) | Sci_Position SCI_METHOD LexerHaskell::WordListSet(int n, const char *wl) {

FILE: lexilla/lexers/LexHex.cxx
  function IsNewline (line 162) | static inline bool IsNewline(const int ch)
  function GetHexaNibble (line 167) | static int GetHexaNibble(char hd)
  function GetHexaChar (line 184) | static int GetHexaChar(char hd1, char hd2)
  function GetHexaChar (line 211) | static int GetHexaChar(Sci_PositionU pos, Accessor &styler)
  function ForwardWithinLine (line 225) | static bool ForwardWithinLine(StyleContext &sc, Sci_Position nb)
  function PosInSameRecord (line 242) | static bool PosInSameRecord(Sci_PositionU pos1, Sci_PositionU pos2, Acce...
  function Sci_Position (line 250) | static Sci_Position CountByteCount(Sci_PositionU startPos, Sci_Position ...
  function CalcChecksum (line 279) | static int CalcChecksum(Sci_PositionU startPos, Sci_Position cnt, bool t...
  function Sci_PositionU (line 305) | static Sci_PositionU GetSrecRecStartPosition(Sci_PositionU pos, Accessor...
  function GetSrecByteCount (line 316) | static int GetSrecByteCount(Sci_PositionU recStartPos, Accessor &styler)
  function Sci_Position (line 331) | static Sci_Position CountSrecByteCount(Sci_PositionU recStartPos, Access...
  function GetSrecAddressFieldSize (line 337) | static int GetSrecAddressFieldSize(Sci_PositionU recStartPos, Accessor &...
  function GetSrecAddressFieldType (line 361) | static int GetSrecAddressFieldType(Sci_PositionU recStartPos, Accessor &...
  function GetSrecDataFieldType (line 387) | static int GetSrecDataFieldType(Sci_PositionU recStartPos, Accessor &sty...
  function Sci_Position (line 411) | static Sci_Position GetSrecRequiredDataFieldSize(Sci_PositionU recStartP...
  function GetSrecChecksum (line 429) | static int GetSrecChecksum(Sci_PositionU recStartPos, Accessor &styler)
  function CalcSrecChecksum (line 439) | static int CalcSrecChecksum(Sci_PositionU recStartPos, Accessor &styler)
  function Sci_PositionU (line 451) | static Sci_PositionU GetIHexRecStartPosition(Sci_PositionU pos, Accessor...
  function GetIHexByteCount (line 462) | static int GetIHexByteCount(Sci_PositionU recStartPos, Accessor &styler)
  function Sci_Position (line 477) | static Sci_Position CountIHexByteCount(Sci_PositionU recStartPos, Access...
  function GetIHexAddressFieldType (line 483) | static int GetIHexAddressFieldType(Sci_PositionU recStartPos, Accessor &...
  function GetIHexDataFieldType (line 508) | static int GetIHexDataFieldType(Sci_PositionU recStartPos, Accessor &sty...
  function GetIHexRequiredDataFieldSize (line 532) | static int GetIHexRequiredDataFieldSize(Sci_PositionU recStartPos, Acces...
  function GetIHexChecksum (line 552) | static int GetIHexChecksum(Sci_PositionU recStartPos, Accessor &styler)
  function CalcIHexChecksum (line 562) | static int CalcIHexChecksum(Sci_PositionU recStartPos, Accessor &styler)
  function GetTEHexDigitCount (line 575) | static int GetTEHexDigitCount(Sci_PositionU recStartPos, Accessor &styler)
  function Sci_Position (line 586) | static Sci_Position CountTEHexDigitCount(Sci_PositionU recStartPos, Acce...
  function GetTEHexAddressFieldType (line 600) | static int GetTEHexAddressFieldType(Sci_PositionU recStartPos, Accessor ...
  function GetTEHexChecksum (line 615) | static int GetTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler)
  function CalcTEHexChecksum (line 621) | static int CalcTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler)
  function ColouriseSrecDoc (line 649) | static void ColouriseSrecDoc(Sci_PositionU startPos, Sci_Position length...
  function ColouriseIHexDoc (line 775) | static void ColouriseIHexDoc(Sci_PositionU startPos, Sci_Position length...
  function FoldIHexDoc (line 896) | static void FoldIHexDoc(Sci_PositionU startPos, Sci_Position length, int...
  function ColouriseTEHexDoc (line 939) | static void ColouriseTEHexDoc(Sci_PositionU startPos, Sci_Position lengt...

FILE: lexilla/lexers/LexHollywood.cxx
  function IsSpace (line 186) | static bool IsSpace(int c) {
  function IsOperator (line 190) | static bool IsOperator(int c) {
  function IsIdentifier (line 194) | static bool IsIdentifier(int c) {
  function IsDigit (line 198) | static bool IsDigit(int c) {
  function IsHexDigit (line 202) | static bool IsHexDigit(int c) {
  function LowerCase (line 206) | static int LowerCase(int c)
  function CheckHollywoodFoldPoint (line 213) | static int CheckHollywoodFoldPoint(char const *token) {
  type OptionsHollywood (line 226) | struct OptionsHollywood {
    method OptionsHollywood (line 229) | OptionsHollywood() {
  type OptionSetHollywood (line 243) | struct OptionSetHollywood : public OptionSet<OptionsHollywood> {
    method OptionSetHollywood (line 244) | OptionSetHollywood(const char * const wordListDescriptions[]) {
  class LexerHollywood (line 251) | class LexerHollywood : public DefaultLexer {
    method LexerHollywood (line 257) | LexerHollywood(int (*CheckFoldPoint_)(char const *), const char * cons...
    method Release (line 264) | void SCI_METHOD Release() override {
    method Version (line 267) | int SCI_METHOD Version() const override {
    method PropertyType (line 273) | int SCI_METHOD PropertyType(const char *name) override {
    method ILexer5 (line 293) | static ILexer5 *LexerFactoryHollywood() {
  function Sci_Position (line 298) | Sci_Position SCI_METHOD LexerHollywood::PropertySet(const char *key, con...
  function Sci_Position (line 305) | Sci_Position SCI_METHOD LexerHollywood::WordListSet(int n, const char *w...

FILE: lexilla/lexers/LexIndent.cxx
  function ColouriseIndentDoc (line 30) | static void ColouriseIndentDoc(Sci_PositionU startPos, Sci_Position leng...
  function FoldIndentDoc (line 40) | static void FoldIndentDoc(Sci_PositionU startPos, Sci_Position length, i...

FILE: lexilla/lexers/LexInno.cxx
  function innoIsBlank (line 32) | static bool innoIsBlank(int ch) {
  function innoNextNotBlankIs (line 36) | static bool innoNextNotBlankIs(Sci_Position i, Accessor &styler, char ne...
  function ColouriseInnoDoc (line 53) | static void ColouriseInnoDoc(Sci_PositionU startPos, Sci_Position length...
  function FoldInnoDoc (line 339) | static void FoldInnoDoc(Sci_PositionU startPos, Sci_Position length, int...

FILE: lexilla/lexers/LexJSON.cxx
  type CompactIRI (line 50) | struct CompactIRI {
    method CompactIRI (line 54) | CompactIRI() {
    method resetState (line 59) | void resetState() {
    method checkChar (line 63) | void checkChar(int ch) {
    method shouldHighlight (line 70) | bool shouldHighlight() const {
  type EscapeSequence (line 80) | struct EscapeSequence {
    method EscapeSequence (line 84) | EscapeSequence() {
    method newSequence (line 90) | bool newSequence(int nextChar) {
    method atEscapeEnd (line 99) | bool atEscapeEnd() const {
    method isInvalidChar (line 102) | bool isInvalidChar(int currChar) const {
  type OptionsJSON (line 107) | struct OptionsJSON {
    method OptionsJSON (line 112) | OptionsJSON() {
  type OptionSetJSON (line 120) | struct OptionSetJSON : public OptionSet<OptionsJSON> {
    method OptionSetJSON (line 121) | OptionSetJSON() {
  class LexerJSON (line 134) | class LexerJSON : public DefaultLexer {
    method IsNextNonWhitespace (line 146) | static bool IsNextNonWhitespace(LexAccessor &styler, Sci_Position star...
    method AtPropertyName (line 169) | static bool AtPropertyName(LexAccessor &styler, Sci_Position start) {
    method IsNextWordInList (line 189) | static bool IsNextWordInList(WordList &keywordList, CharacterSet wordSet,
    method LexerJSON (line 207) | LexerJSON() :
    method Version (line 215) | int SCI_METHOD Version() const override {
    method Release (line 218) | void SCI_METHOD Release() override {
    method PropertyType (line 224) | int SCI_METHOD PropertyType(const char *name) override {
    method Sci_Position (line 230) | Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) ...
    method Sci_Position (line 239) | Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override {
    method ILexer5 (line 260) | static ILexer5 *LexerFactoryJSON() {

FILE: lexilla/lexers/LexJulia.cxx
  type OptionsJulia (line 46) | struct OptionsJulia {
    method OptionsJulia (line 54) | OptionsJulia() {
  type OptionSetJulia (line 73) | struct OptionSetJulia : public OptionSet<OptionsJulia> {
    method OptionSetJulia (line 74) | OptionSetJulia() {
  class LexerJulia (line 123) | class LexerJulia : public DefaultLexer {
    method LexerJulia (line 131) | explicit LexerJulia() :
    method Release (line 136) | void SCI_METHOD Release() override {
    method Version (line 139) | int SCI_METHOD Version() const override {
    method PropertyType (line 145) | int SCI_METHOD PropertyType(const char *name) override {
    method ILexer5 (line 165) | static ILexer5 *LexerFactoryJulia() {
  function Sci_Position (line 170) | Sci_Position SCI_METHOD LexerJulia::PropertySet(const char *key, const c...
  function Sci_Position (line 177) | Sci_Position SCI_METHOD LexerJulia::WordListSet(int n, const char *wl) {
  function IsJuliaOperator (line 202) | static inline bool IsJuliaOperator(int ch) {
  function IsJuliaUnaryOperator (line 213) | static inline bool IsJuliaUnaryOperator (int ch) {
  function IsJuliaParen (line 222) | static inline bool IsJuliaParen (int ch) {
  function is_wc_cat_id_start (line 233) | static int is_wc_cat_id_start(uint32_t wc) {
  function IsIdentifierFirstCharacter (line 294) | static inline bool IsIdentifierFirstCharacter (int ch) {
  function IsIdentifierCharacter (line 305) | static inline bool IsIdentifierCharacter (int ch) {
  function jl_op_suffix_char (line 453) | static bool jl_op_suffix_char(uint32_t wc) {
  function never_id_char (line 472) | static bool never_id_char(uint32_t wc) {
  function IsOperatorFirstCharacter (line 497) | static bool IsOperatorFirstCharacter (int ch) {
  function IsOperatorCharacter (line 516) | static bool IsOperatorCharacter (int ch) {
  function CheckBoundsIndexing (line 524) | static bool CheckBoundsIndexing(char *str) {
  function CheckKeywordFoldPoint (line 531) | static int CheckKeywordFoldPoint(char *str) {
  function IsNumberExpon (line 554) | static bool IsNumberExpon(int ch, int base) {
  function ScanDigits (line 563) | static bool ScanDigits(StyleContext& sc, int base, bool allow_sep) {
  function ScanNHexas (line 576) | static inline bool ScanNHexas(StyleContext &sc, int max) {
  function resumeCharacter (line 592) | static void resumeCharacter(StyleContext &sc, bool lexerror) {
  function IsACharacter (line 677) | static inline bool IsACharacter(StyleContext &sc) {
  function ScanParenInterpolation (line 681) | static void ScanParenInterpolation(StyleContext &sc) {
  function initNumber (line 715) | static void initNumber (StyleContext &sc, int &base, bool &with_dot) {
  function resumeStringLike (line 744) | static void resumeStringLike(StyleContext &sc, int quote, bool triple, b...
  function resumeCommand (line 802) | static void resumeCommand(StyleContext &sc, bool triple, bool allow_inte...
  function resumeString (line 806) | static void resumeString(StyleContext &sc, bool triple, bool allow_inter...
  function resumeNumber (line 810) | static void resumeNumber (StyleContext &sc, int base, bool &with_dot, bo...
  function resumeOperator (line 840) | static void resumeOperator (StyleContext &sc) {

FILE: lexilla/lexers/LexKVIrc.cxx
  function IsAWordChar (line 38) | static inline bool IsAWordChar(int ch) {
  function IsAWordStart (line 45) | static inline bool IsAWordStart(int ch) {
  function ColouriseKVIrcDoc (line 53) | static void ColouriseKVIrcDoc(Sci_PositionU startPos, Sci_Position length,
  function FoldKVIrcDoc (line 359) | static void FoldKVIrcDoc(Sci_PositionU startPos, Sci_Position length, in...

FILE: lexilla/lexers/LexKix.cxx
  function IsAWordChar (line 33) | static inline bool IsAWordChar(int ch) {
  function IsOperator (line 37) | static inline bool IsOperator(const int ch) {
  function ColouriseKixDoc (line 41) | static void ColouriseKixDoc(Sci_PositionU startPos, Sci_Position length,...

FILE: lexilla/lexers/LexLaTeX.cxx
  type latexFoldSave (line 40) | struct latexFoldSave {
    method latexFoldSave (line 41) | latexFoldSave() : structLev(0) {
    method latexFoldSave (line 44) | latexFoldSave(const latexFoldSave &save) : structLev(save.structLev) {
    method latexFoldSave (line 47) | latexFoldSave &operator=(const latexFoldSave &save) {
  class LexerLaTeX (line 58) | class LexerLaTeX : public LexerBase {
    method setMode (line 61) | void setMode(Sci_Position line, int mode) {
    method getMode (line 65) | int getMode(Sci_Position line) {
    method truncModes (line 69) | void truncModes(Sci_Position numLines) {
    method setSave (line 75) | void setSave(Sci_Position line, const latexFoldSave &save) {
    method getSave (line 79) | void getSave(Sci_Position line, latexFoldSave &save) {
    method truncSaves (line 86) | void truncSaves(Sci_Position numLines) {
    method ILexer5 (line 91) | static ILexer5 *LexerFactoryLaTeX() {
    method GetIdentifier (line 101) | int SCI_METHOD  GetIdentifier() override {
  function latexIsSpecial (line 106) | static bool latexIsSpecial(int ch) {
  function latexIsBlank (line 111) | static bool latexIsBlank(int ch) {
  function latexIsBlankAndNL (line 115) | static bool latexIsBlankAndNL(int ch) {
  function latexIsLetter (line 119) | static bool latexIsLetter(int ch) {
  function latexIsTagValid (line 123) | static bool latexIsTagValid(Sci_Position &i, Sci_Position l, Accessor &s...
  function latexNextNotBlankIs (line 143) | static bool latexNextNotBlankIs(Sci_Position i, Accessor &styler, char n...
  function latexLastWordIs (line 158) | static bool latexLastWordIs(Sci_Position start, Accessor &styler, const ...
  function latexLastWordIsMathEnv (line 173) | static bool latexLastWordIsMathEnv(Sci_Position pos, Accessor &styler) {
  function latexStateReset (line 195) | static inline void latexStateReset(int &mode, int &state) {
  function latexFoldSaveToInt (line 487) | static int latexFoldSaveToInt(const latexFoldSave &save) {

FILE: lexilla/lexers/LexLisp.cxx
  function isLispoperator (line 36) | static inline bool isLispoperator(char ch) {
  function isLispwordstart (line 44) | static inline bool isLispwordstart(char ch) {
  function classifyWordLisp (line 50) | static void classifyWordLisp(Sci_PositionU start, Sci_PositionU end, Wor...
  function ColouriseLispDoc (line 78) | static void ColouriseLispDoc(Sci_PositionU startPos, Sci_Position length...
  function FoldLispDoc (line 237) | static void FoldLispDoc(Sci_PositionU startPos, Sci_Position length, int...

FILE: lexilla/lexers/LexLout.cxx
  function IsAWordChar (line 31) | static inline bool IsAWordChar(const int ch) {
  function IsAnOther (line 35) | static inline bool IsAnOther(const int ch) {
  function ColouriseLoutDoc (line 44) | static void ColouriseLoutDoc(Sci_PositionU startPos, Sci_Position length...
  function FoldLoutDoc (line 144) | static void FoldLoutDoc(Sci_PositionU startPos, Sci_Position length, int...

FILE: lexilla/lexers/LexLua.cxx
  function LongDelimCheck (line 41) | int LongDelimCheck(StyleContext &sc) {
  type OptionsLua (line 90) | struct OptionsLua {
  type OptionSetLua (line 94) | struct OptionSetLua : public OptionSet<OptionsLua> {
    method OptionSetLua (line 95) | OptionSetLua() {
  class LexerLua (line 102) | class LexerLua : public DefaultLexer {
    method LexerLua (line 115) | explicit LexerLua() :
    method Release (line 119) | void SCI_METHOD Release() noexcept override {
    method Version (line 122) | int SCI_METHOD Version() const noexcept override {
    method PropertyType (line 128) | int SCI_METHOD PropertyType(const char *name) override {
    method AllocateSubStyles (line 145) | int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) over...
    method SubStylesStart (line 148) | int SCI_METHOD SubStylesStart(int styleBase) override {
    method SubStylesLength (line 151) | int SCI_METHOD SubStylesLength(int styleBase) override {
    method StyleFromSubStyle (line 154) | int SCI_METHOD StyleFromSubStyle(int subStyle) override {
    method PrimaryStyleFromStyle (line 158) | int SCI_METHOD PrimaryStyleFromStyle(int style) override {
    method FreeSubStyles (line 161) | void SCI_METHOD FreeSubStyles() override {
    method SetIdentifiers (line 164) | void SCI_METHOD SetIdentifiers(int style, const char *identifiers) ove...
    method DistanceToSecondaryStyles (line 167) | int SCI_METHOD DistanceToSecondaryStyles() override {
    method ILexer5 (line 174) | static ILexer5 *LexerFactoryLua() {
  function Sci_Position (line 179) | Sci_Position SCI_METHOD LexerLua::PropertySet(const char *key, const cha...
  function Sci_Position (line 186) | Sci_Position SCI_METHOD LexerLua::WordListSet(int n, const char *wl) {

FILE: lexilla/lexers/LexMMIXAL.cxx
  function IsAWordChar (line 35) | static inline bool IsAWordChar(const int ch) {
  function isMMIXALOperator (line 39) | static inline bool isMMIXALOperator(char ch) {
  function ColouriseMMIXALDoc (line 52) | static void ColouriseMMIXALDoc(Sci_PositionU startPos, Sci_Position leng...

FILE: lexilla/lexers/LexMPT.cxx
  function GetLotLineState (line 33) | static int GetLotLineState(std::string &line) {
  function ColourizeLotDoc (line 82) | static void ColourizeLotDoc(Sci_PositionU startPos, Sci_Position length,...
  function FoldLotDoc (line 120) | static void FoldLotDoc(Sci_PositionU startPos, Sci_Position length, int,...

FILE: lexilla/lexers/LexMSSQL.cxx
  function classifyWordSQL (line 39) | static char classifyWordSQL(Sci_PositionU start,
  function ColouriseMSSQLDoc (line 105) | static void ColouriseMSSQLDoc(Sci_PositionU startPos, Sci_Position length,
  function FoldMSSQLDoc (line 296) | static void FoldMSSQLDoc(Sci_PositionU startPos, Sci_Position length, in...

FILE: lexilla/lexers/LexMagik.cxx
  function IsAlphaCore (line 38) | static inline bool IsAlphaCore(int ch) {
  function IsAlpha (line 48) | static inline bool IsAlpha(int ch) {
  function IsAlphaSym (line 58) | static inline bool IsAlphaSym(int ch) {
  function IsAlNum (line 68) | static inline bool IsAlNum(int ch) {
  function IsAlNumSym (line 78) | static inline bool IsAlNumSym(int ch) {
  function ColouriseMagikDoc (line 91) | static void ColouriseMagikDoc(Sci_PositionU startPos, Sci_Position lengt...
  function IsFoldingContainer (line 338) | static inline int IsFoldingContainer(WordList &keywordslist, char * keyw...
  function FoldMagikDoc (line 363) | static void FoldMagikDoc(Sci_PositionU startPos, Sci_Position length, int,

FILE: lexilla/lexers/LexMake.cxx
  function AtEOL (line 31) | static inline bool AtEOL(Accessor &styler, Sci_PositionU i) {
  function ColouriseMakeLine (line 36) | static void ColouriseMakeLine(
  function ColouriseMakeDoc (line 120) | static void ColouriseMakeDoc(Sci_PositionU startPos, Sci_Position length...

FILE: lexilla/lexers/LexMarkdown.cxx
  function IsNewline (line 61) | constexpr bool IsNewline(const int ch) {
  function FollowToLineEnd (line 70) | static bool FollowToLineEnd(const int ch, const int state, const Sci_Pos...
  function SetStateAndZoom (line 87) | static void SetStateAndZoom(const int state, const Sci_Position length, ...
  function HasPrevLineContent (line 108) | static bool HasPrevLineContent(StyleContext &sc) {
  function AtTermStart (line 123) | static bool AtTermStart(StyleContext &sc) {
  function IsCompleteStyleRegion (line 127) | static bool IsCompleteStyleRegion(StyleContext &sc, const char *token) {
  function IsValidHrule (line 143) | static bool IsValidHrule(const Sci_PositionU endPos, StyleContext &sc) {
  function ColorizeMarkdownDoc (line 169) | static void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position len...

FILE: lexilla/lexers/LexMatlab.cxx
  function IsMatlabCommentChar (line 55) | static bool IsMatlabCommentChar(int c) {
  function IsOctaveCommentChar (line 59) | static bool IsOctaveCommentChar(int c) {
  function LowerCase (line 63) | static inline int LowerCase(int c) {
  function CheckKeywordFoldPoint (line 69) | static int CheckKeywordFoldPoint(char *str) {
  function IsSpaceToEOL (line 91) | static bool IsSpaceToEOL(Sci_Position startPos, Accessor &styler) {
  function ComposeLineState (line 110) | static int ComposeLineState(int commentDepth,
  function ColouriseMatlabOctaveDoc (line 128) | static void ColouriseMatlabOctaveDoc(
  function ColouriseMatlabDoc (line 422) | static void ColouriseMatlabDoc(Sci_PositionU startPos, Sci_Position leng...
  function ColouriseOctaveDoc (line 427) | static void ColouriseOctaveDoc(Sci_PositionU startPos, Sci_Position leng...
  function FoldMatlabOctaveDoc (line 432) | static void FoldMatlabOctaveDoc(Sci_PositionU startPos, Sci_Position len...
  function FoldMatlabDoc (line 506) | static void FoldMatlabDoc(Sci_PositionU startPos, Sci_Position length, i...
  function FoldOctaveDoc (line 511) | static void FoldOctaveDoc(Sci_PositionU startPos, Sci_Position length, i...

FILE: lexilla/lexers/LexMaxima.cxx
  function isMaximaoperator (line 31) | static inline bool isMaximaoperator(char ch) {
  function ColouriseMaximaDoc (line 40) | static void ColouriseMaximaDoc(Sci_PositionU startPos, Sci_Position leng...

FILE: lexilla/lexers/LexMetapost.cxx
  function endOfLine (line 66) | static inline bool endOfLine(Accessor &styler, Sci_PositionU i) {
  function isMETAPOSTcomment (line 71) | static inline bool isMETAPOSTcomment(int ch) {
  function isMETAPOSTone (line 76) | static inline bool isMETAPOSTone(int ch) {
  function isMETAPOSTtwo (line 83) | static inline bool isMETAPOSTtwo(int ch) {
  function isMETAPOSTthree (line 88) | static inline bool isMETAPOSTthree(int ch) {
  function isMETAPOSTidentifier (line 96) | static inline bool isMETAPOSTidentifier(int ch) {
  function isMETAPOSTnumber (line 102) | static inline bool isMETAPOSTnumber(int ch) {
  function isMETAPOSTstring (line 107) | static inline bool isMETAPOSTstring(int ch) {
  function isMETAPOSTcolon (line 112) | static inline bool isMETAPOSTcolon(int ch) {
  function isMETAPOSTequal (line 117) | static inline bool isMETAPOSTequal(int ch) {
  function CheckMETAPOSTInterface (line 122) | static int CheckMETAPOSTInterface(
  function ColouriseMETAPOSTDoc (line 157) | static void ColouriseMETAPOSTDoc(
  function classifyFoldPointMetapost (line 331) | static int classifyFoldPointMetapost(const char* s,WordList *keywordlist...
  function ParseMetapostWord (line 341) | static int ParseMetapostWord(Sci_PositionU pos, Accessor &styler, char *...
  function FoldMetapostDoc (line 356) | static void FoldMetapostDoc(Sci_PositionU startPos, Sci_Position length,...

FILE: lexilla/lexers/LexModula.cxx
  function IsDigitOfBase (line 43) | static inline bool IsDigitOfBase( unsigned ch, unsigned base ) {
  function IsOperator (line 60) | static inline unsigned IsOperator( StyleContext & sc, WordList & op ) {
  function IsEOL (line 83) | static inline bool IsEOL( Accessor &styler, Sci_PositionU curPos ) {
  function checkStatement (line 92) | static inline bool checkStatement(
  function checkEndSemicolon (line 112) | static inline bool checkEndSemicolon(
  function checkKeyIdentOper (line 135) | static inline bool checkKeyIdentOper(
  function FoldModulaDoc (line 178) | static void FoldModulaDoc( Sci_PositionU startPos,
  function skipWhiteSpaces (line 318) | static inline bool skipWhiteSpaces( StyleContext & sc ) {
  function ColouriseModulaDoc (line 329) | static void ColouriseModulaDoc(	Sci_PositionU startPos,

FILE: lexilla/lexers/LexMySQL.cxx
  function IsAWordChar (line 36) | static inline bool IsAWordChar(int ch) {
  function IsAWordStart (line 40) | static inline bool IsAWordStart(int ch) {
  function IsANumberChar (line 44) | static inline bool IsANumberChar(int ch) {
  function CheckForKeyword (line 57) | static void CheckForKeyword(StyleContext& sc, WordList* keywordlists[], ...
  function SetDefaultState (line 93) | static void SetDefaultState(StyleContext& sc, int activeState)
  function ForwardDefaultState (line 101) | static void ForwardDefaultState(StyleContext& sc, int activeState)
  function ColouriseMySQLDoc (line 109) | static void ColouriseMySQLDoc(Sci_PositionU startPos, Sci_Position lengt...
  function IsStreamCommentStyle (line 324) | static bool IsStreamCommentStyle(int style)
  function MatchIgnoreCase (line 335) | static bool MatchIgnoreCase(Accessor &styler, Sci_Position currentPos, c...
  function FoldMySQLDoc (line 350) | static void FoldMySQLDoc(Sci_PositionU startPos, Sci_Position length, in...

FILE: lexilla/lexers/LexNim.cxx
  type NumType (line 43) | enum NumType {
  function GetNumStyle (line 52) | int GetNumStyle(const int numType) noexcept {
  function IsLetter (line 60) | constexpr bool IsLetter(const int ch) noexcept {
  function IsAWordChar (line 65) | bool IsAWordChar(const int ch) noexcept {
  function IsNumHex (line 69) | int IsNumHex(const StyleContext &sc) noexcept {
  function IsNumBinary (line 73) | int IsNumBinary(const StyleContext &sc) noexcept {
  function IsNumOctal (line 77) | int IsNumOctal(const StyleContext &sc) {
  function IsNewline (line 81) | constexpr bool IsNewline(const int ch) noexcept {
  function IsFuncName (line 85) | bool IsFuncName(const char *str) noexcept {
  function IsTripleLiteral (line 105) | constexpr bool IsTripleLiteral(const int style) noexcept {
  function IsLineComment (line 109) | constexpr bool IsLineComment(const int style) noexcept {
  function IsStreamComment (line 113) | constexpr bool IsStreamComment(const int style) noexcept {
  function GetIndent (line 118) | int GetIndent(const Sci_Position line, Accessor &styler) {
  function IndentAmount (line 164) | int IndentAmount(const Sci_Position line, Accessor &styler) {
  type OptionsNim (line 170) | struct OptionsNim {
    method OptionsNim (line 175) | OptionsNim() {
  type OptionSetNim (line 187) | struct OptionSetNim : public OptionSet<OptionsNim> {
    method OptionSetNim (line 188) | OptionSetNim() {
  class LexerNim (line 223) | class LexerNim : public DefaultLexer {
    method LexerNim (line 230) | LexerNim() :
    method Release (line 236) | void SCI_METHOD Release() noexcept override {
    method Version (line 240) | int SCI_METHOD Version() const noexcept override {
    method PropertyType (line 248) | int SCI_METHOD PropertyType(const char *name) override {
    method LineEndTypesSupported (line 275) | int SCI_METHOD LineEndTypesSupported() noexcept override {
    method PrimaryStyleFromStyle (line 279) | int SCI_METHOD PrimaryStyleFromStyle(int style) noexcept override {
    method ILexer5 (line 283) | static ILexer5 *LexerFactoryNim() {
  function Sci_Position (line 288) | Sci_Position SCI_METHOD LexerNim::PropertySet(const char *key, const cha...
  function Sci_Position (line 296) | Sci_Position SCI_METHOD LexerNim::WordListSet(int n, const char *wl) {

FILE: lexilla/lexers/LexNimrod.cxx
  function IsAWordChar (line 34) | static inline bool IsAWordChar(int ch) {
  function Sci_Position (line 38) | static Sci_Position tillEndOfTripleQuote(Accessor &styler, Sci_Position ...
  function isNewLine (line 53) | static bool inline isNewLine(int ch) {
  function Sci_Position (line 57) | static Sci_Position scanString(Accessor &styler, Sci_Position pos, Sci_P...
  function Sci_Position (line 71) | static Sci_Position scanChar(Accessor &styler, Sci_Position pos, Sci_Pos...
  function Sci_Position (line 86) | static Sci_Position scanIdent(Accessor &styler, Sci_Position pos, WordLi...
  function Sci_Position (line 109) | static Sci_Position scanNumber(Accessor &styler, Sci_Position pos) {
  function ColouriseNimrodDoc (line 184) | static void ColouriseNimrodDoc(Sci_PositionU startPos, Sci_Position leng...
  function IsCommentLine (line 269) | static bool IsCommentLine(Sci_Position line, Accessor &styler) {
  function IsQuoteLine (line 282) | static bool IsQuoteLine(Sci_Position line, Accessor &styler) {
  function FoldNimrodDoc (line 288) | static void FoldNimrodDoc(Sci_PositionU startPos, Sci_Position length,

FILE: lexilla/lexers/LexNsis.cxx
  function isNsisNumber (line 58) | static bool isNsisNumber(char ch)
  function isNsisChar (line 63) | static bool isNsisChar(char ch)
  function isNsisLetter (line 68) | static bool isNsisLetter(char ch)
  function NsisNextLineHasElse (line 73) | static bool NsisNextLineHasElse(Sci_PositionU start, Sci_PositionU end, ...
  function NsisCmp (line 107) | static int NsisCmp( const char *s1, const char *s2, bool bIgnoreCase )
  function calculateFoldNsis (line 115) | static int calculateFoldNsis(Sci_PositionU start, Sci_PositionU end, int...
  function classifyWordNsis (line 175) | static int classifyWordNsis(Sci_PositionU start, Sci_PositionU end, Word...
  function ColouriseNsisDoc (line 288) | static void ColouriseNsisDoc(Sci_PositionU startPos, Sci_Position length...
  function FoldNsisDoc (line 560) | static void FoldNsisDoc(Sci_PositionU startPos, Sci_Position length, int...

FILE: lexilla/lexers/LexNull.cxx
  function ColouriseNullDoc (line 31) | static void ColouriseNullDoc(Sci_PositionU startPos, Sci_Position length...

FILE: lexilla/lexers/LexOScript.cxx
  function IsAlpha (line 39) | inline bool IsAlpha(int ch) {
  function IsIdentifierChar (line 43) | static inline bool IsIdentifierChar(int ch) {
  function IsIdentifierStart (line 49) | static inline bool IsIdentifierStart(int ch) {
  function IsNumberChar (line 55) | static inline bool IsNumberChar(int ch, int chNext) {
  function IsNaturalNumberStart (line 71) | static inline bool IsNaturalNumberStart(int ch) {
  function IsPrefixedNumberStart (line 75) | static inline bool IsPrefixedNumberStart(int ch, int chNext) {
  function IsOperator (line 83) | static inline bool IsOperator(int ch) {
  function IsDocCommentStart (line 94) | static bool IsDocCommentStart(StyleContext &sc) {
  function IsDocCommentEnd (line 110) | static bool IsDocCommentEnd(StyleContext &sc) {
  class IdentifierClassifier (line 114) | class IdentifierClassifier {
    method IdentifierClassifier (line 126) | IdentifierClassifier(WordList *keywordlists[]) :
    method ClassifyIdentifier (line 132) | void ClassifyIdentifier(StyleContext &sc) {
  function ColouriseOScriptDoc (line 187) | static void ColouriseOScriptDoc(Sci_PositionU startPos, Sci_Position len...
  function IsBlockComment (line 374) | static inline bool IsBlockComment(int style) {
  function IsLineComment (line 378) | static bool IsLineComment(Sci_Position line, Accessor &styler) {
  function IsPreprocessor (line 394) | static inline bool IsPreprocessor(int style) {
  function GetRangeLowered (line 399) | static void GetRangeLowered(Sci_PositionU start, Sci_PositionU end,
  function GetForwardWordLowered (line 409) | static void GetForwardWordLowered(Sci_PositionU start, Accessor &styler,
  function UpdatePreprocessorFoldLevel (line 419) | static void UpdatePreprocessorFoldLevel(int &levelCurrent,
  function UpdateKeywordFoldLevel (line 435) | static void UpdateKeywordFoldLevel(int &levelCurrent, Sci_PositionU last...
  function FoldOScriptDoc (line 455) | static void FoldOScriptDoc(Sci_PositionU startPos, Sci_Position length, ...

FILE: lexilla/lexers/LexOpal.cxx
  function getRange (line 30) | inline static void getRange( Sci_PositionU start, Sci_PositionU end, Acc...
  function HandleString (line 41) | inline bool HandleString( Sci_PositionU & cur, Sci_PositionU one_too_muc...
  function HandleCommentBlock (line 96) | inline bool HandleCommentBlock( Sci_PositionU & cur, Sci_PositionU one_t...
  function HandleCommentLine (line 159) | inline bool HandleCommentLine( Sci_PositionU & cur, Sci_PositionU one_to...
  function HandlePar (line 244) | inline bool HandlePar( Sci_PositionU & cur, Accessor & styler )
  function HandleSpace (line 254) | inline bool HandleSpace( Sci_PositionU & cur, Sci_PositionU one_too_much...
  function HandleInteger (line 285) | inline bool HandleInteger( Sci_PositionU & cur, Sci_PositionU one_too_mu...
  function HandleWord (line 308) | inline bool HandleWord( Sci_PositionU & cur, Sci_PositionU one_too_much,...
  function HandleSkip (line 397) | inline bool HandleSkip( Sci_PositionU & cur, Sci_PositionU one_too_much,...
  function ColouriseOpalDoc (line 412) | static void ColouriseOpalDoc( Sci_PositionU startPos, Sci_Position lengt...

FILE: lexilla/lexers/LexPB.cxx
  function IsTypeCharacter (line 59) | static inline bool IsTypeCharacter(const int ch)
  function IsAWordChar (line 64) | static inline bool IsAWordChar(const int ch)
  function IsAWordStart (line 69) | static inline bool IsAWordStart(const int ch)
  function MatchUpperCase (line 74) | static bool MatchUpperCase(Accessor &styler, Sci_Position pos, const cha...
  function ColourisePBDoc (line 87) | static void ColourisePBDoc(Sci_PositionU startPos, Sci_Position length, ...
  function FoldPBDoc (line 189) | static void FoldPBDoc(Sci_PositionU startPos, Sci_Position length, int, ...

FILE: lexilla/lexers/LexPLM.cxx
  function GetRange (line 29) | static void GetRange(Sci_PositionU start,
  function ColourisePlmDoc (line 42) | static void ColourisePlmDoc(Sci_PositionU startPos,
  function FoldPlmDoc (line 130) | static void FoldPlmDoc(Sci_PositionU startPos,

FILE: lexilla/lexers/LexPO.cxx
  function ColourisePODoc (line 39) | static void ColourisePODoc(Sci_PositionU startPos, Sci_Position length, ...
  function FindNextNonEmptyLineState (line 152) | static int FindNextNonEmptyLineState(Sci_PositionU startPos, Accessor &s...
  function FoldPODoc (line 162) | static void FoldPODoc(Sci_PositionU startPos, Sci_Position length, int, ...

FILE: lexilla/lexers/LexPOV.cxx
  function IsAWordChar (line 40) | static inline bool IsAWordChar(int ch) {
  function IsAWordStart (line 44) | static inline bool IsAWordStart(int ch) {
  function IsANumberChar (line 48) | static inline bool IsANumberChar(int ch) {
  function ColourisePovDoc (line 56) | static void ColourisePovDoc(
  function FoldPovDoc (line 229) | static void FoldPovDoc(

FILE: lexilla/lexers/LexPS.cxx
  function IsASelfDelimitingChar (line 38) | static inline bool IsASelfDelimitingChar(const int ch) {
  function IsAWhitespaceChar (line 44) | static inline bool IsAWhitespaceChar(const int ch) {
  function IsABaseNDigit (line 49) | static bool IsABaseNDigit(const int ch, const int base) {
  function IsABase85Char (line 63) | static inline bool IsABase85Char(const int ch) {
  function ColourisePSDoc (line 67) | static void ColourisePSDoc(
  function FoldPSDoc (line 272) | static void FoldPSDoc(Sci_PositionU startPos, Sci_Position length, int, ...

FILE: lexilla/lexers/LexPascal.cxx
  function GetRangeLowered (line 136) | static void GetRangeLowered(Sci_PositionU start,
  function GetForwardRangeLowered (line 149) | static void GetForwardRangeLowered(Sci_PositionU start,
  function ClassifyPascalWord (line 173) | static void ClassifyPascalWord(WordList *keywordlists[], StyleContext &s...
  function ColourisePascalDoc (line 218) | static void ColourisePascalDoc(Sci_PositionU startPos, Sci_Position leng...
  function IsStreamCommentStyle (line 347) | static bool IsStreamCommentStyle(int style) {
  function IsCommentLine (line 351) | static bool IsCommentLine(Sci_Position line, Accessor &styler) {
  function GetFoldInPreprocessorLevelFlag (line 367) | static unsigned int GetFoldInPreprocessorLevelFlag(int lineFoldStateCurr...
  function SetFoldInPreprocessorLevelFlag (line 371) | static void SetFoldInPreprocessorLevelFlag(int &lineFoldStateCurrent, un...
  function ClassifyPascalPreprocessorFoldPoint (line 376) | static void ClassifyPascalPreprocessorFoldPoint(int &levelCurrent, int &...
  function Sci_PositionU (line 409) | static Sci_PositionU SkipWhiteSpace(Sci_PositionU currentPos, Sci_Positi...
  function ClassifyPascalWordFoldPoint (line 422) | static void ClassifyPascalWordFoldPoint(int &levelCurrent, int &lineFold...
  function FoldPascalDoc (line 520) | static void FoldPascalDoc(Sci_PositionU startPos, Sci_Position length, i...

FILE: lexilla/lexers/LexPerl.cxx
  function isPerlKeyword (line 96) | bool isPerlKeyword(Sci_PositionU start, Sci_PositionU end, WordList &key...
  function disambiguateBareword (line 107) | int disambiguateBareword(LexAccessor &styler, Sci_PositionU bk, Sci_Posi...
  function skipWhitespaceComment (line 157) | void skipWhitespaceComment(LexAccessor &styler, Sci_PositionU &p) {
  function findPrevLexeme (line 167) | int findPrevLexeme(LexAccessor &styler, Sci_PositionU &bk, int &style) {
  function styleBeforeBracePair (line 183) | int styleBeforeBracePair(LexAccessor &styler, Sci_PositionU bk) {
  function styleCheckIdentifier (line 210) | int styleCheckIdentifier(LexAccessor &styler, Sci_PositionU bk) {
  function podLineScan (line 235) | int podLineScan(LexAccessor &styler, Sci_PositionU &pos, Sci_PositionU e...
  function styleCheckSubPrototype (line 259) | bool styleCheckSubPrototype(LexAccessor &styler, Sci_PositionU bk) {
  function actualNumStyle (line 316) | int actualNumStyle(int numberStyle) {
  function opposite (line 325) | int opposite(int ch) {
  function IsCommentLine (line 333) | bool IsCommentLine(Sci_Position line, LexAccessor &styler) {
  function IsPackageLine (line 347) | bool IsPackageLine(Sci_Position line, LexAccessor &styler) {
  function PodHeadingLevel (line 356) | int PodHeadingLevel(Sci_Position pos, LexAccessor &styler) {
  type OptionsPerl (line 367) | struct OptionsPerl {
    method OptionsPerl (line 381) | OptionsPerl() {
  type OptionSetPerl (line 397) | struct OptionSetPerl : public OptionSet<OptionsPerl> {
    method OptionSetPerl (line 398) | OptionSetPerl() {
  class LexerPerl (line 470) | class LexerPerl : public DefaultLexer {
    method LexerPerl (line 479) | LexerPerl() :
    method Release (line 488) | void SCI_METHOD Release() override {
    method Version (line 491) | int SCI_METHOD Version() const override {
    method PropertyType (line 497) | int SCI_METHOD PropertyType(const char *name) override {
    method ILexer5 (line 518) | static ILexer5 *LexerFactoryPerl() {
  function Sci_Position (line 525) | Sci_Position SCI_METHOD LexerPerl::PropertySet(const char *key, const ch...
  function Sci_Position (line 532) | Sci_Position SCI_METHOD LexerPerl::WordListSet(int n, const char *wl) {
  class HereDocCls (line 683) | class HereDocCls {	// Class to manage HERE doc sequence
    method HereDocCls (line 694) | HereDocCls() {
    method Append (line 702) | void Append(int ch) {
  class QuoteCls (line 711) | class QuoteCls {	// Class to manage quote pairs
    method QuoteCls (line 716) | QuoteCls() {
    method New (line 719) | void New(int r = 1) {
    method Open (line 725) | void Open(int u) {

FILE: lexilla/lexers/LexPowerPro.cxx
  function IsStreamCommentStyle (line 51) | static inline bool IsStreamCommentStyle(int style) {
  function IsLineEndChar (line 55) | static inline bool IsLineEndChar(unsigned char ch) {
  function IsContinuationLine (line 61) | static bool IsContinuationLine(Sci_PositionU szLine, Accessor &styler)
  function GetStyleFirstWord (line 82) | static int GetStyleFirstWord(Sci_Position szLine, Accessor &styler)
  function IsFunction (line 101) | static bool IsFunction(Accessor &styler, Sci_PositionU currentPos) {
  function ColourisePowerProDoc (line 132) | static void ColourisePowerProDoc(Sci_PositionU startPos, Sci_Position le...
  function FoldPowerProDoc (line 364) | static void FoldPowerProDoc(Sci_PositionU startPos, Sci_Position length,...
  function ColourisePowerProDocWrapper (line 624) | static void ColourisePowerProDocWrapper(Sci_PositionU startPos, Sci_Posi...

FILE: lexilla/lexers/LexPowerShell.cxx
  function IsAWordChar (line 32) | static inline bool IsAWordChar(int ch) noexcept {
  function IsNumericLiteral (line 36) | static bool IsNumericLiteral(int chPrev, int ch, int chNext) {
  function ColourisePowerShellDoc (line 71) | static void ColourisePowerShellDoc(Sci_PositionU startPos, Sci_Position ...
  function FoldPowerShellDoc (line 207) | static void FoldPowerShellDoc(Sci_PositionU startPos, Sci_Position lengt...

FILE: lexilla/lexers/LexProgress.cxx
  function IsSpaceEquiv (line 51) | bool IsSpaceEquiv(int state) {
  function highlightTaskMarker (line 57) | void highlightTaskMarker(StyleContext &sc, LexAccessor &styler, WordList...
  function IsStreamCommentStyle (line 78) | bool IsStreamCommentStyle(int style) {
  type OptionsABL (line 84) | struct OptionsABL {
    method OptionsABL (line 90) | OptionsABL() {
  type OptionSetABL (line 107) | struct OptionSetABL : public OptionSet<OptionsABL> {
    method OptionSetABL (line 108) | OptionSetABL() {
  class LexerABL (line 127) | class LexerABL : public DefaultLexer {
    method LexerABL (line 141) | LexerABL() :
    method Release (line 151) | void SCI_METHOD Release() override {
    method Version (line 154) | int SCI_METHOD Version() const override {
    method PropertyType (line 160) | int SCI_METHOD PropertyType(const char *name) override {
    method LineEndTypesSupported (line 181) | int SCI_METHOD LineEndTypesSupported() override {
    method ILexer5 (line 184) | static ILexer5 *LexerFactoryABL() {
  function Sci_Position (line 189) | Sci_Position SCI_METHOD LexerABL::PropertySet(const char *key, const cha...
  function Sci_Position (line 196) | Sci_Position SCI_METHOD LexerABL::WordListSet(int n, const char *wl) {

FILE: lexilla/lexers/LexProps.cxx
  function AtEOL (line 29) | bool AtEOL(Accessor &styler, Sci_PositionU i) {
  function isAssignChar (line 34) | constexpr bool isAssignChar(char ch) noexcept {
  function ColourisePropsLine (line 38) | void ColourisePropsLine(
  function ColourisePropsDoc (line 82) | void ColourisePropsDoc(Sci_PositionU startPos, Sci_Position length, int,...
  function FoldPropsDoc (line 110) | void FoldPropsDoc(Sci_PositionU startPos, Sci_Position length, int, Word...

FILE: lexilla/lexers/LexPython.cxx
  type SingleFStringExpState (line 57) | struct SingleFStringExpState {
  type kwType (line 63) | enum kwType { kwOther, kwClass, kwDef, kwImport, kwCDef, kwCTypeName, kw...
  type literalsAllowed (line 65) | enum literalsAllowed { litNone = 0, litU = 1, litB = 2, litF = 4 }
  function IsPyComment (line 69) | bool IsPyComment(Accessor &styler, Sci_Position pos, Sci_Position len) {
  function IsPyStringTypeChar (line 73) | constexpr bool IsPyStringTypeChar(int ch, literalsAllowed allowed) noexc...
  function IsQuote (line 80) | constexpr bool IsQuote(int ch) {
  function IsRawPrefix (line 84) | constexpr bool IsRawPrefix(int ch) {
  function IsPyStringStart (line 88) | bool IsPyStringStart(int ch, int chNext, int chNext2, literalsAllowed al...
  function IsPyFStringState (line 110) | constexpr bool IsPyFStringState(int st) noexcept {
  function IsPySingleQuoteStringState (line 114) | constexpr bool IsPySingleQuoteStringState(int st) noexcept {
  function IsPyTripleQuoteStringState (line 118) | constexpr bool IsPyTripleQuoteStringState(int st) noexcept {
  function GetPyStringQuoteChar (line 122) | char GetPyStringQuoteChar(int st) noexcept {
  function PushStateToStack (line 131) | void PushStateToStack(int state, std::vector<SingleFStringExpState> &sta...
  function PopFromStateStack (line 138) | int PopFromStateStack(std::vector<SingleFStringExpState> &stack, SingleF...
  function GetPyStringState (line 156) | int GetPyStringState(Accessor &styler, Sci_Position i, Sci_PositionU *ne...
  function IsAWordChar (line 206) | bool IsAWordChar(int ch, bool unicodeIdentifiers) noexcept {
  function IsAWordStart (line 217) | bool IsAWordStart(int ch, bool unicodeIdentifiers) noexcept {
  function IsFirstNonWhitespace (line 228) | bool IsFirstNonWhitespace(Sci_Position pos, Accessor &styler) {
  function GetNextNonWhitespaceChar (line 239) | unsigned char GetNextNonWhitespaceChar(Accessor &styler, Sci_PositionU p...
  function IsMatchOrCaseIdentifier (line 258) | bool IsMatchOrCaseIdentifier(const StyleContext &sc, Accessor &styler, c...
  type OptionsPython (line 288) | struct OptionsPython {
    method literalsAllowed (line 304) | [[nodiscard]] literalsAllowed AllowedLiterals() const noexcept {
  type OptionSetPython (line 320) | struct OptionSetPython : public OptionSet<OptionsPython> {
    method OptionSetPython (line 321) | OptionSetPython() {
  class LexerPython (line 400) | class LexerPython : public DefaultLexer {
    method LexerPython (line 409) | explicit LexerPython() :
    method Release (line 413) | void SCI_METHOD Release() override {
    method Version (line 416) | int SCI_METHOD Version() const override {
    method PropertyType (line 422) | int SCI_METHOD PropertyType(const char *name) override {
    method LineEndTypesSupported (line 443) | int SCI_METHOD LineEndTypesSupported() override {
    method AllocateSubStyles (line 447) | int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) over...
    method SubStylesStart (line 450) | int SCI_METHOD SubStylesStart(int styleBase) override {
    method SubStylesLength (line 453) | int SCI_METHOD SubStylesLength(int styleBase) override {
    method StyleFromSubStyle (line 456) | int SCI_METHOD StyleFromSubStyle(int subStyle) override {
    method PrimaryStyleFromStyle (line 460) | int SCI_METHOD PrimaryStyleFromStyle(int style) override {
    method FreeSubStyles (line 463) | void SCI_METHOD FreeSubStyles() override {
    method SetIdentifiers (line 466) | void SCI_METHOD SetIdentifiers(int style, const char *identifiers) ove...
    method DistanceToSecondaryStyles (line 469) | int SCI_METHOD DistanceToSecondaryStyles() override {
    method ILexer5 (line 476) | static ILexer5 *LexerFactoryPython() {
  function Sci_Position (line 484) | Sci_Position SCI_METHOD LexerPython::PropertySet(const char *key, const ...
  function Sci_Position (line 491) | Sci_Position SCI_METHOD LexerPython::WordListSet(int n, const char *wl) {
  function IsCommentLine (line 930) | bool IsCommentLine(Sci_Position line, Accessor &styler) {
  function IsQuoteLine (line 943) | bool IsQuoteLine(Sci_Position line, const Accessor &styler) {

FILE: lexilla/lexers/LexR.cxx
  function IsAWordChar (line 30) | inline bool IsAWordChar(int ch) noexcept {
  function IsAWordStart (line 34) | inline bool IsAWordStart(int ch) noexcept {
  function IsAnOperator (line 38) | constexpr bool IsAnOperator(int ch) noexcept {
  function IsOctalOrHex (line 50) | constexpr bool IsOctalOrHex(int ch, bool hex) noexcept {
  type EscapeSequence (line 55) | struct EscapeSequence {
    method resetEscapeState (line 62) | void resetEscapeState(int state, int chNext) noexcept {
    method atEscapeEnd (line 78) | bool atEscapeEnd(int ch) noexcept {
  function CheckRawString (line 84) | int CheckRawString(LexAccessor &styler, Sci_Position pos, int &dashCount) {
  function ColouriseRDoc (line 105) | void ColouriseRDoc(Sci_PositionU startPos, Sci_Position length, int init...
  function FoldRDoc (line 283) | void FoldRDoc(Sci_PositionU startPos, Sci_Position length, int, WordList...

FILE: lexilla/lexers/LexRaku.cxx
  type OptionsRaku (line 118) | struct OptionsRaku {
    method OptionsRaku (line 124) | OptionsRaku() {
  type OptionSetRaku (line 134) | struct OptionSetRaku : public OptionSet<OptionsRaku> {
    method OptionSetRaku (line 135) | OptionSetRaku() {
  type DelimPair (line 151) | struct DelimPair {
    method DelimPair (line 156) | DelimPair() {
    method isCloser (line 163) | bool isCloser(int ch) const {
  function IsANewLine (line 176) | constexpr bool IsANewLine(int ch) noexcept {
  function IsAWhitespace (line 184) | bool IsAWhitespace(int ch) noexcept {
  function IsAlphabet (line 192) | constexpr bool IsAlphabet(int ch) noexcept {
  function IsCommentLine (line 202) | bool IsCommentLine(Sci_Position line, LexAccessor &styler, int type = SC...
  function ContainsQTo (line 226) | bool ContainsQTo(Sci_Position start, Sci_Position end, LexAccessor &styl...
  function GetBracketCloseChar (line 243) | int GetBracketCloseChar(const int ch) noexcept {
  function IsValidQuoteOpener (line 288) | bool IsValidQuoteOpener(const int ch, DelimPair &dp, int type = RAKUDELI...
  function IsBracketOpenChar (line 327) | bool IsBracketOpenChar(int ch) noexcept {
  function IsValidRegOrQAdjacent (line 336) | bool IsValidRegOrQAdjacent(int ch) noexcept {
  function IsValidRegOrQPrecede (line 345) | bool IsValidRegOrQPrecede(int ch) noexcept {
  function MatchCharInRange (line 354) | bool MatchCharInRange(StyleContext &sc, const Sci_Position length,
  function PrevNonWhitespaceChar (line 370) | int PrevNonWhitespaceChar(StyleContext &sc) {
  function IsQLangStartAtScPos (line 388) | bool IsQLangStartAtScPos(StyleContext &sc, int &type, const Sci_Position...
  function IsRegexStartAtScPos (line 435) | bool IsRegexStartAtScPos(StyleContext &sc, int &type, CharacterSet &set) {
  function IsValidIdentPrecede (line 474) | bool IsValidIdentPrecede(int ch) noexcept {
  function IsValidDelimiter (line 483) | bool IsValidDelimiter(int ch) noexcept {
  function GetDelimiterCloseChar (line 491) | int GetDelimiterCloseChar(int ch) noexcept {
  function Sci_Position (line 503) | Sci_Position GetRepeatCharCount(StyleContext &sc, int chMatch, Sci_Posit...
  function Sci_Position (line 520) | Sci_Position LengthToDelimiter(StyleContext &sc, const DelimPair &dp,
  function Sci_Position (line 580) | Sci_Position LengthToEndHeredoc(const StyleContext &sc, LexAccessor &sty...
  function Sci_Position (line 602) | Sci_Position LengthToNextChar(StyleContext &sc, const Sci_Position lengt...
  function GetRelativeString (line 618) | void GetRelativeString(StyleContext &sc, Sci_Position offset, Sci_Positi...
  class LexerRaku (line 633) | class LexerRaku : public DefaultLexer {
    method LexerRaku (line 652) | explicit LexerRaku() :
    method LexerRaku (line 662) | LexerRaku(const LexerRaku &) = delete;
    method LexerRaku (line 663) | LexerRaku(LexerRaku &&) = delete;
    method Release (line 668) | void SCI_METHOD Release() noexcept override {
    method Version (line 671) | int SCI_METHOD Version() const noexcept override {
    method PropertyType (line 677) | int SCI_METHOD PropertyType(const char *name) override {
    method ILexer5 (line 694) | static ILexer5 *LexerFactoryRaku() {
  function Sci_Position (line 814) | Sci_Position SCI_METHOD LexerRaku::PropertySet(const char *key, const ch...
  function Sci_Position (line 824) | Sci_Position SCI_METHOD LexerRaku::WordListSet(int n, const char *wl) {
  function Sci_Position (line 1010) | Sci_Position LexerRaku::LengthToNonWordChar(StyleContext &sc, Sci_Positi...

FILE: lexilla/lexers/LexRebol.cxx
  function IsAWordChar (line 37) | static inline bool IsAWordChar(const int ch) {
  function IsAWordStart (line 41) | static inline bool IsAWordStart(const int ch, const int ch2) {
  function IsAnOperator (line 46) | static inline bool IsAnOperator(const int ch, const int ch2, const int c...
  function IsBinaryStart (line 65) | static inline bool IsBinaryStart(const int ch, const int ch2, const int ...
  function ColouriseRebolDoc (line 72) | static void ColouriseRebolDoc(Sci_PositionU startPos, Sci_Position lengt...
  function FoldRebolDoc (line 277) | static void FoldRebolDoc(Sci_PositionU startPos, Sci_Position length, in...

FILE: lexilla/lexers/LexRegistry.cxx
  type OptionsRegistry (line 42) | struct OptionsRegistry {
  type OptionSetRegistry (line 47) | struct OptionSetRegistry : public OptionSet<OptionsRegistry> {
    method OptionSetRegistry (line 48) | OptionSetRegistry() {
  class LexerRegistry (line 55) | class LexerRegistry : public DefaultLexer {
    method IsStringState (line 59) | static bool IsStringState(int state) {
    method IsKeyPathState (line 63) | static bool IsKeyPathState(int state) {
    method AtValueType (line 67) | static bool AtValueType(LexAccessor &styler, Sci_Position start) {
    method IsNextNonWhitespace (line 81) | static bool IsNextNonWhitespace(LexAccessor &styler, Sci_Position star...
    method AtValueName (line 98) | static bool AtValueName(LexAccessor &styler, Sci_Position start) {
    method AtKeyPathEnd (line 121) | static bool AtKeyPathEnd(LexAccessor &styler, Sci_Position start) {
    method AtGUID (line 137) | static bool AtGUID(LexAccessor &styler, Sci_Position start) {
    method LexerRegistry (line 164) | LexerRegistry() : DefaultLexer("registry", SCLEX_REGISTRY) {}
    method Version (line 166) | int SCI_METHOD Version() const override {
    method Release (line 169) | void SCI_METHOD Release() override {
    method PropertyType (line 175) | int SCI_METHOD PropertyType(const char *name) override {
    method Sci_Position (line 181) | Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) ...
    method Sci_Position (line 191) | Sci_Position SCI_METHOD WordListSet(int, const char *) override {
    method ILexer5 (line 197) | static ILexer5 *LexerFactoryRegistry() {

FILE: lexilla/lexers/LexRuby.cxx
  function isEOLChar (line 34) | constexpr bool isEOLChar(char ch) noexcept {
  function isSafeASCII (line 38) | constexpr bool isSafeASCII(char ch) noexcept {
  function isHighBitChar (line 43) | constexpr bool isHighBitChar(char ch) noexcept {
  function isSafeAlpha (line 47) | inline bool isSafeAlpha(char ch) noexcept {
  function isSafeAlphaOrHigh (line 51) | inline bool isSafeAlphaOrHigh(char ch) noexcept {
  function isSafeAlnum (line 55) | inline bool isSafeAlnum(char ch) noexcept {
  function isSafeAlnumOrHigh (line 59) | inline bool isSafeAlnumOrHigh(char ch) noexcept {
  function isSafeDigit (line 63) | inline bool isSafeDigit(char ch) noexcept {
  function isSafeWordcharOrHigh (line 67) | inline bool isSafeWordcharOrHigh(char ch) noexcept {
  function isWhiteSpace (line 74) | constexpr bool isWhiteSpace(char ch) noexcept {
  function isQestionMarkChar (line 78) | inline bool isQestionMarkChar(char chNext, char chNext2) noexcept {
  function followsDot (line 92) | bool followsDot(Sci_PositionU pos, Accessor &styler) {
  function ClassifyWordRb (line 125) | int ClassifyWordRb(Sci_PositionU start, Sci_PositionU end, char ch, Word...
  function isMatch (line 189) | bool isMatch(Accessor &styler, Sci_Position lengthDoc, Sci_Position pos,...
  function lookingAtHereDocDelim (line 206) | bool lookingAtHereDocDelim(Accessor &styler, Sci_Position pos, Sci_Posit...
  function opposite (line 222) | constexpr char opposite(char ch) noexcept {
  function redo_char (line 237) | void redo_char(Sci_Position &i, char &ch, char &chNext, char &chNext2, i...
  function advance_char (line 244) | void advance_char(Sci_Position &i, char &ch, char &chNext, char &chNext2...
  function currLineContainsHereDelims (line 251) | bool currLineContainsHereDelims(Sci_Position &startPos, Accessor &styler) {
  class QuoteCls (line 282) | class QuoteCls {
    method QuoteCls (line 287) | QuoteCls() noexcept {
    method New (line 290) | void New() noexcept {
    method Open (line 295) | void Open(char u) noexcept {
  function isPercentLiteral (line 302) | constexpr bool isPercentLiteral(int state) noexcept {
  function isInterpolableLiteral (line 314) | constexpr bool isInterpolableLiteral(int state) noexcept {
  function isSingleSpecialVariable (line 322) | inline bool isSingleSpecialVariable(char ch) noexcept {
  function InterpolateVariable (line 327) | void InterpolateVariable(LexAccessor &styler, int state, Sci_Position &i...
  function isEmptyLine (line 364) | bool isEmptyLine(Sci_Position pos, Accessor &styler) {
  function RE_CanFollowKeyword (line 371) | bool RE_CanFollowKeyword(const char *keyword) noexcept {
  function Sci_Position (line 395) | Sci_Position skipWhitespace(Sci_Position startPos, Sci_Position endPos, ...
  function sureThisIsHeredoc (line 410) | bool sureThisIsHeredoc(Sci_Position iPrev, Accessor &styler, char *prevW...
  function haveTargetMatch (line 460) | bool haveTargetMatch(Sci_Position currPos, Sci_Position lengthDoc, Sci_P...
  function Sci_Position (line 476) | Sci_Position findExpressionStart(Sci_Position pos, Sci_Position min_pos,...
  function sureThisIsNotHeredoc (line 512) | bool sureThisIsNotHeredoc(Sci_Position lt2StartPos, Accessor &styler) {
  function synchronizeDocStart (line 682) | void synchronizeDocStart(Sci_PositionU &startPos, Sci_Position &length, ...
  function ColouriseRbDoc (line 728) | void ColouriseRbDoc(Sci_PositionU startPos, Sci_Position length, int ini...
  function getPrevWord (line 1577) | void getPrevWord(Sci_Position pos, char *prevWord, Accessor &styler, int...
  function keywordIsAmbiguous (line 1595) | bool keywordIsAmbiguous(const char *prevWord) noexcept {
  function keywordIsModifier (line 1614) | bool keywordIsModifier(const char *word, Sci_Position pos, Accessor &sty...
  function keywordDoStartsLoop (line 1724) | bool keywordDoStartsLoop(Sci_Position pos, Accessor &styler) {
  function IsCommentLine (line 1773) | bool IsCommentLine(Sci_Position line, Accessor &styler) {
  function FoldRbDoc (line 1840) | void FoldRbDoc(Sci_PositionU startPos, Sci_Position length, int initStyl...

FILE: lexilla/lexers/LexRust.cxx
  function IsStreamCommentStyle (line 42) | static bool IsStreamCommentStyle(int style) {
  type OptionsRust (line 48) | struct OptionsRust {
    method OptionsRust (line 60) | OptionsRust() {
  type OptionSetRust (line 86) | struct OptionSetRust : public OptionSet<OptionsRust> {
    method OptionSetRust (line 87) | OptionSetRust() {
  class LexerRust (line 121) | class LexerRust : public DefaultLexer {
    method LexerRust (line 126) | LexerRust() : DefaultLexer("rust", SCLEX_RUST) {
    method Release (line 130) | void SCI_METHOD Release() override {
    method Version (line 133) | int SCI_METHOD Version() const override {
    method PropertyType (line 139) | int SCI_METHOD PropertyType(const char *name) override {
    method ILexer5 (line 158) | static ILexer5 *LexerFactoryRust() {
  function Sci_Position (line 163) | Sci_Position SCI_METHOD LexerRust::PropertySet(const char *key, const ch...
  function Sci_Position (line 170) | Sci_Position SCI_METHOD LexerRust::WordListSet(int n, const char *wl) {
  function IsWhitespace (line 181) | static bool IsWhitespace(int c) {
  function IsIdentifierStart (line 186) | static bool IsIdentifierStart(int ch) {
  function IsIdentifierContinue (line 191) | static bool IsIdentifierContinue(int ch) {
  function ScanWhitespace (line 195) | static void ScanWhitespace(Accessor& styler, Sci_Position& pos, Sci_Posi...
  function GrabString (line 204) | static void GrabString(char* s, Accessor& styler, Sci_Position start, Sc...
  function ScanRawIdentifier (line 210) | static void ScanRawIdentifier(Accessor& styler, Sci_Position& pos) {
  function ScanIdentifier (line 228) | static void ScanIdentifier(Accessor& styler, Sci_Position& pos, WordList...
  function ScanDigits (line 256) | static bool ScanDigits(Accessor& styler, Sci_Position& pos, int base) {
  function ScanNumber (line 269) | static void ScanNumber(Accessor& styler, Sci_Position& pos) {
  function IsOneCharOperator (line 361) | static bool IsOneCharOperator(int c) {
  function IsTwoCharOperator (line 371) | static bool IsTwoCharOperator(int c, int n) {
  function IsThreeCharOperator (line 384) | static bool IsThreeCharOperator(int c, int n, int n2) {
  function IsValidCharacterEscape (line 389) | static bool IsValidCharacterEscape(int c) {
  function IsValidStringEscape (line 394) | static bool IsValidStringEscape(int c) {
  function ScanNumericEscape (line 398) | static bool ScanNumericEscape(Accessor &styler, Sci_Position& pos, Sci_P...
  function ScanCharacterLiteralOrLifetime (line 417) | static void ScanCharacterLiteralOrLifetime(Accessor &styler, Sci_Positio...
  type CommentState (line 497) | enum CommentState {
  function ResumeBlockComment (line 507) | static void ResumeBlockComment(Accessor &styler, Sci_Position& pos, Sci_...
  function ResumeLineComment (line 562) | static void ResumeLineComment(Accessor &styler, Sci_Position& pos, Sci_P...
  function ScanComments (line 586) | static void ScanComments(Accessor &styler, Sci_Position& pos, Sci_Positi...
  function ResumeString (line 596) | static void ResumeString(Accessor &styler, Sci_Position& pos, Sci_Positi...
  function ResumeRawString (line 647) | static void ResumeRawString(Accessor &styler, Sci_Position& pos, Sci_Pos...
  function ScanRawString (line 675) | static void ScanRawString(Accessor &styler, Sci_Position& pos, Sci_Posit...

FILE: lexilla/lexers/LexSAS.cxx
  function ColouriseSASDoc (line 38) | static void ColouriseSASDoc(Sci_PositionU startPos, Sci_Position length,...
  function FoldSASDoc (line 159) | static void FoldSASDoc(Sci_PositionU startPos, Sci_Position length, int,...

FILE: lexilla/lexers/LexSML.cxx
  function issml (line 34) | inline int  issml(int c) {return isalnum(c) || c == '_';}
  function issmlf (line 35) | inline int issmlf(int c) {return isalpha(c) || c == '_';}
  function issmld (line 36) | inline int issmld(int c) {return isdigit(c) || c == '_';}
  function ColouriseSMLDoc (line 41) | static void ColouriseSMLDoc(
  function FoldSMLDoc (line 213) | static void FoldSMLDoc(

FILE: lexilla/lexers/LexSQL.cxx
  function IsAWordChar (line 41) | bool IsAWordChar(int ch, bool sqlAllowDottedWord) noexcept {
  function IsAWordStart (line 48) | bool IsAWordStart(int ch) noexcept {
  function IsADoxygenChar (line 52) | bool IsADoxygenChar(int ch) noexcept {
  function IsANumberChar (line 59) | bool IsANumberChar(int ch, int chPrev) noexcept {
  class SQLStates (line 69) | class SQLStates {
    method Set (line 71) | void Set(Sci_Position lineNumber, unsigned short int sqlStatesLine) {
    method sql_state_t (line 75) | sql_state_t IgnoreWhen (sql_state_t sqlStatesLine, bool enable) {
    method sql_state_t (line 84) | sql_state_t IntoCondition (sql_state_t sqlStatesLine, bool enable) {
    method sql_state_t (line 93) | sql_state_t IntoExceptionBlock (sql_state_t sqlStatesLine, bool enable) {
    method sql_state_t (line 102) | sql_state_t IntoDeclareBlock (sql_state_t sqlStatesLine, bool enable) {
    method sql_state_t (line 111) | sql_state_t IntoMergeStatement (sql_state_t sqlStatesLine, bool enable) {
    method sql_state_t (line 120) | sql_state_t CaseMergeWithoutWhenFound (sql_state_t sqlStatesLine, bool...
    method sql_state_t (line 128) | sql_state_t IntoSelectStatementOrAssignment (sql_state_t sqlStatesLine...
    method sql_state_t (line 136) | sql_state_t BeginCaseBlock (sql_state_t sqlStatesLine) {
    method sql_state_t (line 143) | sql_state_t EndCaseBlock (sql_state_t sqlStatesLine) {
    method sql_state_t (line 150) | sql_state_t IntoCreateStatement (sql_state_t sqlStatesLine, bool enabl...
    method sql_state_t (line 159) | sql_state_t IntoCreateViewStatement (sql_state_t sqlStatesLine, bool e...
    method sql_state_t (line 168) | sql_state_t IntoCreateViewAsStatement (sql_state_t sqlStatesLine, bool...
    method IsIgnoreWhen (line 177) | bool IsIgnoreWhen (sql_state_t sqlStatesLine) {
    method IsIntoCondition (line 181) | bool IsIntoCondition (sql_state_t sqlStatesLine) {
    method IsIntoCaseBlock (line 185) | bool IsIntoCaseBlock (sql_state_t sqlStatesLine) {
    method IsIntoExceptionBlock (line 189) | bool IsIntoExceptionBlock (sql_state_t sqlStatesLine) {
    method IsIntoSelectStatementOrAssignment (line 192) | bool IsIntoSelectStatementOrAssignment (sql_state_t sqlStatesLine) {
    method IsCaseMergeWithoutWhenFound (line 195) | bool IsCaseMergeWithoutWhenFound (sql_state_t sqlStatesLine) {
    method IsIntoDeclareBlock (line 199) | bool IsIntoDeclareBlock (sql_state_t sqlStatesLine) {
    method IsIntoMergeStatement (line 203) | bool IsIntoMergeStatement (sql_state_t sqlStatesLine) {
    method IsIntoCreateStatement (line 207) | bool IsIntoCreateStatement (sql_state_t sqlStatesLine) {
    method IsIntoCreateViewStatement (line 211) | bool IsIntoCreateViewStatement (sql_state_t sqlStatesLine) {
    method IsIntoCreateViewAsStatement (line 215) | bool IsIntoCreateViewAsStatement (sql_state_t sqlStatesLine) {
    method sql_state_t (line 219) | sql_state_t ForLine(Sci_Position lineNumber) {
    method SQLStates (line 223) | SQLStates() {}
  type OptionsSQL (line 243) | struct OptionsSQL {
    method OptionsSQL (line 253) | OptionsSQL() {
  type OptionSetSQL (line 278) | struct OptionSetSQL : public OptionSet<OptionsSQL> {
    method OptionSetSQL (line 279) | OptionSetSQL() {
  class LexerSQL (line 309) | class LexerSQL : public DefaultLexer {
    method LexerSQL (line 311) | LexerSQL() : DefaultLexer("sql", SCLEX_SQL) {}
    method SCI_METHOD (line 315) | int SCI_METHOD Version () const override {
    method Release (line 319) | void SCI_METHOD Release() override {
    method PropertyType (line 327) | int SCI_METHOD PropertyType(const char *name) override {
    method Sci_Position (line 335) | Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) ...
    method ILexer5 (line 358) | static ILexer5 *LexerFactorySQL() {
    method IsStreamCommentStyle (line 362) | bool IsStreamCommentStyle(int style) {
    method IsCommentStyle (line 369) | bool IsCommentStyle (int style) {
    method IsCommentLine (line 383) | bool IsCommentLine (Sci_Position line, LexAccessor &styler) {
  function Sci_Position (line 411) | Sci_Position SCI_METHOD LexerSQL::WordListSet(int n, const char *wl) {

FILE: lexilla/lexers/LexSTTXT.cxx
  function ClassifySTTXTWord (line 32) | static void ClassifySTTXTWord(WordList *keywordlists[], StyleContext &sc)
  function ColouriseSTTXTDoc (line 64) | static void ColouriseSTTXTDoc (Sci_PositionU startPos, Sci_Position leng...
  function IsCommentLine (line 203) | static bool IsCommentLine(Sci_Position line, Accessor &styler, bool type)
  function IsPragmaLine (line 240) | static bool IsPragmaLine(Sci_Position line, Accessor &styler)
  function GetRangeUpper (line 258) | static void GetRangeUpper(Sci_PositionU start,Sci_PositionU end,Accessor...
  function ClassifySTTXTWordFoldPoint (line 268) | static void ClassifySTTXTWordFoldPoint(int &levelCurrent,Sci_PositionU l...
  function FoldSTTXTDoc (line 325) | static void FoldSTTXTDoc(Sci_PositionU startPos, Sci_Position length, in...

FILE: lexilla/lexers/LexScriptol.cxx
  function ClassifyWordSol (line 29) | static void ClassifyWordSol(Sci_PositionU start, Sci_PositionU end, Word...
  function IsSolComment (line 54) | static bool IsSolComment(Accessor &styler, Sci_Position pos, Sci_Positio...
  function IsSolStringStart (line 73) | static bool IsSolStringStart(char ch)
  function IsSolWordStart (line 79) | static bool IsSolWordStart(char ch)
  function GetSolStringState (line 85) | static int GetSolStringState(Accessor &styler, Sci_Position i, Sci_Posit...
  function ColouriseSolDoc (line 113) | static void ColouriseSolDoc(Sci_PositionU startPos, Sci_Position length,...
  function FoldSolDoc (line 321) | static void FoldSolDoc(Sci_PositionU startPos, Sci_Position length, int ...

FILE: lexilla/lexers/LexSmalltalk.cxx
  function isDecDigit (line 82) | static inline bool isDecDigit(int ch) {return (ch > 0) && (ch < 0x80) &&...
  function isLetter (line 83) | static inline bool isLetter(int ch) {return (ch > 0) && (ch < 0x80) && (...
  function isSpecial (line 84) | static inline bool isSpecial(int ch) {return (ch > 0) && (ch < 0x80) && ...
  function isUpper (line 85) | static inline bool isUpper(int ch) {return (ch > 0) && (ch < 0x80) && ((...
  function isBinSel (line 86) | static inline bool isBinSel(int ch) {return (ch > 0) && (ch < 0x80) && (...
  function isAlphaNumeric (line 89) | static inline bool isAlphaNumeric(int ch) {
  function isDigitOfRadix (line 93) | static inline bool isDigitOfRadix(int ch, int radix)
  function skipComment (line 103) | static inline void skipComment(StyleContext& sc)
  function skipString (line 109) | static inline void skipString(StyleContext& sc)
  function handleHash (line 121) | static void handleHash(StyleContext& sc)
  function handleSpecial (line 146) | static inline void handleSpecial(StyleContext& sc)
  function skipInt (line 160) | static inline void skipInt(StyleContext& sc, int radix)
  function handleNumeric (line 166) | static void handleNumeric(StyleContext& sc)
  function handleBinSel (line 213) | static inline void handleBinSel(StyleContext& sc)
  function handleLetter (line 220) | static void handleLetter(StyleContext& sc, WordList* specialSelectorList)
  function colorizeSmalltalkDoc (line 269) | static void colorizeSmalltalkDoc(Sci_PositionU startPos, Sci_Position le...

FILE: lexilla/lexers/LexSorcus.cxx
  function IsSWordStart (line 36) | static inline bool IsSWordStart(const int ch, const int prev_ch)
  function IsSorcusNumber (line 46) | static inline bool IsSorcusNumber(const int ch, const int prev_ch)
  function IsSorcusOperator (line 56) | static inline bool IsSorcusOperator(const int ch)
  function ColouriseSorcusDoc (line 65) | static void ColouriseSorcusDoc(Sci_PositionU startPos, Sci_Position leng...

FILE: lexilla/lexers/LexSpecman.cxx
  function IsAWordChar (line 32) | static inline bool IsAWordChar(const int ch) {
  function IsANumberChar (line 36) | static inline bool IsANumberChar(const int ch) {
  function IsAWordStart (line 40) | static inline bool IsAWordStart(const int ch) {
  function ColouriseSpecmanDoc (line 44) | static void ColouriseSpecmanDoc(Sci_PositionU startPos, Sci_Position len...
  function FoldNoBoxSpecmanDoc (line 204) | static void FoldNoBoxSpecmanDoc(Sci_PositionU startPos, Sci_Position len...
  function FoldSpecmanDoc (line 273) | static void FoldSpecmanDoc(Sci_PositionU startPos, Sci_Position length, ...
  function ColouriseSpecmanDocSensitive (line 287) | static void ColouriseSpecmanDocSensitive(Sci_PositionU startPos, Sci_Pos...

FILE: lexilla/lexers/LexSpice.cxx
  function ColouriseComment (line 64) | static void ColouriseComment(StyleContext& sc, bool&) {
  function ColouriseDelimiter (line 71) | static void ColouriseDelimiter(StyleContext& sc, bool& apostropheStartsA...
  function ColouriseNumber (line 77) | static void ColouriseNumber(StyleContext& sc, bool& apostropheStartsAttr...
  function ColouriseWhiteSpace (line 100) | static void ColouriseWhiteSpace(StyleContext& sc, bool& ) {
  function ColouriseWord (line 105) | static void ColouriseWord(StyleContext& sc, WordList& keywords, WordList...
  function ColouriseDocument (line 137) | static void ColouriseDocument(
  function IsDelimiterCharacter (line 179) | static inline bool IsDelimiterCharacter(int ch) {
  function IsSeparatorOrDelimiterCharacter (line 203) | static inline bool IsSeparatorOrDelimiterCharacter(int ch) {

FILE: lexilla/lexers/LexStata.cxx
  function ColouriseStataDoc (line 38) | static void ColouriseStataDoc(Sci_PositionU startPos, Sci_Position lengt...
  function FoldStataDoc (line 143) | static void FoldStataDoc(Sci_PositionU startPos, Sci_Position length, in...

FILE: lexilla/lexers/LexTACL.cxx
  function isTACLoperator (line 34) | inline bool isTACLoperator(char ch)
  function isTACLwordchar (line 39) | inline bool isTACLwordchar(char ch)
  function isTACLwordstart (line 44) | inline bool isTACLwordstart(char ch)
  function getRange (line 49) | static void getRange(Sci_PositionU start,
  function IsStreamCommentStyle (line 62) | static bool IsStreamCommentStyle(int style) {
  function ColourTo (line 69) | static void ColourTo(Accessor &styler, Sci_PositionU end, unsigned int a...
  function classifyWordTACL (line 77) | static int classifyWordTACL(Sci_PositionU start, Sci_PositionU end, /*Wo...
  function classifyFoldPointTACL (line 117) | static int classifyFoldPointTACL(const char* s) {
  function ColouriseTACLDoc (line 126) | static void ColouriseTACLDoc(Sci_PositionU startPos, Sci_Position length...
  function FoldTACLDoc (line 284) | static void FoldTACLDoc(Sci_PositionU startPos, Sci_Position length, int...

FILE: lexilla/lexers/LexTADS3.cxx
  function IsEOL (line 62) | static inline bool IsEOL(const int ch, const int chNext) {
  function IsEOLSkip (line 79) | static inline bool IsEOLSkip(StyleContext &sc)
  function IsATADS3Operator (line 96) | static inline bool IsATADS3Operator(const int ch) {
  function IsAWordChar (line 104) | static inline bool IsAWordChar(const int ch) {
  function IsAWordStart (line 108) | static inline bool IsAWordStart(const int ch) {
  function IsAHexDigit (line 112) | static inline bool IsAHexDigit(const int ch) {
  function IsAnHTMLChar (line 118) | static inline bool IsAnHTMLChar(int ch) {
  function IsADirectiveChar (line 122) | static inline bool IsADirectiveChar(int ch) {
  function IsANumberStart (line 126) | static inline bool IsANumberStart(StyleContext &sc) {
  function ColouriseTADS3Operator (line 131) | inline static void ColouriseTADS3Operator(StyleContext &sc) {
  function ColouriseTADSHTMLString (line 138) | static void ColouriseTADSHTMLString(StyleContext &sc, int &lineState) {
  function ColouriseTADS3HTMLTagStart (line 198) | static void ColouriseTADS3HTMLTagStart(StyleContext &sc) {
  function ColouriseTADS3HTMLTag (line 209) | static void ColouriseTADS3HTMLTag(StyleContext &sc, int &lineState) {
  function ColouriseTADS3Keyword (line 272) | static void ColouriseTADS3Keyword(StyleContext &sc,
  function ColouriseTADS3MsgParam (line 306) | static void ColouriseTADS3MsgParam(StyleContext &sc, int &lineState) {
  function ColouriseTADS3LibDirective (line 347) | static void ColouriseTADS3LibDirective(StyleContext &sc, int &lineState) {
  function ColouriseTADS3String (line 385) | static void ColouriseTADS3String(StyleContext &sc, int &lineState) {
  function ColouriseTADS3Comment (line 449) | static void ColouriseTADS3Comment(StyleContext &sc, int endState) {
  function ColouriseToEndOfLine (line 464) | static void ColouriseToEndOfLine(StyleContext &sc, int initState, int en...
  function ColouriseTADS3Number (line 481) | static void ColouriseTADS3Number(StyleContext &sc) {
  function ColouriseTADS3Doc (line 517) | static void ColouriseTADS3Doc(Sci_PositionU startPos, Sci_Position lengt...
  function IsStringTransition (line 679) | static inline bool IsStringTransition(int s1, int s2) {
  function IsATADS3Punctuation (line 689) | static inline bool IsATADS3Punctuation(const int ch) {
  function IsAnIdentifier (line 693) | static inline bool IsAnIdentifier(const int style) {
  function IsAnOperator (line 700) | static inline bool IsAnOperator(const int style) {
  function IsSpaceEquivalent (line 704) | static inline bool IsSpaceEquivalent(const int ch, const int style) {
  function peekAhead (line 711) | static char peekAhead(Sci_PositionU startPos, Sci_PositionU endPos,
  function FoldTADS3Doc (line 732) | static void FoldTADS3Doc(Sci_PositionU startPos, Sci_Position length, in...

FILE: lexilla/lexers/LexTAL.cxx
  function isTALoperator (line 34) | inline bool isTALoperator(char ch)
  function isTALwordchar (line 39) | inline bool isTALwordchar(char ch)
  function isTALwordstart (line 44) | inline bool isTALwordstart(char ch)
  function getRange (line 49) | static void getRange(Sci_PositionU start,
  function IsStreamCommentStyle (line 62) | static bool IsStreamCommentStyle(int style) {
  function ColourTo (line 69) | static void ColourTo(Accessor &styler, Sci_PositionU end, unsigned int a...
  function classifyWordTAL (line 77) | static int classifyWordTAL(Sci_PositionU start, Sci_PositionU end, /*Wor...
  function classifyFoldPointTAL (line 113) | static int classifyFoldPointTAL(const char* s) {
  function ColouriseTALDoc (line 126) | static void ColouriseTALDoc(Sci_PositionU startPos, Sci_Position length,...
  function FoldTALDoc (line 272) | static void FoldTALDoc(Sci_PositionU startPos, Sci_Position length, int ...

FILE: lexilla/lexers/LexTCL.cxx
  function IsAWordChar (line 32) | static inline bool IsAWordChar(int ch) {
  function IsAWordStart (line 37) | static inline bool IsAWordStart(int ch) {
  function IsANumberChar (line 41) | static inline bool IsANumberChar(int ch) {
  function ColouriseTCLDoc (line 49) | static void ColouriseTCLDoc(Sci_PositionU startPos, Sci_Position length,...

FILE: lexilla/lexers/LexTCMD.cxx
  function IsAlphabetic (line 33) | static bool IsAlphabetic(int ch) {
  function AtEOL (line 37) | static inline bool AtEOL(Accessor &styler, Sci_PositionU i) {
  function IsBOperator (line 42) | static bool IsBOperator(char ch) {
  function IsBSeparator (line 47) | static bool IsBSeparator(char ch) {
  function GetBatchVarLen (line 52) | static unsigned int GetBatchVarLen( char *wordBuffer )
  function ColouriseTCMDLine (line 96) | static void ColouriseTCMDLine( char *lineBuffer, Sci_PositionU lengthLin...
  function ColouriseTCMDDoc (line 405) | static void ColouriseTCMDDoc( Sci_PositionU startPos, Sci_Position lengt...
  function StrUpr (line 430) | static void StrUpr(char *s) {
  function FoldTCMDDoc (line 438) | static void FoldTCMDDoc(Sci_PositionU startPos, Sci_Position length, int...

FILE: lexilla/lexers/LexTeX.cxx
  function endOfLine (line 73) | static inline bool endOfLine(Accessor &styler, Sci_PositionU i) {
  function isTeXzero (line 78) | static inline bool isTeXzero(int ch) {
  function isTeXone (line 83) | static inline bool isTeXone(int ch) {
  function isTeXtwo (line 90) | static inline bool isTeXtwo(int ch) {
  function isTeXthree (line 95) | static inline bool isTeXthree(int ch) {
  function isTeXfour (line 102) | static inline bool isTeXfour(int ch) {
  function isTeXfive (line 107) | static inline bool isTeXfive(int ch) {
  function isTeXsix (line 113) | static inline bool isTeXsix(int ch) {
  function isTeXseven (line 118) | static inline bool isTeXseven(int ch) {
  function CheckTeXInterface (line 125) | static int CheckTeXInterface(
  function ColouriseTeXDoc (line 173) | static void ColouriseTeXDoc(
  function isNumber (line 290) | static inline bool isNumber(int ch) {
  function isWordChar (line 297) | static inline bool isWordChar(int ch) {
  function Sci_Position (line 301) | static Sci_Position ParseTeXCommand(Sci_PositionU pos, Accessor &styler,...
  function classifyFoldPointTeXPaired (line 324) | static int classifyFoldPointTeXPaired(const char* s) {
  function classifyFoldPointTeXUnpaired (line 343) | static int classifyFoldPointTeXUnpaired(const char* s) {
  function IsTeXCommentLine (line 366) | static bool IsTeXCommentLine(Sci_Position line, Accessor &styler) {
  function FoldTexDoc (line 384) | static void FoldTexDoc(Sci_PositionU startPos, Sci_Position length, int,...

FILE: lexilla/lexers/LexTxt2tags.cxx
  function IsNewline (line 44) | static inline bool IsNewline(const int ch) {
  function FollowToLineEnd (line 49) | static bool FollowToLineEnd(const int ch, const int state, const Sci_Pos...
  function HasPrevLineContent (line 66) | static bool HasPrevLineContent(StyleContext &sc) {
  function IsValidHrule (line 81) | static bool IsValidHrule(const Sci_PositionU endPos, StyleContext &sc) {
  function ColorizeTxt2tagsDoc (line 107) | static void ColorizeTxt2tagsDoc(Sci_PositionU startPos, Sci_Position len...

FILE: lexilla/lexers/LexVB.cxx
  function IsVBComment (line 34) | bool IsVBComment(Accessor &styler, Sci_Position pos, Sci_Position len) {
  function IsTypeCharacter (line 38) | constexpr bool IsTypeCharacter(int ch) noexcept {
  function IsAWordChar (line 43) | bool IsAWordChar(int ch) noexcept {
  function IsAWordStart (line 48) | bool IsAWordStart(int ch) noexcept {
  function IsANumberChar (line 53) | bool IsANumberChar(int ch) noexcept {
  function ColouriseVBDoc (line 61) | void ColouriseVBDoc(Sci_PositionU startPos, Sci_Position length, int ini...
  function FoldVBDoc (line 265) | void FoldVBDoc(Sci_PositionU startPos, Sci_Position length, int,
  function ColouriseVBNetDoc (line 307) | void ColouriseVBNetDoc(Sci_PositionU startPos, Sci_Position length, int ...
  function ColouriseVBScriptDoc (line 312) | void ColouriseVBScriptDoc(Sci_PositionU startPos, Sci_Position length, i...

FILE: lexilla/lexers/LexVHDL.cxx
  function IsAWordChar (line 45) | static inline bool IsAWordChar(const int ch) {
  function IsAWordStart (line 50) | static inline bool IsAWordStart(const int ch) {
  function IsABlank (line 55) | static inline bool IsABlank(unsigned int ch) {
  function ColouriseVHDLDoc (line 60) | static void ColouriseVHDLDoc(
  function IsCommentLine (line 180) | static bool IsCommentLine(Sci_Position line, Accessor &styler) {
  function IsCommentBlockStart (line 193) | static bool IsCommentBlockStart(Sci_Position line, Accessor &styler)
  function IsCommentBlockEnd (line 207) | static bool IsCommentBlockEnd(Sci_Position line, Accessor &styler)
  function IsCommentStyle (line 222) | static bool IsCommentStyle(char style)
  function FoldNoBoxVHDLDoc (line 229) | static void FoldNoBoxVHDLDoc(
  function FoldVHDLDoc (line 546) | static void FoldVHDLDoc(Sci_PositionU startPos, Sci_Position length, int...

FILE: lexilla/lexers/LexVerilog.cxx
  type PPDefinition (line 44) | struct PPDefinition {
    method PPDefinition (line 50) | PPDefinition(Sci_Position line_, const std::string &key_, const std::s...
  class LinePPState (line 55) | class LinePPState {
    method ValidLevel (line 59) | bool ValidLevel() const {
    method maskLevel (line 62) | int maskLevel() const {
    method LinePPState (line 70) | LinePPState() : state(0), ifTaken(0), level(-1) {
    method IsInactive (line 72) | bool IsInactive() const {
    method CurrentIfTaken (line 75) | bool CurrentIfTaken() const {
    method StartSection (line 78) | void StartSection(bool on) {
    method EndSection (line 90) | void EndSection() {
    method InvertCurrentLevel (line 97) | void InvertCurrentLevel() {
  class PPStates (line 107) | class PPStates {
    method LinePPState (line 110) | LinePPState ForLine(Sci_Position line) const {
    method Add (line 117) | void Add(Sci_Position line, LinePPState lls) {
  type OptionsVerilog (line 124) | struct OptionsVerilog {
    method OptionsVerilog (line 135) | OptionsVerilog() {
  type OptionSetVerilog (line 152) | struct OptionSetVerilog : public OptionSet<OptionsVerilog> {
    method OptionSetVerilog (line 153) | OptionSetVerilog() {
  class LexerVerilog (line 181) | class LexerVerilog : public DefaultLexer {
    type SymbolValue (line 191) | struct SymbolValue {
      method SymbolValue (line 194) | SymbolValue(const std::string &value_="", const std::string &argumen...
      method SymbolValue (line 196) | SymbolValue &operator = (const std::string &value_) {
      method IsMacro (line 201) | bool IsMacro() const {
    method LexerVerilog (line 221) | LexerVerilog() :
    method Version (line 227) | int SCI_METHOD Version() const override {
    method Release (line 230) | void SCI_METHOD Release() override {
    method PropertyType (line 236) | int SCI_METHOD PropertyType(const char* name) override {
    method Sci_Position (line 242) | Sci_Position SCI_METHOD PropertySet(const char* key, const char* val) ...
    method LineEndTypesSupported (line 257) | int SCI_METHOD LineEndTypesSupported() override {
    method AllocateSubStyles (line 260) | int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) over...
    method SubStylesStart (line 263) | int SCI_METHOD SubStylesStart(int styleBase) override {
    method SubStylesLength (line 266) | int SCI_METHOD SubStylesLength(int styleBase) override {
    method StyleFromSubStyle (line 269) | int SCI_METHOD StyleFromSubStyle(int subStyle) override {
    method PrimaryStyleFromStyle (line 274) | int SCI_METHOD PrimaryStyleFromStyle(int style) override {
    method FreeSubStyles (line 277) | void SCI_METHOD FreeSubStyles() override {
    method SetIdentifiers (line 280) | void SCI_METHOD SetIdentifiers(int style, const char *identifiers) ove...
    method DistanceToSecondaryStyles (line 283) | int SCI_METHOD DistanceToSecondaryStyles() override {
    method ILexer5 (line 289) | static ILexer5* LexerFactoryVerilog() {
    method MaskActive (line 292) | static int MaskActive(int style) {
  function Sci_Position (line 298) | Sci_Position SCI_METHOD LexerVerilog::WordListSet(int n, const char *wl) {
  function IsAWordChar (line 358) | static inline bool IsAWordChar(const int ch) {
  function IsAWordStart (line 362) | static inline bool IsAWordStart(const int ch) {
  function AllUpperCase (line 366) | static inline bool AllUpperCase(const char *a) {
  type After (line 375) | struct After {
    method After (line 377) | explicit After(Sci_Position line_) : line(line_) {}
  function GetRestOfLine (line 383) | static std::string GetRestOfLine(LexAccessor &styler, Sci_Position start...
  function IsSpaceOrTab (line 400) | static bool IsSpaceOrTab(int ch) {
  function IsStreamCommentStyle (line 775) | static bool IsStreamCommentStyle(int style) {
  function IsCommentLine (line 779) | static bool IsCommentLine(Sci_Position line, LexAccessor &styler) {

FILE: lexilla/lexers/LexVisualProlog.cxx
  type OptionsVisualProlog (line 51) | struct OptionsVisualProlog {
    method OptionsVisualProlog (line 54) | OptionsVisualProlog() {
  type OptionSetVisualProlog (line 68) | struct OptionSetVisualProlog : public OptionSet<OptionsVisualProlog> {
    method OptionSetVisualProlog (line 69) | OptionSetVisualProlog() {
  function LexicalClass (line 101) | LexicalClass getLexicalClass(int style) {
  class LexerVisualProlog (line 111) | class LexerVisualProlog : public DefaultLexer {
    method LexerVisualProlog (line 119) | LexerVisualProlog() : DefaultLexer("visualprolog", SCLEX_VISUALPROLOG) {
    method Release (line 123) | void SCI_METHOD Release() override {
    method Version (line 126) | int SCI_METHOD Version() const override {
    method PropertyType (line 132) | int SCI_METHOD PropertyType(const char* name) override {
    method NamedStyles (line 153) | int SCI_METHOD NamedStyles() override {
    method ILexer5 (line 172) | static ILexer5* LexerFactoryVisualProlog() {
  function Sci_Position (line 177) | Sci_Position SCI_METHOD LexerVisualProlog::PropertySet(const char* key, ...
  function Sci_Position (line 184) | Sci_Position SCI_METHOD LexerVisualProlog::WordListSet(int n, const char...
  function isLowerLetter (line 212) | static bool isLowerLetter(int ch) {
  function isUpperLetter (line 216) | static bool isUpperLetter(int ch) {
  function isAlphaNum (line 220) | static bool isAlphaNum(int ch) {
  function isStringVerbatimOpenClose (line 225) | static bool isStringVerbatimOpenClose(int ch) {
  function isIdChar (line 230) | static bool isIdChar(int ch) {
  function endLookAhead (line 235) | static void endLookAhead(char s[], LexAccessor& styler, Sci_Position sta...
  class lineState (line 251) | class lineState {
    method isOpenStringVerbatim (line 257) | bool isOpenStringVerbatim(int next) {
    type kind (line 301) | enum kind {
    method setState (line 308) | void setState(int state) {
    method getState (line 314) | int getState() {
    method enter (line 318) | void enter(kind k) {
    method leave (line 322) | void leave(kind k) {
    method kind (line 327) | kind currentKind() {
    method kind (line 330) | kind stateKind2(int ks) {
    method kind (line 343) | kind stateKind() {

FILE: lexilla/lexers/LexX12.cxx
  class LexerX12 (line 31) | class LexerX12 : public DefaultLexer
    method ILexer5 (line 37) | static ILexer5 *Factory() {
    method Version (line 41) | int SCI_METHOD Version() const override
    method Release (line 45) | void SCI_METHOD Release() override
    method PropertyType (line 54) | int SCI_METHOD PropertyType(const char *) override
    method Sci_Position (line 65) | Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) ...
    method Sci_Position (line 81) | Sci_Position SCI_METHOD WordListSet(int, const char *) override
    type Terminator (line 93) | struct Terminator
  function Sci_PositionU (line 299) | Sci_PositionU LexerX12::FindPreviousSegmentStart(IDocument *pAccess, Sci...

FILE: lexilla/lexers/LexYAML.cxx
  function AtEOL (line 38) | inline bool AtEOL(Accessor &styler, Sci_PositionU i) {
  function IsWhiteSpaceOrEOL (line 47) | constexpr bool IsWhiteSpaceOrEOL(char ch) noexcept {
  function SpaceCount (line 51) | unsigned int SpaceCount(char* lineBuffer) noexcept {
  function KeywordAtChar (line 63) | bool KeywordAtChar(const char* lineBuffer, char* startComment, const Wor...
  function ColouriseYAMLLine (line 86) | void ColouriseYAMLLine(
  function ColouriseYAMLDoc (line 218) | void ColouriseYAMLDoc(Sci_PositionU startPos, Sci_Position length, int, ...
  function IsCommentLine (line 242) | bool IsCommentLine(Sci_Position line, Accessor &styler) {
  function FoldYAMLDoc (line 249) | void FoldYAMLDoc(Sci_PositionU startPos, Sci_Position length, int /*init...

FILE: lexilla/lexlib/Accessor.h
  function namespace (line 11) | namespace Lexilla {

FILE: lexilla/lexlib/CatalogueModules.h
  function namespace (line 13) | namespace Lexilla {
  function AddLexerModule (line 38) | void AddLexerModule(LexerModule *plm) {
  function AddLexerModules (line 42) | void AddLexerModules(std::initializer_list<LexerModule *> modules) {
  function LexerFactoryFunction (line 57) | LexerFactoryFunction Factory(size_t index) const noexcept {

FILE: lexilla/lexlib/CharacterCategory.cxx
  type Lexilla (line 16) | namespace Lexilla {
    function CharacterCategory (line 4051) | CharacterCategory CategoriseCharacter(int character) noexcept {
    type OtherID (line 4069) | enum class OtherID { oidNone, oidStart, oidContinue }
    function OtherID (line 4074) | OtherID OtherIDOfCharacter(int character) noexcept {
    function IsIdPattern (line 4098) | constexpr bool IsIdPattern(int character) noexcept {
    function OmitXidStart (line 4102) | bool OmitXidStart(int character) noexcept {
    function OmitXidContinue (line 4133) | bool OmitXidContinue(int character) noexcept {
    function IsIdStart (line 4164) | bool IsIdStart(int character) noexcept {
    function IsIdContinue (line 4179) | bool IsIdContinue(int character) noexcept {
    function IsXidStart (line 4193) | bool IsXidStart(int character) noexcept {
    function IsXidContinue (line 4202) | bool IsXidContinue(int character) noexcept {

FILE: lexilla/lexlib/CharacterCategory.h
  function namespace (line 11) | namespace Lexilla {

FILE: lexilla/lexlib/CharacterSet.cxx
  type Lexilla (line 18) | namespace Lexilla {
    function CompareCaseInsensitive (line 20) | int CompareCaseInsensitive(const char *a, const char *b) noexcept {
    function EqualCaseInsensitive (line 35) | bool EqualCaseInsensitive(std::string_view a, std::string_view b) noex...
    function CompareNCaseInsensitive (line 47) | int CompareNCaseInsensitive(const char *a, const char *b, size_t len) ...

FILE: lexilla/lexlib/CharacterSet.h
  function namespace (line 11) | namespace Lexilla {
  function Add (line 44) | void Add(int val) noexcept {
  function AddString (line 49) | void AddString(const char *setToAdd) noexcept {
  function Contains (line 56) | bool Contains(int val) const noexcept {
  function Contains (line 62) | bool Contains(char ch) const noexcept {
  function AnyOf (line 74) | bool AnyOf(T t, Args... args) noexcept {
  function AnyOf (line 83) | void AnyOf([[maybe_unused]] T *t, [[maybe_unused]] Args... args) noexcep...
  function AnyOf (line 85) | void AnyOf([[maybe_unused]] const T *t, [[maybe_unused]] Args... args) n...
  function IsASpace (line 87) | constexpr bool IsASpace(int ch) noexcept {
  function IsASpaceOrTab (line 91) | constexpr bool IsASpaceOrTab(int ch) noexcept {
  function IsADigit (line 95) | constexpr bool IsADigit(int ch) noexcept {
  function IsAHeXDigit (line 99) | constexpr bool IsAHeXDigit(int ch) noexcept {
  function IsAnOctalDigit (line 105) | constexpr bool IsAnOctalDigit(int ch) noexcept {
  function IsADigit (line 109) | constexpr bool IsADigit(int ch, int base) noexcept {
  function IsASCII (line 119) | constexpr bool IsASCII(int ch) noexcept {
  function IsLowerCase (line 123) | constexpr bool IsLowerCase(int ch) noexcept {
  function IsUpperCase (line 127) | constexpr bool IsUpperCase(int ch) noexcept {
  function IsUpperOrLowerCase (line 131) | constexpr bool IsUpperOrLowerCase(int ch) noexcept {
  function IsAlphaNumeric (line 135) | constexpr bool IsAlphaNumeric(int ch) noexcept {
  function isspacechar (line 146) | constexpr bool isspacechar(int ch) noexcept {
  function iswordchar (line 150) | constexpr bool iswordchar(int ch) noexcept {
  function iswordstart (line 154) | constexpr bool iswordstart(int ch) noexcept {
  function isoperator (line 158) | constexpr bool isoperator(int ch) noexcept {
  function T (line 174) | T MakeUpperCase(T ch) noexcept {
  function T (line 182) | T MakeLowerCase(T ch) noexcept {

FILE: lexilla/lexlib/DefaultLexer.cxx
  function Sci_Position (line 60) | Sci_Position SCI_METHOD DefaultLexer::PropertySet(const char *, const ch...
  function Sci_Position (line 68) | Sci_Position SCI_METHOD DefaultLexer::WordListSet(int, const char *) {

FILE: lexilla/lexlib/DefaultLexer.h
  function namespace (line 13) | namespace Lexilla {

FILE: lexilla/lexlib/InList.cxx
  type Lexilla (line 17) | namespace Lexilla {
    function InList (line 19) | bool InList(std::string_view value, std::initializer_list<std::string_...
    function InListCaseInsensitive (line 28) | bool InListCaseInsensitive(std::string_view value, std::initializer_li...

FILE: lexilla/lexlib/InList.h
  function namespace (line 11) | namespace Lexilla {

FILE: lexilla/lexlib/LexAccessor.cxx
  type Lexilla (line 20) | namespace Lexilla {

FILE: lexilla/lexlib/LexAccessor.h
  function namespace (line 11) | namespace Lexilla {
  type LexicalClass (line 218) | struct LexicalClass {

FILE: lexilla/lexlib/LexerBase.cxx
  function Sci_Position (line 65) | Sci_Position SCI_METHOD LexerBase::PropertySet(const char *key, const ch...
  function Sci_Position (line 81) | Sci_Position SCI_METHOD LexerBase::WordListSet(int n, const char *wl) {

FILE: lexilla/lexlib/LexerBase.h
  function namespace (line 11) | namespace Lexilla {

FILE: lexilla/lexlib/LexerModule.cxx
  function LexicalClass (line 86) | const LexicalClass *LexerModule::LexClasses() const noexcept {

FILE: lexilla/lexlib/LexerModule.h
  type LexicalClass (line 15) | struct LexicalClass
  type Scintilla (line 19) | typedef Scintilla::ILexer5 *(*LexerFactoryFunction)();
  function class (line 27) | class LexerModule {

FILE: lexilla/lexlib/LexerNoExceptions.cxx
  function Sci_Position (line 28) | Sci_Position SCI_METHOD LexerNoExceptions::PropertySet(const char *key, ...
  function Sci_Position (line 37) | Sci_Position SCI_METHOD LexerNoExceptions::WordListSet(int n, const char...

FILE: lexilla/lexlib/LexerNoExceptions.h
  function namespace (line 11) | namespace Lexilla {

FILE: lexilla/lexlib/LexerSimple.h
  function namespace (line 11) | namespace Lexilla {

FILE: lexilla/lexlib/OptionSet.h
  function namespace (line 13) | namespace Lexilla {
  type std (line 77) | typedef std::map<std::string, Option, std::less<>> OptionMap;
  function AppendName (line 82) | void AppendName(const char *name) {
  function plcoi (line 103) | plcoi pi {}
  function PropertyType (line 112) | int PropertyType(const char *name) const {
  function PropertySet (line 127) | bool PropertySet(T *base, const char *name, const char *val) {
  function DefineWordListSets (line 143) | void DefineWordListSets(const char * const wordListDescriptions[]) {

FILE: lexilla/lexlib/PropSetSimple.cxx
  function mapss (line 27) | mapss *PropsFromPointer(void *impl) noexcept {

FILE: lexilla/lexlib/PropSetSimple.h
  function namespace (line 11) | namespace Lexilla {

FILE: lexilla/lexlib/SparseState.h
  function namespace (line 13) | namespace Lexilla {
  function Set (line 43) | void Set(Sci_Position position, T value) {
  function T (line 49) | T ValueAt(Sci_Position position) {
  function Delete (line 64) | bool Delete(Sci_Position position) {
  function Merge (line 77) | bool Merge(const SparseState<T> &other, Sci_Position ignoreAfter) {

FILE: lexilla/lexlib/StringCopy.h
  function namespace (line 12) | namespace Lexilla {

FILE: lexilla/lexlib/StyleContext.h
  function namespace (line 11) | namespace Lexilla {

FILE: lexilla/lexlib/SubStyles.h
  function namespace (line 11) | namespace Lexilla {
  function Allocate (line 141) | int Allocate(int styleBase, int numberStyles) noexcept {
  function Start (line 155) | int Start(int styleBase) noexcept {
  function Length (line 160) | int Length(int styleBase) noexcept {
  function BaseStyle (line 165) | int BaseStyle(int subStyle) const noexcept {
  function FirstAllocated (line 177) | int FirstAllocated() const noexcept {

FILE: lexilla/lexlib/WordList.cxx
  function ArrayFromWordList (line 27) | std::unique_ptr<char *[]> ArrayFromWordList(char *wordlist, size_t slen,...
  function cmpWords (line 68) | bool cmpWords(const char *a, const char *b) noexcept {

FILE: lexilla/lexlib/WordList.h
  function namespace (line 11) | namespace Lexilla {

FILE: lexilla/scripts/LexFacer.py
  function printLexHFile (line 14) | def printLexHFile(f):
  function RegenerateAll (line 23) | def RegenerateAll(root, _showMaxID):

FILE: lexilla/scripts/LexillaData.py
  function ReadFileAsList (line 50) | def ReadFileAsList(path):
  function FindModules (line 56) | def FindModules(lexFile):
  function FindSectionInList (line 84) | def FindSectionInList(lines, markers):
  function FindLexersInXcode (line 117) | def FindLexersInXcode(xCodeProject):
  function FindProperties (line 161) | def FindProperties(lexFile):
  function FindPropertyDocumentation (line 178) | def FindPropertyDocumentation(lexFile):
  function FindCredits (line 220) | def FindCredits(historyFile):
  function ciKey (line 245) | def ciKey(a):
  function SortListInsensitive (line 249) | def SortListInsensitive(l):
  class LexillaData (line 253) | class LexillaData:
    method __init__ (line 256) | def __init__(self, scintillaRoot):
  function printWrapped (line 309) | def printWrapped(text):

FILE: lexilla/scripts/LexillaGen.py
  function uid24 (line 30) | def uid24():
  function ciLexerKey (line 34) | def ciLexerKey(a):
  function RegenerateXcodeProject (line 45) | def RegenerateXcodeProject(path, lexers, lexerReferences):
  function RegenerateAll (line 95) | def RegenerateAll(rootDirectory):

FILE: lexilla/scripts/LexillaLogo.py
  function drawLines (line 27) | def drawLines(dr):
  function drawGuide (line 38) | def drawGuide(dr):
  function drawLogo (line 48) | def drawLogo():

FILE: lexilla/src/DepGen.py
  function Generate (line 16) | def Generate():

FILE: lexilla/src/Lexilla.cxx
  function AddEachLexer (line 170) | void AddEachLexer() {
  function EXPORT_FUNCTION (line 321) | EXPORT_FUNCTION int CALLING_CONVENTION GetLexerCount() {
  function EXPORT_FUNCTION (line 326) | EXPORT_FUNCTION void CALLING_CONVENTION GetLexerName(unsigned int index,...
  function EXPORT_FUNCTION (line 335) | EXPORT_FUNCTION LexerFactoryFunction CALLING_CONVENTION GetLexerFactory(...
  function CreateLexer (line 340) | CreateLexer(const char *name) {
  function EXPORT_FUNCTION (line 351) | EXPORT_FUNCTION const char * CALLING_CONVENTION LexerNameFromID(int iden...
  function EXPORT_FUNCTION (line 360) | EXPORT_FUNCTION const char * CALLING_CONVENTION GetLibraryPropertyNames() {
  function EXPORT_FUNCTION (line 364) | EXPORT_FUNCTION void CALLING_CONVENTION SetLibraryProperty(const char *,...
  function EXPORT_FUNCTION (line 368) | EXPORT_FUNCTION const char * CALLING_CONVENTION GetNameSpace() {
  function AddStaticLexerModule (line 376) | void AddStaticLexerModule(LexerModule *plm) {

FILE: lexilla/test/TestDocument.cxx
  function UnicodeFromUTF8 (line 42) | int UnicodeFromUTF8(const unsigned char *us) noexcept {
  function UTF8IsTrailByte (line 56) | inline constexpr bool UTF8IsTrailByte(unsigned char ch) noexcept {
  function TrailByteValue (line 60) | constexpr unsigned char TrailByteValue(unsigned char c) {
  function UTF32FromUTF8 (line 67) | std::u32string UTF32FromUTF8(std::string_view svu8) {
  function Sci_Position (line 135) | Sci_Position TestDocument::MaxLine() const noexcept {
  function Sci_Position (line 146) | Sci_Position SCI_METHOD TestDocument::Length() const {
  function Sci_Position (line 161) | Sci_Position SCI_METHOD TestDocument::LineFromPosition(Sci_Position posi...
  function Sci_Position (line 173) | Sci_Position SCI_METHOD TestDocument::LineStart(Sci_Position line) const {
  function Sci_Position (line 254) | Sci_Position SCI_METHOD TestDocument::LineEnd(Sci_Position line) const {
  function Sci_Position (line 269) | Sci_Position SCI_METHOD TestDocument::GetRelativePosition(Sci_Position p...

FILE: lexilla/test/TestDocument.h
  function class (line 13) | class TestDocument : public Scintilla::IDocument {

FILE: lexilla/test/TestLexers.cxx
  function MakeLowerCase (line 32) | constexpr char MakeLowerCase(char c) noexcept {
  function LowerCaseAZ (line 40) | [[maybe_unused]] void LowerCaseAZ(std::string &s) {
  function IntFromString (line 44) | int IntFromString(std::u32string_view s) noexcept {
  function PatternMatch (line 60) | bool PatternMatch(std::u32string_view pattern, std::u32string_view text)...
  function PathMatch (line 227) | bool PathMatch(std::string pattern, std::string relPath) {
  function ReadFile (line 259) | std::string ReadFile(std::filesystem::path path) {
  function MarkedDocument (line 266) | std::string MarkedDocument(const Scintilla::IDocument *pdoc) {
  function PrintLevel (line 285) | void PrintLevel(std::ostringstream &os, int level) {
  function FoldedDocument (line 300) | std::string FoldedDocument(const Scintilla::IDocument *pdoc) {
  function MarkedAndFoldedDocument (line 321) | std::pair<std::string, std::string> MarkedAndFoldedDocument(const Scinti...
  function StringSplit (line 325) | std::vector<std::string> StringSplit(const std::string_view &text, int s...
  function IsSpaceOrTab (line 337) | constexpr bool IsSpaceOrTab(char ch) noexcept {
  function PrintRanges (line 341) | void PrintRanges(const std::vector<bool> &v) {
  class PropertyMap (line 363) | class PropertyMap {
    method Evaluate (line 365) | std::string Evaluate(std::string_view text) {
    method Expand (line 389) | std::string Expand(std::string withVars) {
    method GetFilePatterns (line 410) | std::vector<std::string> GetFilePatterns(const std::string &key) const {
    method ProcessLine (line 431) | bool ProcessLine(std::string_view text, bool ifIsTrue) {
    method ReadFromFile (line 475) | void ReadFromFile(std::filesystem::path path) {
    method GetProperty (line 495) | std::optional<std::string> GetProperty(std::string_view key) const {
    method GetPropertyForFile (line 503) | std::optional<std::string> GetPropertyForFile(std::string_view keyPref...
    method GetPropertyValue (line 524) | std::optional<int> GetPropertyValue(std::string_view key) const {
  function FirstLineDifferent (line 538) | size_t FirstLineDifferent(std::string_view a, std::string_view b) {
  function CheckSame (line 546) | bool CheckSame(std::string_view augmentedText, std::string_view augmente...
  function Substitute (line 562) | int Substitute(std::string &s, const std::string &sFind, const std::stri...
  function WindowsToUnix (line 575) | int WindowsToUnix(std::string &s) {
  function UnixToWindows (line 579) | int UnixToWindows(std::string &s) {
  function StyleLineByLine (line 585) | void StyleLineByLine(TestDocument &doc, Scintilla::ILexer5 *plex) {
  function TestCRLF (line 601) | bool TestCRLF(std::filesystem::path path, const std::string s, Scintilla...
  function TestILexer (line 679) | void TestILexer(Scintilla::ILexer5 *plex) {
  function SetProperties (line 755) | bool SetProperties(Scintilla::ILexer5 *plex, const std::string &language...
  function TestFile (line 831) | bool TestFile(const std::filesystem::path &path, const PropertyMap &prop...
  function TestDirectory (line 920) | bool TestDirectory(std::filesystem::path directory, std::filesystem::pat...
  function AccessLexilla (line 941) | bool AccessLexilla(std::filesystem::path basePath) {
  function FindLexillaDirectory (line 959) | std::filesystem::path FindLexillaDirectory(std::filesystem::path startDi...
  function main (line 990) | int main(int argc, char **argv) {

FILE: lexilla/test/examples/cpp/x.cxx
  function main (line 65) | int main() {

FILE: lexilla/test/examples/python/AllStyles.py
  class ClassName (line 26) | class ClassName:
  function function_name (line 30) | def function_name():
  function fn (line 50) | def fn(): pass

FILE: lexilla/test/examples/python/matchcase.py
  function match (line 12) | def match():

FILE: lexilla/test/examples/python/x.py
  function depunctuate (line 2) | def depunctuate(s):
  function singleuse (line 16) | def singleuse():

FILE: lexilla/test/examples/ruby/AllStyles.rb
  class ClassName (line 31) | class ClassName end
  type Module15 (line 52) | module Module15 end

FILE: lexilla/test/examples/ruby/Issue136.rb
  function b (line 8) | def b # :nodoc:
  function c (line 14) | def c # :nodoc:

FILE: lexilla/test/examples/ruby/Issue65.rb
  function dbg_args (line 1) | def dbg_args(a, b=1, c:, d: 6, &block) = puts("Args passed: #{[a, b, c, ...
  class A (line 4) | class A
    method attr (line 5) | def attr = @attr
    method attr= (line 6) | def attr=(value)
    method attr? (line 9) | def attr? = !!@attr
    method attr! (line 10) | def attr! = @attr = true
    method -@ (line 12) | def -@ = 1
    method +@ (line 13) | def +@ = 1
    method ! (line 14) | def ! = 1
    method ! (line 15) | def !@ = 1
    method + (line 17) | def +(value) = 1 + value
    method - (line 18) | def -(value) = 1 - value
    method * (line 19) | def *(value) = 1 * value
    method ** (line 20) | def **(value) = 1 ** value
    method / (line 21) | def /(value) = 1 / value
    method % (line 22) | def %(value) = 1 % value
    method & (line 23) | def &(value) = 1 & value
    method ^ (line 24) | def ^(value) = 1 ^ value
    method >> (line 25) | def >>(value) = 1 >> value
    method << (line 26) | def <<(value) = 1 << value
    method == (line 27) | def ==(other) = true
    method != (line 28) | def !=(other) = true
    method === (line 29) | def ===(other) = true
    method =~ (line 30) | def =~(other) = true
    method <=> (line 31) | def <=>(other) = true
    method < (line 32) | def <(other) = true
    method <= (line 33) | def <=(other) = true
    method > (line 34) | def >(other) = true
    method >= (line 35) | def >=(other) = true
    method [] (line 37) | def [](a, b) = puts(a + b)
    method []= (line 38) | def []=(a, b, c)
    method dec (line 42) | def dec(((a, b), c)) = puts(a + b + c)
    method say (line 44) | def self.say(*s) = puts(s)
    method a (line 46) | def a = 1
    method ab (line 47) | def ab = 1
  function hello (line 51) | def String.hello
  function broaden (line 56) | def greeting.broaden
  function a (line 60) | def a(b, c) b; c end
  function ab (line 62) | def ab c

FILE: lexilla/test/examples/ruby/x.rb
  class Demo (line 1) | class Demo
    method test (line 2) | def test # A test

FILE: lexilla/test/examples/rust/Issue239.rs
  function main (line 1) | fn main() {

FILE: lexilla/test/examples/rust/Issue33.rs
  function main (line 1) | fn main() {

FILE: lexilla/test/examples/rust/Issue34.rs
  function main (line 4) | fn main() {

FILE: lexilla/test/examples/rust/Issue35.rs
  function main (line 2) | fn main() {}

FILE: lexilla/test/unit/UnitTester.cxx
  function main (line 20) | int main(int argc, char* argv[]) {

FILE: lexilla/test/unit/catch.hpp
  type Catch (line 98) | namespace Catch {
    type CaseSensitive (line 486) | struct CaseSensitive { enum Choice {
      type Choice (line 486) | enum Choice {
    class NonCopyable (line 491) | class NonCopyable {
      method NonCopyable (line 492) | NonCopyable( NonCopyable const& )              = delete;
      method NonCopyable (line 493) | NonCopyable( NonCopyable && )                  = delete;
      method NonCopyable (line 494) | NonCopyable& operator = ( NonCopyable const& ) = delete;
      method NonCopyable (line 495) | NonCopyable& operator = ( NonCopyable && )     = delete;
    type SourceLineInfo (line 502) | struct SourceLineInfo {
      method SourceLineInfo (line 504) | SourceLineInfo() = delete;
      method SourceLineInfo (line 505) | SourceLineInfo( char const* _file, std::size_t _line ) noexcept
      method SourceLineInfo (line 510) | SourceLineInfo( SourceLineInfo const& other )            = default;
      method SourceLineInfo (line 511) | SourceLineInfo& operator = ( SourceLineInfo const& )     = default;
      method SourceLineInfo (line 512) | SourceLineInfo( SourceLineInfo&& )              noexcept = default;
      method SourceLineInfo (line 513) | SourceLineInfo& operator = ( SourceLineInfo&& ) noexcept = default;
      method empty (line 515) | bool empty() const noexcept { return file[0] == '\0'; }
    type StreamEndStop (line 534) | struct StreamEndStop {
    function T (line 538) | T const& operator + ( T const& value, StreamEndStop ) {
    type RegistrarForTagAliases (line 549) | struct RegistrarForTagAliases {
    class TestSpec (line 570) | class TestSpec
      class Pattern (line 5112) | class Pattern {
      class NamePattern (line 5123) | class NamePattern : public Pattern {
      class TagPattern (line 5131) | class TagPattern : public Pattern {
      class ExcludedPattern (line 5139) | class ExcludedPattern : public Pattern {
      type Filter (line 5147) | struct Filter {
      type FilterMatch (line 5155) | struct FilterMatch {
    type ITestInvoker (line 572) | struct ITestInvoker {
    class TestCase (line 577) | class TestCase
    type IConfig (line 578) | struct IConfig
    type ITestCaseRegistry (line 580) | struct ITestCaseRegistry {
    class StringRef (line 606) | class StringRef {
      method StringRef (line 618) | constexpr StringRef() noexcept = default;
      method StringRef (line 622) | constexpr StringRef( char const* rawChars, size_type size ) noexcept
      method StringRef (line 627) | StringRef( std::string const& stdString ) noexcept
      method empty (line 648) | constexpr auto empty() const noexcept -> bool {
      method size (line 651) | constexpr auto size() const noexcept -> size_type {
      method isNullTerminated (line 668) | constexpr auto isNullTerminated() const noexcept -> bool {
      method const_iterator (line 673) | constexpr const_iterator begin() const { return m_start; }
      method const_iterator (line 674) | constexpr const_iterator end() const { return m_start + m_size; }
    type always_false (line 925) | struct always_false : std::false_type {}
    type true_given (line 927) | struct true_given : std::true_type {}
    type is_callable_tester (line 928) | struct is_callable_tester {
    type is_callable (line 936) | struct is_callable
    class TestInvokerAsMethod (line 962) | class TestInvokerAsMethod : public ITestInvoker {
      method TestInvokerAsMethod (line 965) | TestInvokerAsMethod( void (C::*testAsMethod)() ) noexcept : m_testAs...
      method invoke (line 967) | void invoke() const override {
    function makeTestInvoker (line 976) | auto makeTestInvoker( void (C::*testAsMethod)() ) noexcept -> ITestInv...
    type NameAndTags (line 980) | struct NameAndTags {
    type AutoReg (line 986) | struct AutoReg : NonCopyable {
    type ResultWas (line 1353) | struct ResultWas { enum OfType {
      type OfType (line 1353) | enum OfType {
    type ResultDisposition (line 1377) | struct ResultDisposition { enum Flags {
      type Flags (line 1377) | enum Flags {
    function isFalseTest (line 1388) | inline bool isFalseTest( int flags ) { return ( flags & ResultDisposit...
    type AssertionInfo (line 1396) | struct AssertionInfo
    class StringRef (line 1431) | class StringRef
      method StringRef (line 618) | constexpr StringRef() noexcept = default;
      method StringRef (line 622) | constexpr StringRef( char const* rawChars, size_type size ) noexcept
      method StringRef (line 627) | StringRef( std::string const& stdString ) noexcept
      method empty (line 648) | constexpr auto empty() const noexcept -> bool {
      method size (line 651) | constexpr auto size() const noexcept -> size_type {
      method isNullTerminated (line 668) | constexpr auto isNullTerminated() const noexcept -> bool {
      method const_iterator (line 673) | constexpr const_iterator begin() const { return m_start; }
      method const_iterator (line 674) | constexpr const_iterator end() const { return m_start + m_size; }
    type IStream (line 1433) | struct IStream {
    class ReusableStringStream (line 1440) | class ReusableStringStream : NonCopyable {
      method get (line 1454) | auto get() -> std::ostream& { return *m_oss; }
    type Detail (line 1465) | namespace Detail {
      type EnumInfo (line 1466) | struct EnumInfo {
      function rawMemoryToString (line 1559) | std::string rawMemoryToString( const T& object ) {
      class IsStreamInsertable (line 1564) | class IsStreamInsertable {
      function convertUnstreamable (line 1580) | typename std::enable_if<
      function convertUnstreamable (line 1586) | typename std::enable_if<
      function convertUnstreamable (line 1593) | typename std::enable_if<
      function stringify (line 1644) | std::string stringify(const T& e) {
      function convertUnknownEnumToString (line 1649) | std::string convertUnknownEnumToString( E e ) {
      function rangeToString (line 1829) | std::string rangeToString(InputIterator first, Sentinel last) {
      function stringify (line 1859) | inline std::string stringify( NSString* nsstring ) {
      type TupleElementPrinter (line 1927) | struct TupleElementPrinter {
        method print (line 1928) | static void print(const Tuple& tuple, std::ostream& os) {
      type TupleElementPrinter<Tuple, N, false> (line 1939) | struct TupleElementPrinter<Tuple, N, false> {
        method print (line 1940) | static void print(const Tuple&, std::ostream&) {}
      class Approx (line 3078) | class Approx {
        method Approx (line 3096) | Approx operator()( T const& value ) const {
        method Approx (line 3105) | explicit Approx( T const& value ): Approx(static_cast<double>(value))
        method Approx (line 3150) | Approx& epsilon( T const& newEpsilon ) {
        method Approx (line 3157) | Approx& margin( T const& newMargin ) {
        method Approx (line 3164) | Approx& scale( T const& newScale ) {
      function Approx (line 7883) | Approx Approx::custom() {
        method Approx (line 3096) | Approx operator()( T const& value ) const {
        method Approx (line 3105) | explicit Approx( T const& value ): Approx(static_cast<double>(value))
        method Approx (line 3150) | Approx& epsilon( T const& newEpsilon ) {
        method Approx (line 3157) | Approx& margin( T const& newMargin ) {
        method Approx (line 3164) | Approx& scale( T const& newScale ) {
      function Approx (line 7887) | Approx Approx::operator-() const {
        method Approx (line 3096) | Approx operator()( T const& value ) const {
        method Approx (line 3105) | explicit Approx( T const& value ): Approx(static_cast<double>(value))
        method Approx (line 3150) | Approx& epsilon( T const& newEpsilon ) {
        method Approx (line 3157) | Approx& margin( T const& newMargin ) {
        method Approx (line 3164) | Approx& scale( T const& newScale ) {
      class EnumValuesRegistry (line 10565) | class EnumValuesRegistry : public IMutableEnumValuesRegistry {
      function StringRef (line 10592) | StringRef extractInstanceName(StringRef enumInstance) {
      function parseEnums (line 10602) | std::vector<StringRef> parseEnums( StringRef enums ) {
      function StringRef (line 10614) | StringRef EnumInfo::lookup( int value ) const {
      function makeEnumInfo (line 10622) | std::unique_ptr<EnumInfo> makeEnumInfo( StringRef enumName, StringRe...
      function EnumInfo (line 10636) | EnumInfo const& EnumValuesRegistry::registerEnum( StringRef enumName...
      class StreamBufImpl (line 13647) | class StreamBufImpl : public std::streambuf {
        method StreamBufImpl (line 13652) | StreamBufImpl() {
        method overflow (line 13661) | int overflow( int c ) override {
        method sync (line 13673) | int sync() override {
      type OutputDebugWriter (line 13684) | struct OutputDebugWriter {
      class FileStream (line 13693) | class FileStream : public IStream {
        method FileStream (line 13696) | FileStream( StringRef filename ) {
      class CoutStream (line 13709) | class CoutStream : public IStream {
        method CoutStream (line 13714) | CoutStream() : m_os( Catch::cout().rdbuf() ) {}
      class DebugOutStream (line 13723) | class DebugOutStream : public IStream {
        method DebugOutStream (line 13727) | DebugOutStream()
      type Endianness (line 15027) | struct Endianness {
        type Arch (line 15028) | enum Arch { Big, Little }
        method Arch (line 15030) | static Arch which() {
      function rawMemoryToString (line 15040) | std::string rawMemoryToString( const void *object, std::size_t size ) {
    type IMutableEnumValuesRegistry (line 1476) | struct IMutableEnumValuesRegistry {
    type Detail (line 1552) | namespace Detail {
      type EnumInfo (line 1466) | struct EnumInfo {
      function rawMemoryToString (line 1559) | std::string rawMemoryToString( const T& object ) {
      class IsStreamInsertable (line 1564) | class IsStreamInsertable {
      function convertUnstreamable (line 1580) | typename std::enable_if<
      function convertUnstreamable (line 1586) | typename std::enable_if<
      function convertUnstreamable (line 1593) | typename std::enable_if<
      function stringify (line 1644) | std::string stringify(const T& e) {
      function convertUnknownEnumToString (line 1649) | std::string convertUnknownEnumToString( E e ) {
      function rangeToString (line 1829) | std::string rangeToString(InputIterator first, Sentinel last) {
      function stringify (line 1859) | inline std::string stringify( NSString* nsstring ) {
      type TupleElementPrinter (line 1927) | struct TupleElementPrinter {
        method print (line 1928) | static void print(const Tuple& tuple, std::ostream& os) {
      type TupleElementPrinter<Tuple, N, false> (line 1939) | struct TupleElementPrinter<Tuple, N, false> {
        method print (line 1940) | static void print(const Tuple&, std::ostream&) {}
      class Approx (line 3078) | class Approx {
        method Approx (line 3096) | Approx operator()( T const& value ) const {
        method Approx (line 3105) | explicit Approx( T const& value ): Approx(static_cast<double>(value))
        method Approx (line 3150) | Approx& epsilon( T const& newEpsilon ) {
        method Approx (line 3157) | Approx& margin( T const& newMargin ) {
        method Approx (line 3164) | Approx& scale( T const& newScale ) {
      function Approx (line 7883) | Approx Approx::custom() {
        method Approx (line 3096) | Approx operator()( T const& value ) const {
        method Approx (line 3105) | explicit Approx( T const& value ): Approx(static_cast<double>(value))
        method Approx (line 3150) | Approx& epsilon( T const& newEpsilon ) {
        method Approx (line 3157) | Approx& margin( T const& newMargin ) {
        method Approx (line 3164) | Approx& scale( T const& newScale ) {
      function Approx (line 7887) | Approx Approx::operator-() const {
        method Approx (line 3096) | Approx operator()( T const& value ) const {
        method Approx (line 3105) | explicit Approx( T const& value ): Approx(static_cast<double>(value))
        method Approx (line 3150) | Approx& epsilon( T const& newEpsilon ) {
        method Approx (line 3157) | Approx& margin( T const& newMargin ) {
        method Approx (line 3164) | Approx& scale( T const& newScale ) {
      class EnumValuesRegistry (line 10565) | class EnumValuesRegistry : public IMutableEnumValuesRegistry {
      function StringRef (line 10592) | StringRef extractInstanceName(StringRef enumInstance) {
      function parseEnums (line 10602) | std::vector<StringRef> parseEnums( StringRef enums ) {
      function StringRef (line 10614) | StringRef EnumInfo::lookup( int value ) const {
      function makeEnumInfo (line 10622) | std::unique_ptr<EnumInfo> makeEnumInfo( StringRef enumName, StringRe...
      function EnumInfo (line 10636) | EnumInfo const& EnumValuesRegistry::registerEnum( StringRef enumName...
      class StreamBufImpl (line 13647) | class StreamBufImpl : public std::streambuf {
        method StreamBufImpl (line 13652) | StreamBufImpl() {
        method overflow (line 13661) | int overflow( int c ) override {
        method sync (line 13673) | int sync() override {
      type OutputDebugWriter (line 13684) | struct OutputDebugWriter {
      class FileStream (line 13693) | class FileStream : public IStream {
        method FileStream (line 13696) | FileStream( StringRef filename ) {
      class CoutStream (line 13709) | class CoutStream : public IStream {
        method CoutStream (line 13714) | CoutStream() : m_os( Catch::cout().rdbuf() ) {}
      class DebugOutStream (line 13723) | class DebugOutStream : public IStream {
        method DebugOutStream (line 13727) | DebugOutStream()
      type Endianness (line 15027) | struct Endianness {
        type Arch (line 15028) | enum Arch { Big, Little }
        method Arch (line 15030) | static Arch which() {
      function rawMemoryToString (line 15040) | std::string rawMemoryToString( const void *object, std::size_t size ) {
    type StringMaker (line 1615) | struct StringMaker {
      method convert (line 1617) | static
      method convert (line 1628) | static
    type Detail (line 1639) | namespace Detail {
      type EnumInfo (line 1466) | struct EnumInfo {
      function rawMemoryToString (line 1559) | std::string rawMemoryToString( const T& object ) {
      class IsStreamInsertable (line 1564) | class IsStreamInsertable {
      function convertUnstreamable (line 1580) | typename std::enable_if<
      function convertUnstreamable (line 1586) | typename std::enable_if<
      function convertUnstreamable (line 1593) | typename std::enable_if<
      function stringify (line 1644) | std::string stringify(const T& e) {
      function convertUnknownEnumToString (line 1649) | std::string convertUnknownEnumToString( E e ) {
      function rangeToString (line 1829) | std::string rangeToString(InputIterator first, Sentinel last) {
      function stringify (line 1859) | inline std::string stringify( NSString* nsstring ) {
      type TupleElementPrinter (line 1927) | struct TupleElementPrinter {
        method print (line 1928) | static void print(const Tuple& tuple, std::ostream& os) {
      type TupleElementPrinter<Tuple, N, false> (line 1939) | struct TupleElementPrinter<Tuple, N, false> {
        method print (line 1940) | static void print(const Tuple&, std::ostream&) {}
      class Approx (line 3078) | class Approx {
        method Approx (line 3096) | Approx operator()( T const& value ) const {
        method Approx (line 3105) | explicit Approx( T const& value ): Approx(static_cast<double>(value))
        method Approx (line 3150) | Approx& epsilon( T const& newEpsilon ) {
        method Approx (line 3157) | Approx& margin( T const& newMargin ) {
        method Approx (line 3164) | Approx& scale( T const& newScale ) {
      function Approx (line 7883) | Approx Approx::custom() {
        method Approx (line 3096) | Approx operator()( T const& value ) const {
        method Approx (line 3105) | explicit Approx( T const& value ): Approx(static_cast<double>(value))
        method Approx (line 3150) | Approx& epsilon( T const& newEpsilon ) {
        method Approx (line 3157) | Approx& margin( T const& newMargin ) {
        method Approx (line 3164) | Approx& scale( T const& newScale ) {
      function Approx (line 7887) | Approx Approx::operator-() const {
        method Approx (line 3096) | Approx operator()( T const& value ) const {
        method Approx (line 3105) | explicit Approx( T const& value ): Approx(static_cast<double>(value))
        method Approx (line 3150) | Approx& epsilon( T const& newEpsilon ) {
        method Approx (line 3157) | Approx& margin( T const& newMargin ) {
        method Approx (line 3164) | Approx& scale( T const& newScale ) {
      class EnumValuesRegistry (line 10565) | class EnumValuesRegistry : public IMutableEnumValuesRegistry {
      function StringRef (line 10592) | StringRef extractInstanceName(StringRef enumInstance) {
      function parseEnums (line 10602) | std::vector<StringRef> parseEnums( StringRef enums ) {
      function StringRef (line 10614) | StringRef EnumInfo::lookup( int value ) const {
      function makeEnumInfo (line 10622) | std::unique_ptr<EnumInfo> makeEnumInfo( StringRef enumName, StringRe...
      function EnumInfo (line 10636) | EnumInfo const& EnumValuesRegistry::registerEnum( StringRef enumName...
      class StreamBufImpl (line 13647) | class StreamBufImpl : public std::streambuf {
        method StreamBufImpl (line 13652) | StreamBufImpl() {
        method overflow (line 13661) | int overflow( int c ) override {
        method sync (line 13673) | int sync() override {
      type OutputDebugWriter (line 13684) | struct OutputDebugWriter {
      class FileStream (line 13693) | class FileStream : public IStream {
        method FileStream (line 13696) | FileStream( StringRef filename ) {
      class CoutStream (line 13709) | class CoutStream : public IStream {
        method CoutStream (line 13714) | CoutStream() : m_os( Catch::cout().rdbuf() ) {}
      class DebugOutStream (line 13723) | class DebugOutStream : public IStream {
        method DebugOutStream (line 13727) | DebugOutStream()
      type Endianness (line 15027) | struct Endianness {
        type Arch (line 15028) | enum Arch { Big, Little }
        method Arch (line 15030) | static Arch which() {
      function rawMemoryToString (line 15040) | std::string rawMemoryToString( const void *object, std::size_t size ) {
    type StringMaker<std::string> (line 1665) | struct StringMaker<std::string> {
    type StringMaker<std::string_view> (line 1671) | struct StringMaker<std::string_view> {
    type StringMaker<char const *> (line 1677) | struct StringMaker<char const *> {
    type StringMaker<char *> (line 1681) | struct StringMaker<char *> {
    type StringMaker<std::wstring> (line 1687) | struct StringMaker<std::wstring> {
    type StringMaker<std::wstring_view> (line 1693) | struct StringMaker<std::wstring_view> {
    type StringMaker<wchar_t const *> (line 1699) | struct StringMaker<wchar_t const *> {
    type StringMaker<wchar_t *> (line 1703) | struct StringMaker<wchar_t *> {
    type StringMaker<char[SZ]> (line 1711) | struct StringMaker<char[SZ]> {
      method convert (line 1712) | static std::string convert(char const* str) {
    type StringMaker<signed char[SZ]> (line 1717) | struct StringMaker<signed char[SZ]> {
      method convert (line 1718) | static std::string convert(signed char const* str) {
    type StringMaker<unsigned char[SZ]> (line 1723) | struct StringMaker<unsigned char[SZ]> {
      method convert (line 1724) | static std::string convert(unsigned char const* str) {
    type StringMaker<std::byte> (line 1731) | struct StringMaker<std::byte> {
    type StringMaker<int> (line 1736) | struct StringMaker<int> {
    type StringMaker<long> (line 1740) | struct StringMaker<long> {
    type StringMaker<long long> (line 1744) | struct StringMaker<long long> {
    type StringMaker<unsigned int> (line 1748) | struct StringMaker<unsigned int> {
    type StringMaker<unsigned long> (line 1752) | struct StringMaker<unsigned long> {
    type StringMaker<unsigned long long> (line 1756) | struct StringMaker<unsigned long long> {
    type StringMaker<bool> (line 1761) | struct StringMaker<bool> {
    type StringMaker<char> (line 1766) | struct StringMaker<char> {
    type StringMaker<signed char> (line 1770) | struct StringMaker<signed char> {
    type StringMaker<unsigned char> (line 1774) | struct StringMaker<unsigned char> {
    type StringMaker<std::nullptr_t> (line 1779) | struct StringMaker<std::nullptr_t> {
    type StringMaker<float> (line 1784) | struct StringMaker<float> {
    type StringMaker<double> (line 1790) | struct StringMaker<double> {
    type StringMaker<T*> (line 1796) | struct StringMaker<T*> {
      method convert (line 1798) | static std::string convert(U* p) {
    type StringMaker<R C::*> (line 1808) | struct StringMaker<R C::*> {
      method convert (line 1809) | static std::string convert(R C::* p) {
    type StringMaker<T^> (line 1820) | struct StringMaker<T^> {
      method convert (line 1821) | static std::string convert( T^ ref ) {
    type Detail (line 1827) | namespace Detail {
      type EnumInfo (line 1466) | struct EnumInfo {
      function rawMemoryToString (line 1559) | std::string rawMemoryToString( const T& object ) {
      class IsStreamInsertable (line 1564) | class IsStreamInsertable {
      function convertUnstreamable (line 1580) | typename std::enable_if<
      function convertUnstreamable (line 1586) | typename std::enable_if<
      function convertUnstreamable (line 1593) | typename std::enable_if<
      function stringify (line 1644) | std::string stringify(const T& e) {
      function convertUnknownEnumToString (line 1649) | std::string convertUnknownEnumToString( E e ) {
      function rangeToString (line 1829) | std::string rangeToString(InputIterator first, Sentinel last) {
      function stringify (line 1859) | inline std::string stringify( NSString* nsstring ) {
      type TupleElementPrinter (line 1927) | struct TupleElementPrinter {
        method print (line 1928) | static void print(const Tuple& tuple, std::ostream& os) {
      type TupleElementPrinter<Tuple, N, false> (line 1939) | struct TupleElementPrinter<Tuple, N, false> {
        method print (line 1940) | static void print(const Tuple&, std::ostream&) {}
      class Approx (line 3078) | class Approx {
        method Approx (line 3096) | Approx operator()( T const& value ) const {
        method Approx (line 3105) | explicit Approx( T const& value ): Approx(static_cast<double>(value))
        method Approx (line 3150) | Approx& epsilon( T const& newEpsilon ) {
        method Approx (line 3157) | Approx& margin( T const& newMargin ) {
        method Approx (line 3164) | Approx& scale( T const& newScale ) {
      function Approx (line 7883) | Approx Approx::custom() {
        method Approx (line 3096) | Approx operator()( T const& value ) const {
        method Approx (line 3105) | explicit Approx( T const& value ): Approx(static_cast<double>(value))
        method Approx (line 3150) | Approx& epsilon( T const& newEpsilon ) {
        method Approx (line 3157) | Approx& margin( T const& newMargin ) {
        method Approx (line 3164) | Approx& scale( T const& newScale ) {
      function Approx (line 7887) | Approx Approx::operator-() const {
        method Approx (line 3096) | Approx operator()( T const& value ) const {
        method Approx (line 3105) | explicit Approx( T const& value ): Approx(static_cast<double>(value))
        method Approx (line 3150) | Approx& epsilon( T const& newEpsilon ) {
        method Approx (line 3157) | Approx& margin( T const& newMargin ) {
        method Approx (line 3164) | Approx& scale( T const& newScale ) {
      class EnumValuesRegistry (line 10565) | class EnumValuesRegistry : public IMutableEnumValuesRegistry {
      function StringRef (line 10592) | StringRef extractInstanceName(StringRef enumInstance) {
      function parseEnums (line 10602) | std::vector<StringRef> parseEnums( StringRef enums ) {
      function StringRef (line 10614) | StringRef EnumInfo::lookup( int value ) const {
      function makeEnumInfo (line 10622) | std::unique_ptr<EnumInfo> makeEnumInfo( StringRef enumName, StringRe...
      function EnumInfo (line 10636) | EnumInfo const& EnumValuesRegistry::registerEnum( StringRef enumName...
      class StreamBufImpl (line 13647) | class StreamBufImpl : public std::streambuf {
        method StreamBufImpl (line 13652) | StreamBufImpl() {
        method overflow (line 13661) | int overflow( int c ) override {
        method sync (line 13673) | int sync() override {
      type OutputDebugWriter (line 13684) | struct OutputDebugWriter {
      class FileStream (line 13693) | class FileStream : public 
Copy disabled (too large) Download .json
Condensed preview — 1148 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (13,825K chars).
[
  {
    "path": ".github/workflows/cmake.yml",
    "chars": 8776,
    "preview": "# Heavily inspired (i.e. copy/paste) from https://gist.github.com/NickNaso/0d478f1481686d5bcc868cac06620a60\nname: CMake "
  },
  {
    "path": ".gitignore",
    "chars": 363,
    "preview": "# Compiled Object files\n*.slo\n*.lo\n*.o\n\n# Compiled Dynamic libraries\n*.so\n*.dylib\n\n# Compiled Static libraries\n*.lai\n*.l"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 1837,
    "preview": "#\n# CodeQuery\n# Copyright (C) 2013-2018 ruben2020 https://github.com/ruben2020/\n#\n# This Source Code Form is subject to "
  },
  {
    "path": "LICENSE.md",
    "chars": 15505,
    "preview": "Mozilla Public License Version 2.0\n==================================\n\n### 1. Definitions\n\n**1.1. “Contributor”**  \n    "
  },
  {
    "path": "NEWS.md",
    "chars": 8319,
    "preview": "Changelog\n=========\n\nVersion 1.0.1 - July 14, 2025\n-----------------------------\nMinor code changes to avoid compilation"
  },
  {
    "path": "README.md",
    "chars": 11035,
    "preview": "![CodeQuery](doc/logotitle.png)\n===============================\n\nThis is a tool to index, then query or search C, C++, J"
  },
  {
    "path": "THIRDPARTY.md",
    "chars": 3922,
    "preview": "Third Party Software\n====================\n\nBoth the source and binary distributions of this software are linked to some "
  },
  {
    "path": "cli/CMakeLists.txt",
    "chars": 768,
    "preview": "#\n# CodeQuery\n# Copyright (C) 2013-2018 ruben2020 https://github.com/ruben2020/\n#\n# This Source Code Form is subject to "
  },
  {
    "path": "cli/README.md",
    "chars": 210,
    "preview": "CodeQuery command line interface\n================================\n\nThis provides the command line interface (CLI) for Co"
  },
  {
    "path": "cli/main_cli.cpp",
    "chars": 8597,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "cmakefind/FindSqlite.cmake",
    "chars": 1916,
    "preview": "\n#\n# The following license applies only to this file:\n#\n\n# - find Sqlite 3\n# SQLITE_INCLUDE_DIR - Where to find Sqlite 3"
  },
  {
    "path": "doc/HOWTO-LINUX.md",
    "chars": 5192,
    "preview": "\nHOWTO GUIDE\n===========\n\nThis HOWTO guide applies to Linux only\n\n## HOW TO USE CODEQUERY WITH C/C++ CODE?\n\n1. Change di"
  },
  {
    "path": "doc/INSTALL-LINUX.md",
    "chars": 3349,
    "preview": "HOW TO INSTALL CODEQUERY IN LINUX\n=================================\n\nThis INSTALL guide applies to Linux and Mac only\n\n("
  },
  {
    "path": "gui/CMakeLists.txt",
    "chars": 7782,
    "preview": "#\n# CodeQuery\n# Copyright (C) 2013-2018 ruben2020 https://github.com/ruben2020/\n#\n# This Source Code Form is subject to "
  },
  {
    "path": "gui/aboutdialog.cpp",
    "chars": 895,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/aboutdialog.h",
    "chars": 616,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/cqimages.qrc",
    "chars": 705,
    "preview": "<RCC>\n  <qresource prefix=\"/mainwindow\">\n    <file>images/Folder2.png</file>\n    <file>images/Search.png</file>\n    <fil"
  },
  {
    "path": "gui/cqtrans.qrc.template",
    "chars": 396,
    "preview": "<RCC>\n  <qresource prefix=\"/trans\">\n    <file>codequery_de.qm</file>\n    <file>codequery_en.qm</file>\n    <file>codequer"
  },
  {
    "path": "gui/cqwin32.rc",
    "chars": 202,
    "preview": "IDI_ICON1 ICON DISCARDABLE \"images/logo6464.ico\"\r\nIDI_ICON2 ICON DISCARDABLE \"images/logo4848.ico\"\r\nIDI_ICON3 ICON DISCA"
  },
  {
    "path": "gui/cqwin64.rc",
    "chars": 254,
    "preview": "IDI_ICON1 ICON DISCARDABLE \"images/logo128128.ico\"\r\nIDI_ICON2 ICON DISCARDABLE \"images/logo6464.ico\"\r\nIDI_ICON3 ICON DIS"
  },
  {
    "path": "gui/fileviewer.cpp",
    "chars": 23602,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/fileviewer.h",
    "chars": 3660,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/fileviewsettingsdialog.cpp",
    "chars": 2635,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/fileviewsettingsdialog.h",
    "chars": 1190,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/graphdialog.cpp",
    "chars": 4513,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/graphdialog.h",
    "chars": 1022,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/images/axialisReadMe.txt",
    "chars": 1028,
    "preview": "Free Icons by Axialis Software \r\nhttp://www.axialis.com \r\n\r\nHere is a library of icons that you can freely use in your p"
  },
  {
    "path": "gui/langtable.cpp",
    "chars": 1094,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/langtable.h",
    "chars": 560,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/listhandler.cpp",
    "chars": 8259,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/listhandler.h",
    "chars": 1365,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/main_gui.cpp",
    "chars": 931,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/mainwindow.cpp",
    "chars": 14070,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/mainwindow.h",
    "chars": 1483,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/searchhandler.cpp",
    "chars": 23350,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/searchhandler.h",
    "chars": 4366,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/themes/Bespin.xml",
    "chars": 89713,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nBespin\r\nCopyright (c) 2009 Oren Farhi, Orizen Designs - http:/"
  },
  {
    "path": "gui/themes/Black_board.xml",
    "chars": 88077,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nBlackboard\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend"
  },
  {
    "path": "gui/themes/Choco.xml",
    "chars": 88374,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nchoco\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lojc"
  },
  {
    "path": "gui/themes/Deep_Black.xml",
    "chars": 86155,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--\r\nStyle Name:         Deep Black\r\nDescription:        Based on the t"
  },
  {
    "path": "gui/themes/Eclipse_Default.xml",
    "chars": 86735,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nEclipse\r\nCopyright (c) 2009 Fesenko Alexander <http://return0x"
  },
  {
    "path": "gui/themes/Hello_Kitty.xml",
    "chars": 86457,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--\r\nTheme name : Hello Kitty\r\nThis theme is not complete. If you enhan"
  },
  {
    "path": "gui/themes/HotFudgeSundae.xml",
    "chars": 101679,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           HotFudgeSundae.xml\r\nStyle Name:          Ho"
  },
  {
    "path": "gui/themes/Mono_Industrial.xml",
    "chars": 87854,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nmonoindustrial\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://"
  },
  {
    "path": "gui/themes/Monokai.xml",
    "chars": 86625,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nMonokai\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lo"
  },
  {
    "path": "gui/themes/MossyLawn.xml",
    "chars": 101740,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           MossyLawn.xml\r\nStyle Name:          MossyLa"
  },
  {
    "path": "gui/themes/Navajo.xml",
    "chars": 101591,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           Navajo.xml\r\nStyle Name:          Navajo\r\nDe"
  },
  {
    "path": "gui/themes/NotepadPlusPlus.xml",
    "chars": 95686,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\""
  },
  {
    "path": "gui/themes/Obsidian.xml",
    "chars": 88872,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--\r\nNotepad++ Custom Style\r\n\r\n  Style name:    Obsidian\r\n      Author:"
  },
  {
    "path": "gui/themes/Plastic_Code_Wrap.xml",
    "chars": 87855,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nPlasticCodeWrap\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http:/"
  },
  {
    "path": "gui/themes/Ruby_Blue.xml",
    "chars": 69122,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!-- \r\nNotepad++ Custom stylers\r\nStyle name: \t\tPort Ruby Blue\r\nFile name"
  },
  {
    "path": "gui/themes/Solarized.xml",
    "chars": 102215,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           Solarized.xml\r\nStyle Name:          Solariz"
  },
  {
    "path": "gui/themes/Solarized_light.xml",
    "chars": 102227,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           Solarized-light.xml\r\nStyle Name:          S"
  },
  {
    "path": "gui/themes/Twilight.xml",
    "chars": 87848,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nTwilight\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.l"
  },
  {
    "path": "gui/themes/Vibrant_Ink.xml",
    "chars": 85674,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!-- \r\nStyle Name: Port VibrantInk\r\nDescription: Based on the Textmate t"
  },
  {
    "path": "gui/themes/Zenburn.xml",
    "chars": 96313,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--\r\nFile name:           Zenburn.xml\r\nStyle Name:          Zenburn\r\nDe"
  },
  {
    "path": "gui/themes/khaki.xml",
    "chars": 101677,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           khaki.xml\r\nStyle Name:          khaki\r\nDesc"
  },
  {
    "path": "gui/themes/parse_themes.pl",
    "chars": 7656,
    "preview": "#!/usr/bin/perl\n\n# Process theme XML files, to generate C++ code\n#\n# This license applies only to this file:\n#\n# Copyrig"
  },
  {
    "path": "gui/themes/vim_Dark_Blue.xml",
    "chars": 85870,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\""
  },
  {
    "path": "gui/themes.cpp",
    "chars": 9810,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/themes.h",
    "chars": 947,
    "preview": "\n/*\n * CodeQuery\n * Copyright (C) 2013-2017 ruben2020 https://github.com/ruben2020/\n * \n * This Source Code Form is subj"
  },
  {
    "path": "gui/themes_gen.cpp",
    "chars": 116160,
    "preview": "\n /* THIS FILE WAS AUTO_GENERATED USING parse_themes.pl */\n /* DO NOT CHANGE BY HAND                              */\n\n#d"
  },
  {
    "path": "gui/translations/codequery_de.ts",
    "chars": 23388,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.0\" language=\"de_DE\">\n<context>\n    <name>DialogGraph"
  },
  {
    "path": "gui/translations/codequery_en.ts",
    "chars": 22673,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.0\" language=\"en_US\">\n<context>\n    <name>DialogGraph"
  },
  {
    "path": "gui/translations/codequery_es.ts",
    "chars": 23404,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.0\" language=\"es_ES\">\n<context>\n    <name>DialogGraph"
  },
  {
    "path": "gui/translations/codequery_fr.ts",
    "chars": 23582,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.0\" language=\"fr_FR\">\n<context>\n    <name>DialogGraph"
  },
  {
    "path": "gui/translations/codequery_id.ts",
    "chars": 23037,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.0\" language=\"id_ID\">\n<context>\n    <name>DialogGraph"
  },
  {
    "path": "gui/translations/codequery_it.ts",
    "chars": 23344,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.0\" language=\"it_IT\">\n<context>\n    <name>DialogGraph"
  },
  {
    "path": "gui/translations/codequery_ja.ts",
    "chars": 21985,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.0\" language=\"ja_JP\">\n<context>\n    <name>DialogGraph"
  },
  {
    "path": "gui/translations/codequery_ko.ts",
    "chars": 21892,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.0\" language=\"ko_KR\">\n<context>\n    <name>DialogGraph"
  },
  {
    "path": "gui/translations/codequery_zh-CHS.ts",
    "chars": 21503,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.0\" language=\"zh_CN\">\n<context>\n    <name>DialogGraph"
  },
  {
    "path": "gui/translations/codequery_zh-CHT.ts",
    "chars": 21484,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.0\" language=\"zh_CN\">\n<context>\n    <name>DialogGraph"
  },
  {
    "path": "gui/translations/dolupdate.pl",
    "chars": 1417,
    "preview": "\n\n# lupdate\n#\n# This license applies only to this file:\n#\n# Copyright (c) 2013 ruben2020\n# Permission is hereby granted,"
  },
  {
    "path": "gui/translations/dowebtranslate.pl",
    "chars": 2485,
    "preview": "\n\n# Automatically web-translate ts files.\n#\n# This license applies only to this file:\n#\n# Copyright (c) 2013 ruben2020\n#"
  },
  {
    "path": "gui/translations/tslist.txt",
    "chars": 349,
    "preview": "{\"English\", \"codequery_en\" },\n{\"Deutsch\", \"codequery_de\" },\n{\"Fran\\347ais\", \"codequery_fr\" },\n{\"Espa\\361ol\", \"codequery_"
  },
  {
    "path": "gui/ui/aboutDialog.ui",
    "chars": 3860,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- This Source Code Form is subject to the terms of the Mozilla Public\n   - Lic"
  },
  {
    "path": "gui/ui/fileViewSettingsDialog.ui",
    "chars": 4723,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- This Source Code Form is subject to the terms of the Mozilla Public\n   - Lic"
  },
  {
    "path": "gui/ui/graphDialog.ui",
    "chars": 6440,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- This Source Code Form is subject to the terms of the Mozilla Public\n   - Lic"
  },
  {
    "path": "gui/ui/mainWindow.ui",
    "chars": 26333,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- This Source Code Form is subject to the terms of the Mozilla Public\n   - Lic"
  },
  {
    "path": "gui/winmain.cpp",
    "chars": 3058,
    "preview": "\n/*\n\nTaken from:\nhttps://github.com/gosu/gosu/blob/master/src/WinMain.cpp\n\nThis license applies only to this file:\n\nCopy"
  },
  {
    "path": "lexilla/.gitattributes",
    "chars": 1151,
    "preview": "* -text\r\n**.cxx text\r\n**.cpp text\r\n**.c text\r\n**.h text\r\n**.hpp text\r\n**.m text\r\n**.mm text\r\n**.iface text\r\n**.template "
  },
  {
    "path": "lexilla/.github/workflows/build-check-macos.yml",
    "chars": 1109,
    "preview": "name: \"Build and check Lexilla on macOS\"\n\non: [push]\n\njobs:\n    build:\n\n        runs-on: macos-11\n\n        strategy:\n   "
  },
  {
    "path": "lexilla/.github/workflows/build-check-win32.yml",
    "chars": 1534,
    "preview": "name: \"Build and check Lexilla on Win32 with Visual C++\"\n\non: [push]\n\njobs:\n    build:\n\n        runs-on: windows-latest\n"
  },
  {
    "path": "lexilla/.github/workflows/build-check.yml",
    "chars": 1168,
    "preview": "name: \"Build and check Lexilla on Linux\"\n\non: [push]\n\njobs:\n    build:\n\n        runs-on: ubuntu-latest\n\n        strategy"
  },
  {
    "path": "lexilla/.gitignore",
    "chars": 726,
    "preview": "*.o\n*.a\n*.lib\n*.obj\n*.iobj\n__pycache__\n*.pyc\n*.dll\n*.so\n*.dylib\n*.framework\n*.pyd\n*.exe\n*.exp\n*.lib\n*.pdb\n*.ipdb\n*.res\n*"
  },
  {
    "path": "lexilla/.travis.yml",
    "chars": 1076,
    "preview": "# Build Lexilla with gcc and clang on Linux, macOS, and Windows\r\n# Test Lexilla with gcc and clang on Linux and macOS \r\n"
  },
  {
    "path": "lexilla/CMakeLists.txt",
    "chars": 640,
    "preview": "cmake_minimum_required(VERSION 3.16.0)\nproject(Lexilla)\n  \n#FILE(GLOB LEXER_SRCS  \"./lexers/*.cxx\")\nFILE(GLOB LEXLIB_SRC"
  },
  {
    "path": "lexilla/CONTRIBUTING",
    "chars": 1898,
    "preview": "Lexilla is on GitHub at https://github.com/ScintillaOrg/lexilla\r\n\r\nBugs, fixes and features should be posted to the Issu"
  },
  {
    "path": "lexilla/License.txt",
    "chars": 864,
    "preview": "License for Lexilla, Scintilla, and SciTE\n\nCopyright 1998-2021 by Neil Hodgson <neilh@scintilla.org>\n\nAll Rights Reserve"
  },
  {
    "path": "lexilla/README",
    "chars": 1792,
    "preview": "README for Lexilla library.\r\n\r\nThe Lexilla library contains a set of lexers and folders that provides support for\r\nprogr"
  },
  {
    "path": "lexilla/access/LexillaAccess.cxx",
    "chars": 7815,
    "preview": "// SciTE - Scintilla based Text Editor\n/** @file LexillaAccess.cxx\n ** Interface to loadable lexers.\n ** Maintains a lis"
  },
  {
    "path": "lexilla/access/LexillaAccess.h",
    "chars": 1271,
    "preview": "// SciTE - Scintilla based Text Editor\n/** @file LexillaAccess.h\n ** Interface to loadable lexers.\n ** This does not dep"
  },
  {
    "path": "lexilla/access/README",
    "chars": 346,
    "preview": "README for access directory.\r\n\r\nLexillaAccess is a module that simplifies using multiple libraries that follow the Lexil"
  },
  {
    "path": "lexilla/cppcheck.suppress",
    "chars": 9804,
    "preview": "// File to suppress cppcheck warnings for files that will not be fixed.\r\n// Does not suppress warnings where an addition"
  },
  {
    "path": "lexilla/delbin.bat",
    "chars": 188,
    "preview": "@del /S /Q *.a *.aps *.bsc *.dll *.dsw *.exe *.idb *.ilc *.ild *.ilf *.ilk *.ils *.lib *.map *.ncb *.obj *.o *.opt *.ipd"
  },
  {
    "path": "lexilla/doc/Lexilla.html",
    "chars": 7281,
    "preview": "<?xml version=\"1.0\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n    \"http://www.w3.org/TR/xhtml1/DT"
  },
  {
    "path": "lexilla/doc/LexillaDoc.html",
    "chars": 13448,
    "preview": "<?xml version=\"1.0\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n    \"http://www.w3.org/TR/xhtml1/DT"
  },
  {
    "path": "lexilla/doc/LexillaDownload.html",
    "chars": 2561,
    "preview": "<?xml version=\"1.0\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n    \"http://www.w3.org/TR/xhtml1/DT"
  },
  {
    "path": "lexilla/doc/LexillaHistory.html",
    "chars": 486095,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n    \"http://www.w3"
  },
  {
    "path": "lexilla/examples/CheckLexilla/CheckLexilla.c",
    "chars": 4232,
    "preview": "// Lexilla lexer library use example\n/** @file CheckLexilla.c\n ** Check that Lexilla.h works.\n **/\n// Copyright 2021 by "
  },
  {
    "path": "lexilla/examples/CheckLexilla/makefile",
    "chars": 375,
    "preview": ".PHONY: all check clean\n\nINCLUDES = -I ../../include\nEXE = $(if $(windir),CheckLexilla.exe,CheckLexilla)\n\nifdef windir\n\t"
  },
  {
    "path": "lexilla/examples/SimpleLexer/SimpleLexer.cxx",
    "chars": 3991,
    "preview": "//  A simple lexer\n/** @file SimpleLexer.cxx\n ** A lexer that follows the Lexilla protocol to allow it to be used from L"
  },
  {
    "path": "lexilla/examples/SimpleLexer/makefile",
    "chars": 906,
    "preview": ".PHONY: all check clean\n\nINCLUDES = -I ../../../scintilla/include -I ../../include -I ../../lexlib\n\nBASE_FLAGS += --std="
  },
  {
    "path": "lexilla/include/LexicalStyles.iface",
    "chars": 58814,
    "preview": "## This file defines the interface to Lexilla\n\n## Copyright 2000-2020 by Neil Hodgson <neilh@scintilla.org>\n## The Licen"
  },
  {
    "path": "lexilla/include/Lexilla.h",
    "chars": 3420,
    "preview": "// Lexilla lexer library\n/** @file Lexilla.h\n ** Lexilla definitions for dynamic and static linking.\n ** For C++, more f"
  },
  {
    "path": "lexilla/include/SciLexer.h",
    "chars": 58803,
    "preview": "/* Scintilla source code edit control */\n/** @file SciLexer.h\n ** Interface to the added lexer functions in the SciLexer"
  },
  {
    "path": "lexilla/lexers/LexA68k.cxx",
    "chars": 12525,
    "preview": "// Scintilla source code edit control\n/** @file LexA68k.cxx\n ** Lexer for Assembler, just for the MASM syntax\n ** Writte"
  },
  {
    "path": "lexilla/lexers/LexAPDL.cxx",
    "chars": 7720,
    "preview": "// Scintilla source code edit control\n/** @file LexAPDL.cxx\n ** Lexer for APDL. Based on the lexer for Assembler by The "
  },
  {
    "path": "lexilla/lexers/LexASY.cxx",
    "chars": 7555,
    "preview": "// Scintilla source code edit control\n// @file LexASY.cxx\n//Author: instanton (email: soft_share<at>126<dot>com)\n// This"
  },
  {
    "path": "lexilla/lexers/LexAU3.cxx",
    "chars": 29526,
    "preview": "// Scintilla source code edit control\n// @file LexAU3.cxx\n// Lexer for AutoIt3 https://www.autoitscript.com/site/\n// by "
  },
  {
    "path": "lexilla/lexers/LexAVE.cxx",
    "chars": 6802,
    "preview": "// SciTE - Scintilla based Text Editor\n/** @file LexAVE.cxx\n ** Lexer for Avenue.\n **\n  ** Written by Alexey Yutkin <yut"
  },
  {
    "path": "lexilla/lexers/LexAVS.cxx",
    "chars": 8611,
    "preview": "// Scintilla source code edit control\n/** @file LexAVS.cxx\n ** Lexer for AviSynth.\n **/\n// Copyright 2012 by Bruno Barbi"
  },
  {
    "path": "lexilla/lexers/LexAbaqus.cxx",
    "chars": 19706,
    "preview": "// Scintilla source code edit control\n/** @file LexAbaqus.cxx\n ** Lexer for ABAQUS. Based on the lexer for APDL by Hadar"
  },
  {
    "path": "lexilla/lexers/LexAda.cxx",
    "chars": 11737,
    "preview": "// Scintilla source code edit control\n/** @file LexAda.cxx\n ** Lexer for Ada 95\n **/\n// Copyright 2002 by Sergey Koshche"
  },
  {
    "path": "lexilla/lexers/LexAsciidoc.cxx",
    "chars": 13145,
    "preview": "/******************************************************************\n *  LexAsciidoc.cxx\n *\n *  A simple Asciidoc lexer f"
  },
  {
    "path": "lexilla/lexers/LexAsm.cxx",
    "chars": 14214,
    "preview": "// Scintilla source code edit control\n/** @file LexAsm.cxx\n ** Lexer for Assembler, just for the MASM syntax\n ** Written"
  },
  {
    "path": "lexilla/lexers/LexAsn1.cxx",
    "chars": 5315,
    "preview": "// Scintilla source code edit control\n/** @file LexAsn1.cxx\n ** Lexer for ASN.1\n **/\n// Copyright 2004 by Herr Pfarrer r"
  },
  {
    "path": "lexilla/lexers/LexBaan.cxx",
    "chars": 30844,
    "preview": "// Scintilla source code edit control\n/** @file LexBaan.cxx\n** Lexer for Baan.\n** Based heavily on LexCPP.cxx\n**/\n// Cop"
  },
  {
    "path": "lexilla/lexers/LexBash.cxx",
    "chars": 41778,
    "preview": "// Scintilla source code edit control\n/** @file LexBash.cxx\n ** Lexer for Bash.\n **/\n// Copyright 2004-2012 by Neil Hodg"
  },
  {
    "path": "lexilla/lexers/LexBasic.cxx",
    "chars": 16950,
    "preview": "// Scintilla source code edit control\n/** @file LexBasic.cxx\n ** Lexer for BlitzBasic and PureBasic.\n ** Converted to le"
  },
  {
    "path": "lexilla/lexers/LexBatch.cxx",
    "chars": 23629,
    "preview": "// Scintilla source code edit control\n/** @file LexBatch.cxx\n ** Lexer for batch files.\n **/\n// Copyright 1998-2001 by N"
  },
  {
    "path": "lexilla/lexers/LexBibTeX.cxx",
    "chars": 8758,
    "preview": "// Copyright 2008-2010 Sergiu Dotenco. The License.txt file describes the\n// conditions under which this software may be"
  },
  {
    "path": "lexilla/lexers/LexBullant.cxx",
    "chars": 6514,
    "preview": "// SciTE - Scintilla based Text Editor\n// LexBullant.cxx - lexer for Bullant\n\n#include <stdlib.h>\n#include <string.h>\n#i"
  },
  {
    "path": "lexilla/lexers/LexCIL.cxx",
    "chars": 12177,
    "preview": "// Scintilla source code edit control\n/** @file LexCIL.cxx\n ** Lexer for Common Intermediate Language\n ** Written by Jad"
  },
  {
    "path": "lexilla/lexers/LexCLW.cxx",
    "chars": 22148,
    "preview": "// Scintilla source code edit control\n/** @file LexCLW.cxx\n ** Lexer for Clarion.\n ** 2004/12/17 Updated Lexer\n **/\n// C"
  },
  {
    "path": "lexilla/lexers/LexCOBOL.cxx",
    "chars": 13282,
    "preview": "// Scintilla source code edit control\n/** @file LexCOBOL.cxx\n ** Lexer for COBOL\n ** Based on LexPascal.cxx\n ** Written "
  },
  {
    "path": "lexilla/lexers/LexCPP.cxx",
    "chars": 62222,
    "preview": "// Scintilla source code edit control\n/** @file LexCPP.cxx\n ** Lexer for C++, C, Java, and JavaScript.\n ** Further foldi"
  },
  {
    "path": "lexilla/lexers/LexCSS.cxx",
    "chars": 18649,
    "preview": "// Scintilla source code edit control\n// Encoding: UTF-8\n/** @file LexCSS.cxx\n ** Lexer for Cascading Style Sheets\n ** W"
  },
  {
    "path": "lexilla/lexers/LexCaml.cxx",
    "chars": 10746,
    "preview": "// Scintilla source code edit control\n/** @file LexCaml.cxx\n ** Lexer for Objective Caml.\n **/\n// Copyright 2005-2009 by"
  },
  {
    "path": "lexilla/lexers/LexCmake.cxx",
    "chars": 15815,
    "preview": "// Scintilla source code edit control\n/** @file LexCmake.cxx\n ** Lexer for Cmake\n **/\n// Copyright 2007 by Cristian Adam"
  },
  {
    "path": "lexilla/lexers/LexCoffeeScript.cxx",
    "chars": 17067,
    "preview": "// Scintilla source code edit control\n/** @file LexCoffeeScript.cxx\n ** Lexer for CoffeeScript.\n **/\n// Copyright 1998-2"
  },
  {
    "path": "lexilla/lexers/LexConf.cxx",
    "chars": 5745,
    "preview": "// Scintilla source code edit control\n/** @file LexConf.cxx\n ** Lexer for Apache Configuration Files.\n **\n ** First work"
  },
  {
    "path": "lexilla/lexers/LexCrontab.cxx",
    "chars": 7261,
    "preview": "// Scintilla source code edit control\n/** @file LexCrontab.cxx\n ** Lexer to use with extended crontab files used by a po"
  },
  {
    "path": "lexilla/lexers/LexCsound.cxx",
    "chars": 6376,
    "preview": "// Scintilla source code edit control\n/** @file LexCsound.cxx\n ** Lexer for Csound (Orchestra & Score)\n ** Written by Ge"
  },
  {
    "path": "lexilla/lexers/LexD.cxx",
    "chars": 16901,
    "preview": "/** @file LexD.cxx\n ** Lexer for D.\n **\n ** Copyright (c) 2006 by Waldemar Augustyn <waldemar@wdmsys.com>\n ** Converted "
  },
  {
    "path": "lexilla/lexers/LexDMAP.cxx",
    "chars": 9336,
    "preview": "// Scintilla source code edit control\n/** @file LexDMAP.cxx\n ** Lexer for MSC Nastran DMAP.\n ** Written by Mark Robinson"
  },
  {
    "path": "lexilla/lexers/LexDMIS.cxx",
    "chars": 8855,
    "preview": "// Scintilla source code edit control\n/** @file LexDMIS.cxx\n ** Lexer for DMIS.\n  **/\n// Copyright 1998-2005 by Neil Hod"
  },
  {
    "path": "lexilla/lexers/LexDataflex.cxx",
    "chars": 19851,
    "preview": "// Scintilla source code edit control\n/** @file LexDataflex.cxx\n ** Lexer for DataFlex.\n ** Based on LexPascal.cxx\n ** W"
  },
  {
    "path": "lexilla/lexers/LexDiff.cxx",
    "chars": 5932,
    "preview": "// Scintilla source code edit control\n/** @file LexDiff.cxx\n ** Lexer for diff results.\n **/\n// Copyright 1998-2001 by N"
  },
  {
    "path": "lexilla/lexers/LexECL.cxx",
    "chars": 15695,
    "preview": "// Scintilla source code edit control\n/** @file LexECL.cxx\n ** Lexer for ECL.\n **/\n// Copyright 1998-2001 by Neil Hodgso"
  },
  {
    "path": "lexilla/lexers/LexEDIFACT.cxx",
    "chars": 10167,
    "preview": "// Scintilla Lexer for EDIFACT\n// @file LexEDIFACT.cxx\n// Written by Iain Clarke, IMCSoft & Inobiz AB.\n// EDIFACT docume"
  },
  {
    "path": "lexilla/lexers/LexEScript.cxx",
    "chars": 8228,
    "preview": "// Scintilla source code edit control\n/** @file LexEScript.cxx\n ** Lexer for ESCRIPT\n **/\n// Copyright 2003 by Patrizio "
  },
  {
    "path": "lexilla/lexers/LexEiffel.cxx",
    "chars": 7641,
    "preview": "// Scintilla source code edit control\n/** @file LexEiffel.cxx\n ** Lexer for Eiffel.\n **/\n// Copyright 1998-2001 by Neil "
  },
  {
    "path": "lexilla/lexers/LexErlang.cxx",
    "chars": 16623,
    "preview": "// Scintilla source code edit control\n// Encoding: UTF-8\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n//"
  },
  {
    "path": "lexilla/lexers/LexErrorList.cxx",
    "chars": 14291,
    "preview": "// Scintilla source code edit control\n/** @file LexErrorList.cxx\n ** Lexer for error lists. Used for the output pane in "
  },
  {
    "path": "lexilla/lexers/LexFSharp.cxx",
    "chars": 25194,
    "preview": "/**\n * @file LexFSharp.cxx\n * Lexer for F# 5.0\n * Copyright (c) 2021 Robert Di Pardo <dipardo.r@gmail.com>\n * Parts of L"
  },
  {
    "path": "lexilla/lexers/LexFlagship.cxx",
    "chars": 12336,
    "preview": "// Scintilla source code edit control\n/** @file LexFlagship.cxx\n ** Lexer for Harbour and FlagShip.\n ** (Syntactically c"
  },
  {
    "path": "lexilla/lexers/LexForth.cxx",
    "chars": 5358,
    "preview": "// Scintilla source code edit control\n/** @file LexForth.cxx\n ** Lexer for FORTH\n **/\n// Copyright 1998-2003 by Neil Hod"
  },
  {
    "path": "lexilla/lexers/LexFortran.cxx",
    "chars": 24725,
    "preview": "// Scintilla source code edit control\n/** @file LexFortran.cxx\n ** Lexer for Fortran.\n ** Written by Chuan-jian Shen, La"
  },
  {
    "path": "lexilla/lexers/LexGAP.cxx",
    "chars": 7017,
    "preview": "// Scintilla source code edit control\n/** @file LexGAP.cxx\n ** Lexer for the GAP language. (The GAP System for Computati"
  },
  {
    "path": "lexilla/lexers/LexGDScript.cxx",
    "chars": 24493,
    "preview": "// Scintilla source code edit control\n/** @file LexGDScript.cxx\n ** Lexer for GDScript.\n **/\n// Copyright 1998-2002 by N"
  },
  {
    "path": "lexilla/lexers/LexGui4Cli.cxx",
    "chars": 8968,
    "preview": "// Scintilla source code edit control\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// @file LexGui4Cli.c"
  },
  {
    "path": "lexilla/lexers/LexHTML.cxx",
    "chars": 90232,
    "preview": "// Scintilla source code edit control\n/** @file LexHTML.cxx\n ** Lexer for HTML.\n **/\n// Copyright 1998-2005 by Neil Hodg"
  },
  {
    "path": "lexilla/lexers/LexHaskell.cxx",
    "chars": 36660,
    "preview": "/******************************************************************\n *    LexHaskell.cxx\n *\n *    A haskell lexer for th"
  },
  {
    "path": "lexilla/lexers/LexHex.cxx",
    "chars": 29064,
    "preview": "// Scintilla source code edit control\n/** @file LexHex.cxx\n ** Lexers for Motorola S-Record, Intel HEX and Tektronix ext"
  },
  {
    "path": "lexilla/lexers/LexHollywood.cxx",
    "chars": 13294,
    "preview": "// Scintilla source code edit control\n/** @file LexHollywood.cxx\n ** Lexer for Hollywood\n ** Written by Andreas Falkenha"
  },
  {
    "path": "lexilla/lexers/LexIndent.cxx",
    "chars": 2540,
    "preview": "// Scintilla source code edit control\n/** @file LexIndent.cxx\n ** Lexer for no language. Used for indentation-based fold"
  },
  {
    "path": "lexilla/lexers/LexInno.cxx",
    "chars": 10974,
    "preview": "// Scintilla source code edit control\n/** @file LexInno.cxx\n ** Lexer for Inno Setup scripts.\n **/\n// Written by Friedri"
  },
  {
    "path": "lexilla/lexers/LexJSON.cxx",
    "chars": 13869,
    "preview": "// Scintilla source code edit control\n/**\n * @file LexJSON.cxx\n * @date February 19, 2016\n * @brief Lexer for JSON and J"
  },
  {
    "path": "lexilla/lexers/LexJulia.cxx",
    "chars": 41959,
    "preview": "// Scintilla source code edit control\n// Encoding: UTF-8\n/** @file LexJulia.cxx\n ** Lexer for Julia.\n ** Reusing code fr"
  },
  {
    "path": "lexilla/lexers/LexKVIrc.cxx",
    "chars": 16339,
    "preview": "// Scintilla source code edit control\n/** @file LexKVIrc.cxx\n ** Lexer for KVIrc script.\n **/\n// Copyright 2013 by Omega"
  },
  {
    "path": "lexilla/lexers/LexKix.cxx",
    "chars": 3787,
    "preview": "// Scintilla source code edit control\n/** @file LexKix.cxx\n ** Lexer for KIX-Scripts.\n **/\n// Copyright 2004 by Manfred "
  },
  {
    "path": "lexilla/lexers/LexLaTeX.cxx",
    "chars": 16169,
    "preview": "// Scintilla source code edit control\n/** @file LexLaTeX.cxx\n ** Lexer for LaTeX2e.\n  **/\n// Copyright 1998-2001 by Neil"
  },
  {
    "path": "lexilla/lexers/LexLisp.cxx",
    "chars": 8340,
    "preview": "// Scintilla source code edit control\n/** @file LexLisp.cxx\n ** Lexer for Lisp.\n ** Written by Alexey Yutkin.\n **/\n// Co"
  },
  {
    "path": "lexilla/lexers/LexLout.cxx",
    "chars": 6082,
    "preview": "// Scintilla source code edit control\n/** @file LexLout.cxx\n ** Lexer for the Basser Lout (>= version 3) typesetting lan"
  },
  {
    "path": "lexilla/lexers/LexLua.cxx",
    "chars": 19618,
    "preview": "// Scintilla source code edit control\n/** @file LexLua.cxx\n ** Lexer for Lua language.\n **\n ** Written by Paul Winwood.\n"
  },
  {
    "path": "lexilla/lexers/LexMMIXAL.cxx",
    "chars": 5364,
    "preview": "// Scintilla source code edit control\n// Encoding: UTF-8\n/** @file LexMMIXAL.cxx\n ** Lexer for MMIX Assembler Language.\n"
  },
  {
    "path": "lexilla/lexers/LexMPT.cxx",
    "chars": 5278,
    "preview": "// Scintilla source code edit control\n/** @file LexMPT.cxx\n ** Lexer for MPT specific files. Based on LexOthers.cxx\n ** "
  },
  {
    "path": "lexilla/lexers/LexMSSQL.cxx",
    "chars": 11719,
    "preview": "// Scintilla source code edit control\n/** @file LexMSSQL.cxx\n ** Lexer for MSSQL.\n **/\n// By Filip Yaghob <fyaghob@gmail"
  },
  {
    "path": "lexilla/lexers/LexMagik.cxx",
    "chars": 13680,
    "preview": "// Scintilla source code edit control\n/**\n * @file LexMagik.cxx\n * Lexer for GE(r) Smallworld(tm) MagikSF\n */\n// Copyrig"
  },
  {
    "path": "lexilla/lexers/LexMake.cxx",
    "chars": 4370,
    "preview": "// Scintilla source code edit control\n/** @file LexMake.cxx\n ** Lexer for make files.\n **/\n// Copyright 1998-2001 by Nei"
  },
  {
    "path": "lexilla/lexers/LexMarkdown.cxx",
    "chars": 18340,
    "preview": "/******************************************************************\n *  LexMarkdown.cxx\n *\n *  A simple Markdown lexer f"
  },
  {
    "path": "lexilla/lexers/LexMatlab.cxx",
    "chars": 17962,
    "preview": "// Scintilla source code edit control\n// Encoding: UTF-8\n/** @file LexMatlab.cxx\n ** Lexer for Matlab.\n ** Written by Jo"
  },
  {
    "path": "lexilla/lexers/LexMaxima.cxx",
    "chars": 5035,
    "preview": "// Scintilla source code edit control\n/** @file LexMaxima.cxx\n ** Lexer for Maxima (http://maxima.sourceforge.net).\n ** "
  },
  {
    "path": "lexilla/lexers/LexMetapost.cxx",
    "chars": 11067,
    "preview": "// Scintilla source code edit control\n\n// @file LexMetapost.cxx - general context conformant metapost coloring scheme\n//"
  },
  {
    "path": "lexilla/lexers/LexModula.cxx",
    "chars": 16670,
    "preview": "//\t-*- coding: utf-8 -*-\n//\tScintilla source code edit control\n/**\n *\t@file LexModula.cxx\n *\t@author Dariusz \"DKnoto\" Kn"
  },
  {
    "path": "lexilla/lexers/LexMySQL.cxx",
    "chars": 18666,
    "preview": "/**\n * Scintilla source code edit control\n * @file LexMySQL.cxx\n * Lexer for MySQL\n *\n * Improved by Mike Lischke <mike."
  },
  {
    "path": "lexilla/lexers/LexNim.cxx",
    "chars": 27517,
    "preview": "// Scintilla source code edit control\n/** @file LexNim.cxx\n** Lexer for Nim\n** Written by Jad Altahan (github.com/xv)\n**"
  },
  {
    "path": "lexilla/lexers/LexNimrod.cxx",
    "chars": 13919,
    "preview": "// Scintilla source code edit control\n// Nimrod lexer\n// (c) 2009 Andreas Rumpf\n/** @file LexNimrod.cxx\n ** Lexer for Ni"
  },
  {
    "path": "lexilla/lexers/LexNsis.cxx",
    "chars": 19014,
    "preview": "// Scintilla source code edit control\n/** @file LexNsis.cxx\n ** Lexer for NSIS\n **/\n// Copyright 2003 - 2005 by Angelo M"
  },
  {
    "path": "lexilla/lexers/LexNull.cxx",
    "chars": 1138,
    "preview": "// Scintilla source code edit control\n/** @file LexNull.cxx\n ** Lexer for no language. Used for plain text and unrecogni"
  },
  {
    "path": "lexilla/lexers/LexOScript.cxx",
    "chars": 19725,
    "preview": "// Scintilla source code edit control\n/** @file LexOScript.cxx\n ** Lexer for OScript sources; ocx files and/or OSpace du"
  },
  {
    "path": "lexilla/lexers/LexOpal.cxx",
    "chars": 9808,
    "preview": "// Scintilla source code edit control\n/** @file LexOpal.cxx\n ** Lexer for OPAL (functional language similar to Haskell)\n"
  },
  {
    "path": "lexilla/lexers/LexPB.cxx",
    "chars": 12618,
    "preview": "// Scintilla source code edit control\n// @file LexPB.cxx\n// Lexer for PowerBasic by Roland Walter, roland@rowalt.de (for"
  },
  {
    "path": "lexilla/lexers/LexPLM.cxx",
    "chars": 5669,
    "preview": "// Copyright (c) 1990-2007, Scientific Toolworks, Inc.\n// @file LexPLM.cxx\n// Author: Jason Haslam\n// The License.txt fi"
  },
  {
    "path": "lexilla/lexers/LexPO.cxx",
    "chars": 6660,
    "preview": "// Scintilla source code edit control\n/** @file LexPO.cxx\n ** Lexer for GetText Translation (PO) files.\n **/\n// Copyrigh"
  },
  {
    "path": "lexilla/lexers/LexPOV.cxx",
    "chars": 9576,
    "preview": "// Scintilla source code edit control\n/** @file LexPOV.cxx\n ** Lexer for POV-Ray SDL (Persistance of Vision Raytracer, S"
  },
  {
    "path": "lexilla/lexers/LexPS.cxx",
    "chars": 12665,
    "preview": "// Scintilla source code edit control\n/** @file LexPS.cxx\n ** Lexer for PostScript\n **\n ** Written by Nigel Hathaway <ni"
  },
  {
    "path": "lexilla/lexers/LexPascal.cxx",
    "chars": 20917,
    "preview": "// Scintilla source code edit control\n/** @file LexPascal.cxx\n ** Lexer for Pascal.\n ** Written by Laurent le Tynevez\n *"
  },
  {
    "path": "lexilla/lexers/LexPerl.cxx",
    "chars": 62778,
    "preview": "// Scintilla source code edit control\n/** @file LexPerl.cxx\n ** Lexer for Perl.\n ** Converted to lexer object by \"Udo Le"
  },
  {
    "path": "lexilla/lexers/LexPowerPro.cxx",
    "chars": 20475,
    "preview": "// Scintilla source code edit control\n// @file LexPowerPro.cxx\n// PowerPro utility, written by Bruce Switzer, is availab"
  },
  {
    "path": "lexilla/lexers/LexPowerShell.cxx",
    "chars": 8835,
    "preview": "// Scintilla source code edit control\n/** @file LexPowerShell.cxx\n ** Lexer for PowerShell scripts.\n **/\n// Copyright 20"
  },
  {
    "path": "lexilla/lexers/LexProgress.cxx",
    "chars": 21032,
    "preview": "// Scintilla source code edit control\n/** @file LexProgress.cxx\n **  Lexer for Progress 4GL.\n ** Based on LexCPP.cxx of "
  },
  {
    "path": "lexilla/lexers/LexProps.cxx",
    "chars": 5253,
    "preview": "// Scintilla source code edit control\n/** @file LexProps.cxx\n ** Lexer for properties files.\n **/\n// Copyright 1998-2001"
  },
  {
    "path": "lexilla/lexers/LexPython.cxx",
    "chars": 37920,
    "preview": "// Scintilla source code edit control\n/** @file LexPython.cxx\n ** Lexer for Python.\n **/\n// Copyright 1998-2002 by Neil "
  },
  {
    "path": "lexilla/lexers/LexR.cxx",
    "chars": 9656,
    "preview": "// Scintilla source code edit control\n/** @file LexR.cxx\n ** Lexer for R, S, SPlus Statistics Program (Heavily derived f"
  },
  {
    "path": "lexilla/lexers/LexRaku.cxx",
    "chars": 50677,
    "preview": "/** @file LexRaku.cxx\n ** Lexer for Raku\n **\n ** Copyright (c) 2019 Mark Reay <mark@reay.net.au>\n **/\n// Copyright 1998-"
  },
  {
    "path": "lexilla/lexers/LexRebol.cxx",
    "chars": 10769,
    "preview": "// Scintilla source code edit control\n/** @file LexRebol.cxx\n ** Lexer for REBOL.\n ** Written by Pascal Hurni, inspired "
  },
  {
    "path": "lexilla/lexers/LexRegistry.cxx",
    "chars": 11481,
    "preview": "// Scintilla source code edit control\n/**\n * @file LexRegistry.cxx\n * @date July 26 2014\n * @brief Lexer for Windows reg"
  },
  {
    "path": "lexilla/lexers/LexRuby.cxx",
    "chars": 76635,
    "preview": "// Scintilla source code edit control\n/** @file LexRuby.cxx\n ** Lexer for Ruby.\n **/\n// Copyright 2001- by Clemens Wyss "
  }
]

// ... and 948 more files (download for full content)

About this extraction

This page contains the full source code of the ruben2020/codequery GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1148 files (12.1 MB), approximately 3.2M tokens, and a symbol index with 7545 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!