Explorar o código

Update to Scintilla 3.10.1.

woollybah %!s(int64=6) %!d(string=hai) anos
pai
achega
8e2a5bda52
Modificáronse 100 ficheiros con 14795 adicións e 3258 borrados
  1. 341 0
      maxguitextareascintilla.mod/scintilla/BACKPORTING
  2. 20 0
      maxguitextareascintilla.mod/scintilla/CONTRIBUTING
  3. 14 14
      maxguitextareascintilla.mod/scintilla/License.txt
  4. 73 0
      maxguitextareascintilla.mod/scintilla/LongTermDownload.html
  5. 14 8
      maxguitextareascintilla.mod/scintilla/README
  6. BIN=BIN
      maxguitextareascintilla.mod/scintilla/bin/__init__.pyc
  7. 149 0
      maxguitextareascintilla.mod/scintilla/check.mak
  8. 2364 0
      maxguitextareascintilla.mod/scintilla/checkdeps.mak
  9. 13 7
      maxguitextareascintilla.mod/scintilla/cocoa/InfoBar.mm
  10. 46 45
      maxguitextareascintilla.mod/scintilla/cocoa/PlatCocoa.h
  11. 235 245
      maxguitextareascintilla.mod/scintilla/cocoa/PlatCocoa.mm
  12. 9 18
      maxguitextareascintilla.mod/scintilla/cocoa/QuartzTextLayout.h
  13. 74 62
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaCocoa.h
  14. 301 170
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaCocoa.mm
  15. 2 2
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaFramework/Info.plist
  16. 81 9
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj
  17. 7 0
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  18. 72 0
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/xcshareddata/xcschemes/Scintilla.xcscheme
  19. 10 0
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaFramework/module.modulemap
  20. 0 1
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaTest/AppController.h
  21. 17 14
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaTest/AppController.mm
  22. 8 14
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaTest/English.lproj/MainMenu.xib
  23. 7 3
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaTest/ScintillaTest.xcodeproj/project.pbxproj
  24. 7 0
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaTest/ScintillaTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  25. 16 59
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaView.h
  26. 406 36
      maxguitextareascintilla.mod/scintilla/cocoa/ScintillaView.mm
  27. 25 2
      maxguitextareascintilla.mod/scintilla/cppcheck.suppress
  28. 52 0
      maxguitextareascintilla.mod/scintilla/curses/Makefile
  29. 78 0
      maxguitextareascintilla.mod/scintilla/curses/README.md
  30. 1444 0
      maxguitextareascintilla.mod/scintilla/curses/ScintillaCurses.cxx
  31. 128 0
      maxguitextareascintilla.mod/scintilla/curses/ScintillaCurses.h
  32. 14 0
      maxguitextareascintilla.mod/scintilla/curses/THANKS.md
  33. 17 0
      maxguitextareascintilla.mod/scintilla/curses/jinx/Makefile
  34. 118 0
      maxguitextareascintilla.mod/scintilla/curses/jinx/jinx.c
  35. 1 1
      maxguitextareascintilla.mod/scintilla/delbin.bat
  36. 0 1
      maxguitextareascintilla.mod/scintilla/delcvs.bat
  37. 2 2
      maxguitextareascintilla.mod/scintilla/doc/Design.html
  38. BIN=BIN
      maxguitextareascintilla.mod/scintilla/doc/Indicators.png
  39. 2608 0
      maxguitextareascintilla.mod/scintilla/doc/LPegLexer.html
  40. 37 2
      maxguitextareascintilla.mod/scintilla/doc/SciCoding.html
  41. 253 207
      maxguitextareascintilla.mod/scintilla/doc/ScintillaDoc.html
  42. 5 5
      maxguitextareascintilla.mod/scintilla/doc/ScintillaDownload.html
  43. 918 17
      maxguitextareascintilla.mod/scintilla/doc/ScintillaHistory.html
  44. 10 6
      maxguitextareascintilla.mod/scintilla/doc/ScintillaRelated.html
  45. 2 2
      maxguitextareascintilla.mod/scintilla/doc/ScintillaToDo.html
  46. 204 0
      maxguitextareascintilla.mod/scintilla/doc/StyleMetadata.html
  47. 43 35
      maxguitextareascintilla.mod/scintilla/doc/index.html
  48. 0 4
      maxguitextareascintilla.mod/scintilla/gtk/Converter.h
  49. 221 302
      maxguitextareascintilla.mod/scintilla/gtk/PlatGTK.cxx
  50. 194 356
      maxguitextareascintilla.mod/scintilla/gtk/ScintillaGTK.cxx
  51. 290 0
      maxguitextareascintilla.mod/scintilla/gtk/ScintillaGTK.h
  52. 1260 0
      maxguitextareascintilla.mod/scintilla/gtk/ScintillaGTKAccessible.cxx
  53. 192 0
      maxguitextareascintilla.mod/scintilla/gtk/ScintillaGTKAccessible.h
  54. 151 103
      maxguitextareascintilla.mod/scintilla/gtk/deps.mak
  55. 0 683
      maxguitextareascintilla.mod/scintilla/gtk/deps.mak.orig
  56. 33 14
      maxguitextareascintilla.mod/scintilla/gtk/makefile
  57. 15 18
      maxguitextareascintilla.mod/scintilla/gtk/scintilla-marshal.c
  58. 0 125
      maxguitextareascintilla.mod/scintilla/gtk/scintilla-marshal.c.orig
  59. 22 22
      maxguitextareascintilla.mod/scintilla/gtk/scintilla-marshal.h
  60. 2 2
      maxguitextareascintilla.mod/scintilla/gtk/scintilla-marshal.list
  61. 6 16
      maxguitextareascintilla.mod/scintilla/include/ILexer.h
  62. 21 0
      maxguitextareascintilla.mod/scintilla/include/ILoader.h
  63. 147 143
      maxguitextareascintilla.mod/scintilla/include/Platform.h
  64. 86 32
      maxguitextareascintilla.mod/scintilla/include/SciLexer.h
  65. 10 2
      maxguitextareascintilla.mod/scintilla/include/Sci_Position.h
  66. 80 37
      maxguitextareascintilla.mod/scintilla/include/Scintilla.h
  67. 259 125
      maxguitextareascintilla.mod/scintilla/include/Scintilla.iface
  68. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexA68k.cxx
  69. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexAPDL.cxx
  70. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexASY.cxx
  71. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexAU3.cxx
  72. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexAVE.cxx
  73. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexAVS.cxx
  74. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexAbaqus.cxx
  75. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexAda.cxx
  76. 13 14
      maxguitextareascintilla.mod/scintilla/lexers/LexAsm.cxx
  77. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexAsn1.cxx
  78. 860 67
      maxguitextareascintilla.mod/scintilla/lexers/LexBaan.cxx
  79. 30 4
      maxguitextareascintilla.mod/scintilla/lexers/LexBash.cxx
  80. 13 14
      maxguitextareascintilla.mod/scintilla/lexers/LexBasic.cxx
  81. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexBatch.cxx
  82. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexBibTeX.cxx
  83. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexBullant.cxx
  84. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexCLW.cxx
  85. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexCOBOL.cxx
  86. 189 104
      maxguitextareascintilla.mod/scintilla/lexers/LexCPP.cxx
  87. 3 3
      maxguitextareascintilla.mod/scintilla/lexers/LexCSS.cxx
  88. 5 2
      maxguitextareascintilla.mod/scintilla/lexers/LexCaml.cxx
  89. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexCmake.cxx
  90. 74 5
      maxguitextareascintilla.mod/scintilla/lexers/LexCoffeeScript.cxx
  91. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexConf.cxx
  92. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexCrontab.cxx
  93. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexCsound.cxx
  94. 13 14
      maxguitextareascintilla.mod/scintilla/lexers/LexD.cxx
  95. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexDMAP.cxx
  96. 13 14
      maxguitextareascintilla.mod/scintilla/lexers/LexDMIS.cxx
  97. 12 4
      maxguitextareascintilla.mod/scintilla/lexers/LexDiff.cxx
  98. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexECL.cxx
  99. 336 0
      maxguitextareascintilla.mod/scintilla/lexers/LexEDIFACT.cxx
  100. 0 2
      maxguitextareascintilla.mod/scintilla/lexers/LexEScript.cxx

+ 341 - 0
maxguitextareascintilla.mod/scintilla/BACKPORTING

@@ -0,0 +1,341 @@
+Overview
+========
+
+The LongTerm3 branch gets nearly all of its updates from default via
+backporting. The process is simple:
+
+  hg update LongTerm3
+  hg graft -e [changeset]
+
+This grafts (or cherry-picks) [changeset] from default into LongTerm3. The '-e'
+option allows for editing the commit message. Backported commit messages usually
+have the form:
+
+  Backport: [original commit message]
+
+  Backport of [revision]:[changeset].
+
+Any backport-specific additions, modifications, or deletions from the original
+changeset should be mentioned in the new message.
+
+Note: the '-e' option also gives you a chance to compile and/or test any adverse
+effects produced by the graft prior to commit. Any changes made to files before
+committing will reflect in the final graft.
+
+In order to back out of a graft:
+
+  hg rollback
+  hg revert --all [--no-backup]
+
+This can only be done ONCE, and affects the most recent graft, so make sure you
+test any questionable grafts first before attempting another one.
+
+Testing Backports
+=================
+
+Backporting a change is one thing, but ensuring the backport was successful is
+another. Currently, the measure of "success" is whether Scintilla compiles on
+all platforms after a backported change. This process can be automated using hg
+hooks and the "check.mak" makefile. By adding the following to .hg/hgrc:
+
+  [hooks]
+  pretxncommit.adddeps = test -z "`hg status | grep '^A' | grep '\.\(h\|cxx\)$'`" || make -f check.mak deps
+  pretxncommit.compile = make -f check.mak
+
+whenever a backported change is about to be committed, hg runs "check.mak",
+which attempts to compile Scintilla on all platforms. If successful, the commit
+is made. Otherwise, the commit fails and changes must be made before attempting
+to commit again.
+
+The file "check.mak" is designed to run on a Linux machine that has
+cross-compilers for Win32 and Mac OSX. It does not necessarily produce any
+binary builds of Scintilla that can be used -- it just ensures Scintilla can be
+built without compile errors. How to obtain a set of cross-compilers is beyond
+the scope of this document. At the time of writing, GCC 5.4 is used exclusively.
+
+Not only does "check.mak" perform platform compile checks, but it also has rules
+for manually running Scintilla's unit tests (which take too long to run
+automatically as a pre-commit hook), creating a LongTerm3 release archive set,
+and uploading documentation to the LongTerm3 website on SourceForge:
+
+  make test
+  make zip
+  make upload
+
+The last rule requires user credentials.
+
+Backport Status
+===============
+
+This section mentions all upstream changesets that have either NOT been
+backported, beginning at 6289:4c1084a571ff (Starting 3.x long term maintenance
+branch), or have information worth noting.
+
+6290:2378244bf3c7 Converted to Automatic Reference Counting.
+6291:31466630bccc Using instancetype for constructors.
+6292:7f58802368f4 Using modern Objective C literals and indexing.
+6294:e1301b1d2321 Use property dot syntax.
+6295:57988f82bf71 Indented consistently by using astyle.
+  Cocoa platform only.
+  None of these are backported since I am unsure if they are supported in C++11.
+  Despite finding references to ARC and some Modern Objective-C dating back to
+  2013ish, I also see that Clang 4.0 introduced support for some of this.
+  However, Clang 4.0 was released in early 2017.
+
+6304:b6cf154fe8d0 SciTE change log.
+  Not backported, as this applies only to SciTE.
+
+6309:2d4cb83e9297 Back down from gnu++17 to gnu++14 so can build with g++ on current Ubuntu.
+  Not backported since only C++11 is supported.
+
+6317:0f15d772bceb SciTE change log.
+6319:a3b66b2525e7 SciTE change log.
+  Not backported, as these apply only to SciTE.
+
+6328:3c87cf6d2599 Update IDocument for version 4. Drop IDocumentWithLineEnd interface to just have IDocument but with all the methods from IDocumentWithLineEnd. This removes version checking (for now). Use dvRelease4 ID. Drop mask argument to StartStyling.
+  Not backported since IDocument and ILexer interfaces should not change once
+  published according to Neil. Since the only substantial change is changing the
+  StartStyling() API, it does not seem worth creating a new IDocument4
+  interface with an option mask argument. It would likely cause compiler issues
+  too.
+
+6329:6468941ee017 Updated documentation to match changes to IDocument and ILexer.
+  Not backported since IDocument has not been changed.
+  It may be worth committed a modification of the first diff though, if 3.8.0
+  ends up using 64-bit types for Sci_Position and Sci_PositionU.
+
+6330:59f341b22087 Deprecate single phase drawing.
+6333:320418de6275 Clean whitespace.
+  Not backported since the curses platform relies on single-phase drawing for
+  now.
+
+6345:faecbd0078e5 Merge Ilexer and ILexerWithSubStyles into ILexer4 to avoid need for version checking in 4.0. Use lvRelease4 ID.
+  Partially backported with 6346:72bd27f81477 minus ILexer4, since the ILexer4
+  interface being added cannot co-exist with the existing ILexer interface.
+  (LexerModule.h uses a single typedef.)
+
+6357:96232b746342 SciTE change log.
+6361:69fddf8f8a15 SciTE changelog.
+  Not backported, as these apply only to SciTE.
+
+6372:cae69b34b92e Preparing for the 4.0.0 release.
+6374:ec8e68de4ddb Delaying a day due to change with Lua in SciTE.
+6375:4aaf170db91a Added tag rel-4-0-0 for changeset ec8e68de4ddb
+  Not backported, since this is LongTerm3.
+
+6394:dae03efac67d Update Xcode project files automatically for Xcode 9.
+  Not backported, since Xcode 9 was released in late 2017.
+
+6403:bd5c44cb0ab8 Updates for 4.0.1 release.
+6404:e04bd73927ea Added tag rel-4-0-1 for changeset bd5c44cb0ab8
+  Not backported, since this is LongTerm3.
+
+6407:f60756d22ff3 Fix bad formatting.
+  Not backported, as the bad formatting was not merged into the previous
+  backport.
+
+6409:c6a13f6eac24 Disable the animated find indicator on macOS 10.13 where it fails.
+6410:29e81816b889 Change log.
+  Not backported, since macOS 10.13 was released late 2017 and
+  NSAppKitVersionNumber10_12_2 is probably not defined on earlier macOSs. I
+  cannot find a good way to #ifdef around it.
+
+6411:96becb885ce4 Updates for 4.0.2.
+6412:ad210d76378f Added tag rel-4-0-2 for changeset 96becb885ce4
+6417:f78045efae20 Add section for 4.0.3 and move posr-4.0.2 items into it.
+  Not backported, since this is LongTerm3.
+
+6425:73343682cbda Start of bidirectional code - implement SCI_SETBIDIRECTIONAL.
+6426:0f7f5a382dbb Add ENABLE_BIDIRECTIONAL option to make files.
+  Not backported, since it is unknown whether or not this feature will have any
+  C++14 or C++17 features in it.
+
+6432:b25c127aa6c5 Ensure build allows C++17. ARC setting is matching same setting at different scope so no effect.
+6433:231ac99e1fdc Allow C++17 in all build and project files.
+6435:5dd1b26df75f Replace Sci::clamp with C++ standard std::clamp function. std::clamp is from C++17.
+  Not backported, since only C++11 is supported.
+
+6438:f635874b303b SciTE changelog.
+6439:0e036d7fa960 SciTE changelog.
+  Not backported, as these apply only to SciTE.
+
+6440:a1731ae83d2a Disable animated find indicator on macOS 10.12 as it causes drawing failures.
+  Not backported, since macOS 10.13 was released late 2017 and
+  NSAppKitVersionNumber10_12_2 is probably not defined on earlier macOSs. I
+  cannot find a good way to #ifdef around it.
+
+6446:f7abec3bbc7a SciTE change log.
+6447:44ff2195a202 SciTE change log.
+  Not backported, as these apply only to SciTE.
+
+6450:7295a806b4c4 Updating for 4.0.3.
+  Not backported, since this is LongTerm3.
+
+6452:1bf8b7c50995 Update Cocoa test app to Xcode 9.2 settings.
+  Not backported, since Xcode 9 was released in late 2017.
+
+6453:71a51a9a6048 Added tag rel-4-0-3 for changeset 1bf8b7c50995
+  Not backported, since this is LongTerm3.
+
+6454:c25d3cb37f7d SciTE change log.
+6455:b9e278677527 SciTE changelog.
+6459:0aef625a6ab0 SciTE changelog.
+  Not backported, as these apply only to SciTE.
+
+6460:b4500f60b593 Added string_view to order.
+  Not backported, since only C++11 is supported.
+
+6464:fe5f45df61ce SciTE change log.
+  Not backported, as this applies only to SciTE.
+
+6465:cdfd8b285278 Update to c++17 so make_unique is available.
+6476:59bafd0d2f77 Updated requied compiler versions.
+  Not backported, since only C++11 is supported.
+
+6632:8399b7723701 Change standard flag on MacOS as Xcode clang doesn't yet like c++17.
+  Not backported, since only C++11 is supported.
+
+6643:ebbb4e5aaf93 Update unit test Visual C++ builds to Visual C++ 2017 with /std:c++latest.
+  Not backported, since only C++11 is supported.
+
+6661:d03cd726962c New Xcode 9.3 so ran the updater which turned on some warnings and it fiddled with the projects and schemes.
+6662:3c001296c0a4 Reverted #6488 as Xcode clang 9.1 now likes --std=c++17.
+6664:0f1db0d9a0a6 Standardize on --std=c++17, avoiding GNU extensions and enabling clang 6.0.
+6666:9561714c303b Updated due to allowing C++17 code now.
+  Not backported, since only C++11 is supported.
+
+6676:d48bdae67b33 Updates for 4.0.4.
+6678:95fdb4c19b33 Added tag rel-4-0-4 for changeset d48bdae67b33
+  Not backported, since this is LongTerm3.
+
+6680:0161abb24da4 Bug [#2008]. Avoid warning unsigned >= 0.
+  Not backported, since it is unknown whether or not this feature will have any
+  C++14 or C++17 features in it.
+
+6689:41dbff5a4813 Make method const as it is just a reader.
+  Not backported, since return value depends on interface, which is different
+  from single interface in 4.x.
+
+6746:61e16d5c73cf Change log for SciTE for macOS.
+6749:85d99f7c5c6d SciTE change log.
+6757:56a46ce2e0b4 SciTE change log.
+6779:d5508bacbfd4 SciTE change log.
+  Not backported, as these apply only to SciTE.
+
+6786:68c8592fe333 Specify type of std::clamp to avoid casting arguments.
+  Not backported, since std::clamp is C++17 and Sci::clamp is not typed.
+
+6922:d97cb73c8da7 SciTE change log.
+  Not backported, as this applies only to SciTE.
+
+6924:b9ab83221b03 Updates for 4.0.5.
+6931:87dc832e3c94 Added tag rel-4-0-5 for changeset b9ab83221b03
+6932:cc470382029e Add stub for next release.
+  Not backported, since this is LongTerm3.
+
+6936:c98e38d29c46 Include <string_view> in tests in case needed.
+6937:5200f56c1494 Include <string_view> to allow future use in Platform interface and Unicode.
+6941:8a34096cd01e Modernize Platform.h (4) - update Surface to use string_view for text arguments.
+  Not backported, since only C++11 is supported.
+
+6942:adbc779db70a Modernize Platform.h (5) - remove ElapsedTime.
+  Not backported, since it was already removed in changeset 6876:a057d12cc6b9.
+
+6943:39f2ec3334c1 Use string_view for UniConversion functions.
+  Not backported, since only C++11 is supported.
+
+6946:959308676456 Fix warning.
+  Not backported, since it applies to a previous changeset not backported.
+
+6947:fb52ef66ed47 Remove dependency on StringCopy and simplify constructor.
+  Not backported, since only C++11 is supported.
+
+6949:7747dc29d8a0 Fix warnings in debug assertions.
+  Not backported, since it applies to a previous changeset not backported.
+
+6950:682b634df52b Encapsulate WideCharToMultiByte and MultiByteToWideChar to simplify calling sites and standardize use of options.
+  Not backported, since only C++11 is supported.
+
+6951:b2a17a08a1f8 Replace ELEMENTS with std::size and drop inclusion of StringCopy.h.
+  Backported only the latter bit since C++11 does not have std::size.
+
+6961:d2563c53ab4c SciTE change log.
+  Not backported, as this applies only to SciTE.
+
+6962:514fde42ccbf Draw invalid bytes in DBCS when detected as blobs in a similar way to UTF-8.
+  Backported, but replaced std::string_view usage with const char* and size_t
+  components.
+
+6964:d7ec2cdbcd16 If decoding DBCS text fails, use the MacRoman encoding to ensure something is visible.
+  Not backported, as it makes use of a previous changeset not backported and is
+  not easy for me to support if I patched it.
+
+6970:b78f7643ae73 Add definitions for bidirectional support to Platform.h and provide empty implementations for each platform.
+6971:e51e7a972b89 Implement bidirectional mode bidiL2R for DirectDraw on Win32.
+6972:f30d0a228046 Update for bidirectional support.
+6973:7570322b0219 Added credits.
+7006:a6d3cefd4f79 Add TabPositionAfter method to IScreenLine as this calculation is needed on each platform and it allows extension to custom tab stops.
+  Not backported, since previous bidirectional support was not backported.
+
+7009:e1100c6feaaf Add function to find a UTF-16 position in a UTF-8 string.
+  Not backported, since it is only used in bidirectional support at the moment.
+
+7011:23a98ab36601 Define IScreenLineLayout as the main interface for implementing bidirectional features by platform code.
+7012:5f4011e010f9 Implement IScreenLineLayout for Cocoa Core Text as ScreenLineLayout.
+7013:0d86879c5ca5 Make virtual space selections visible in bidirectional mode.
+7014:39d3e00c381a UpdateBidiData is called by EditView but doesn't use any EditView fields so make it static.
+7015:6a7459cd08f9 Updated to mention bidirectional works on Cocoa.
+  Not backported, since previous bidirectional support was not backported.
+
+7026:4377a8d710e1 Update Cocoa enumerations to current names instead of deprecated names.
+  Not backported, since many of these enumerations are not available for older SDKs.
+
+7027:b71248119e8b Remove compile-time ENABLE_BIDIRECTIONAL option as bidirectional feature is now controlled completely at run-time.
+  Not backported, since previous bidirectional support was not backported.
+
+7033:5da90aad11da Updates for 4.1.0.
+  Not backported, since this is LongTerm3.
+
+7034:0dc20d87a4f9 Note that Cocoa also supports bidirectional text.
+  Not backported, since previous bidirectional support was not backported.
+
+7055:bb3c92f403f7 Added tag rel-4-1-0 for changeset 0dc20d87a4f9
+7059:455f134efbc1 SciTE change log.
+7061:d744568dfaa5 SciTE change log.
+  Not backported, since this is LongTerm3.
+
+7063:0d5edc93e280 Optional indexing of line starts in UTF-8 documents by UTF-32 code points and
+  Backported, but replaced std::string_view usage with const char* and size_t
+  components. Also used const_cast where appropriate to fix compile errors.
+
+7066:ee645426b872 Add SciTE credit.
+7067:43101fb47a25 SciTE change log.
+  Not backported, since this is LongTerm3.
+
+7069:e65cfc5348a5 Change lifetime of textLayout for bidirectional so it is always released in
+7071:d9e28bcc6cf9 Bug [#2030]. Fix Win32 crash setting technology to default after bidirectional
+  Not backported, since previous bidirectional support was not backported.
+
+7074:b190647b5084 SciTE change log.
+7079:744cd6e004ae Updates for 4.1.1.
+7080:59fdd1f4d5cd Updated change list for 4.1.1.
+7082:058cd4b189e6 Added tag rel-4-1-1 for changeset 892c361b3969
+7083:d87b627094ad Fix version number.
+7084:cd27559c2a65 Moved tag because of doc fix.
+7085:fcf47c352832 Updated outdated text.
+7086:c8643589ba1d Added tag rel-4-1-1 for changeset fcf47c352832
+7091:575636ffe226 Added section for next release.
+7095:58524eea6d35 SciTE change log.
+7101:f4988dfccc31 Updates for 4.1.2 release.
+7103:20455b6997e3 Added tag rel-4-1-2 for changeset 927e7d62e917
+  Not backported, since this is LongTerm3.
+
+7104:9b7f24b1b150 Fix crash when particular patterns of invalid UTF-8 led to failure to create a
+  Not backported, since previous bidirectional support was not backported.
+
+7109:29f0ca6d2d1b Improve performance of Editor::RangeText by avoding per-character checks.
+  Backported, but with const_cast to file compile error.
+
+7121:2f5d50043861 Bug [#2055]. Use dark info bar background when system is set to Dark Appearance.
+  Not backported, since its parent changeset 7026:4377a8d710e1 was not
+  backported.

+ 20 - 0
maxguitextareascintilla.mod/scintilla/CONTRIBUTING

@@ -0,0 +1,20 @@
+Fixes should be posted to the Bug Tracker
+http://sourceforge.net/p/scintilla/bugs/
+
+Features should be posted to the Feature Request Tracker
+http://sourceforge.net/p/scintilla/feature-requests/
+
+Either send unified diffs (or patch files) or zip archives with whole files.
+Mercurial patch files are best as they include author information and commit
+messages.
+
+Questions should go to the scintilla-interest mailing list
+https://groups.google.com/forum/#!forum/scintilla-interest
+
+Code should follow the guidelines at
+http://www.scintilla.org/SciCoding.html
+
+Do not use SourceForge's Merge Request mechanism or message sending
+feature as no one is monitoring these.
+The neilh @ scintilla.org account receives much spam and is only checked
+occasionally. Almost all Scintilla mail should go to the mailing list.

+ 14 - 14
maxguitextareascintilla.mod/scintilla/License.txt

@@ -2,19 +2,19 @@ License for Scintilla and SciTE
 
 Copyright 1998-2003 by Neil Hodgson <[email protected]>
 
-All Rights Reserved 
+All Rights Reserved
 
-Permission to use, copy, modify, and distribute this software and its 
-documentation for any purpose and without fee is hereby granted, 
-provided that the above copyright notice appear in all copies and that 
-both that copyright notice and this permission notice appear in 
-supporting documentation. 
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation.
 
-NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 
-AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY 
-SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE 
-OR PERFORMANCE OF THIS SOFTWARE. 
+NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
+OR PERFORMANCE OF THIS SOFTWARE.

+ 73 - 0
maxguitextareascintilla.mod/scintilla/LongTermDownload.html

@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta name="generator" content="HTML Tidy, see www.w3.org" />
+    <meta name="generator" content="SciTE" />
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <title>
+      Download Scintilla
+    </title>
+  </head>
+  <body bgcolor="#FFFFFF" text="#000000">
+    <table bgcolor="#000000" width="100%" cellspacing="0" cellpadding="0" border="0">
+      <tr>
+        <td>
+          <img src="SciTEIco.png" border="3" height="64" width="64" alt="Scintilla icon" />
+        </td>
+        <td>
+          <a href="index.html" style="color:white;text-decoration:none"><font size="5">Download
+          Scintilla</font></a>
+        </td>
+      </tr>
+    </table>
+    <table bgcolor="#CCCCCC" width="100%" cellspacing="0" cellpadding="8" border="0">
+      <tr>
+        <td>
+          <font size="4"> <a href="https://sourceforge.net/projects/scintilla/files/scintilla/3.10.1/scintilla3101.zip/download">
+  Windows</a>&nbsp;&nbsp;
+  <a href="https://sourceforge.net/projects/scintilla/files/scintilla/3.10.1/scintilla3101.tgz/download">
+          GTK+/Linux</a>&nbsp;&nbsp;
+  </font>
+        </td>
+      </tr>
+    </table>
+    <h2>
+       Download.
+    </h2>
+    <p>
+       This page is for the LongTerm3 branch of Scintilla which avoids depending on C++14 or later features.
+       Compilers as old as GCC 4.8, MSVC 2015, and Clang 3.4 are supported.
+    </p>
+    <p>
+       The <a href="License.txt">license</a> for using Scintilla is similar to that of Python
+      containing very few restrictions.
+    </p>
+    <h3>
+       Release 3.10.1
+    </h3>
+    <h4>
+       Source Code
+    </h4>
+       The source code package contains all of the source code for Scintilla but no binary
+  executable code and is available in
+       <ul>
+       <li><a href="https://sourceforge.net/projects/scintilla/files/scintilla/3.10.1/scintilla3101.zip/download">zip format</a> (1600K) commonly used on Windows</li>
+       <li><a href="https://sourceforge.net/projects/scintilla/files/scintilla/3.10.1/scintilla3101.tgz/download">tgz format</a> (1400K) commonly used on Linux and compatible operating systems</li>
+       </ul>
+       Instructions for building on both Windows and Linux are included in the readme file.
+    <p>
+       Previous versions can be downloaded from the <a href="ScintillaHistory.html">history
+      page</a>.
+    </p>
+    <p>
+       Also available from Mercurial:
+    </p>
+    <pre>
+    hg clone http://hg.code.sf.net/p/scintilla/code scintilla
+    cd scintilla && hg update LongTerm3
+    </pre>
+  </body>
+</html>

+ 14 - 8
maxguitextareascintilla.mod/scintilla/README

@@ -6,9 +6,11 @@ To build SciTE, Scintilla must first be built.
 
 *** GTK+/Linux version ***
 
-You must first have GTK+ 2.18 or later and GCC (4.8 or better) installed.
-GTK+ 1.x will not work.
+You must first have GTK+ 2.24 or later and GCC (4.8 or better) installed.
+Clang may be used by adding CLANG=1 to the make command line.
 Other C++ compilers may work but may require tweaking the make file.
+Either GTK+ 2.x or 3.x may be used with 2.x the default and 3.x
+chosen with the make argument GTK3=1.
 
 To build Scintilla, use the makefile located in the scintilla/gtk directory
 	cd scintilla/gtk
@@ -40,20 +42,20 @@ The current make file only supports static linking between SciTE and Scintilla.
 
 *** Windows version ***
 
-A C++ compiler is required, with C++11 required for building SciTE.
+A C++ 11 compiler is required.
 Visual Studio 2015 is the development system used for most development
 although Mingw32 4.8 is also supported.
 
 To build Scintilla, make in the scintilla/win32 directory
 		cd scintilla\win32
 GCC:		mingw32-make
-VS .NET:	nmake -f scintilla.mak
+Visual C++:	nmake -f scintilla.mak
 		cd ..\..
 
 To build SciTE, use the makefiles located in the scite/win32 directory
 		cd scite\win32
 GCC:		mingw32-make
-VS .NET: 	nmake -f scite.mak
+Visual C++: 	nmake -f scite.mak
 
 An executable SciTE will now be in scite/bin.
 
@@ -67,11 +69,11 @@ To build Scintilla, make in the scintilla/gtk directory
 	cd scintilla\gtk
 	mingw32-make
 
-*** OS X Cocoa version ***
+*** macOS Cocoa version ***
 
-Xcode 6 or 7 may be used to build Scintilla on OS X.
+Xcode 8 may be used to build Scintilla on macOS.
 
-There is no open source version of SciTE for OS X but there is a commercial
+There is no open source version of SciTE for macOS but there is a commercial
 version available through the App Store.
 
 To build Scintilla, run xcodebuild in the scintilla/cocoa/ScintillaFramework directory
@@ -81,3 +83,7 @@ To build Scintilla, run xcodebuild in the scintilla/cocoa/ScintillaFramework dir
 *** Qt version ***
 
 See the qt/README file to build Scintilla with Qt.
+
+*** Curses version ***
+
+See the curses/README.md file to build Scintilla with curses.

BIN=BIN
maxguitextareascintilla.mod/scintilla/bin/__init__.pyc


+ 149 - 0
maxguitextareascintilla.mod/scintilla/check.mak

@@ -0,0 +1,149 @@
+# Copyright 2018 Mitchell mitchell.att.foicica.com. See License.txt.
+# This makefile is used only for catching compile and test errors when
+# backporting fixes and features from the main branch of Scintilla. It likely
+# will not produce compiled targets that can be used by a Scintilla-based
+# application.
+# Usage: make -f check.mak
+
+.SUFFIXES: .cxx .c .o .h .a
+
+INCLUDEDIRS = -Iinclude -Isrc -Ilexlib
+CFLAGS = -pedantic -Wall
+CXXFLAGS = -std=c++11 -pedantic -pedantic-errors -DSCI_LEXER $(INCLUDEDIRS) \
+           -DNDEBUG -Os -Wall
+ifndef GTK3
+  GTK_CFLAGS = $(shell pkg-config --cflags gtk+-2.0)
+else
+  GTK_CFLAGS = $(shell pkg-config --cflags gtk+-3.0)
+endif
+
+base_src_objs = AutoComplete.o CallTip.o CaseConvert.o CaseFolder.o \
+                Catalogue.o CellBuffer.o CharClassify.o ContractionState.o \
+                DBCS.o Decoration.o Document.o EditModel.o Editor.o EditView.o \
+                ExternalLexer.o Indicator.o KeyMap.o LineMarker.o MarginView.o \
+                PerLine.o PositionCache.o RESearch.o RunStyles.o \
+                ScintillaBase.o Selection.o Style.o UniConversion.o \
+                ViewStyle.o XPM.o
+base_lexlib_objs = Accessor.o CharacterCategory.o CharacterSet.o LexerBase.o \
+                   LexerModule.o LexerNoExceptions.o LexerSimple.o \
+                   PropSetSimple.o StyleContext.o WordList.o
+base_lexer_objs = $(addsuffix .o,$(basename $(sort $(notdir $(wildcard lexers/Lex*.cxx)))))
+
+win32_src_objs = $(addprefix win32/, $(base_src_objs))
+win32_lexlib_objs = $(addprefix win32/, $(base_lexlib_objs))
+win32_lexer_objs = $(addprefix win32/, $(base_lexer_objs))
+cocoa_src_objs = $(addprefix cocoa/, $(base_src_objs))
+cocoa_lexlib_objs = $(addprefix cocoa/, $(base_lexlib_objs))
+cocoa_lexer_objs = $(addprefix cocoa/, $(base_lexer_objs))
+gtk_src_objs = $(addprefix gtk/, $(base_src_objs))
+gtk_lexlib_objs = $(addprefix gtk/, $(base_lexlib_objs))
+gtk_lexer_objs = $(addprefix gtk/, $(base_lexer_objs))
+curses_src_objs = $(addprefix curses/, $(base_src_objs))
+curses_lexlib_objs = $(addprefix curses/, $(base_lexlib_objs))
+curses_lexer_objs = $(addprefix curses/, $(base_lexer_objs))
+
+all: | /tmp/scintilla
+	make -C $| -f check.mak -j4 bin/scintilla_win32.a \
+		bin/scintilla_cocoa.a bin/scintilla_gtk.a bin/scintilla_curses.a qt
+/tmp/scintilla: ; cp -rs `pwd` $@
+
+# Windows platform objects.
+$(win32_src_objs): win32/%.o: src/%.cxx
+	i686-w64-mingw32-g++ -c $(CXXFLAGS) $< -o $@
+$(win32_lexlib_objs): win32/%.o: lexlib/%.cxx
+	i686-w64-mingw32-g++ -c $(CXXFLAGS) $< -o $@
+$(win32_lexer_objs): win32/%.o: lexers/%.cxx
+	i686-w64-mingw32-g++ -c $(CXXFLAGS) $< -o $@
+win32/PlatWin.o win32/ScintillaWin.o win32/ScintillaDLL.o win32/HanjaDic.o: win32/%.o: win32/%.cxx
+	i686-w64-mingw32-g++ -c $(CXXFLAGS) $< -o $@
+bin/scintilla_win32.a: $(win32_src_objs) $(win32_lexlib_objs) \
+                       $(win32_lexer_objs) win32/PlatWin.o \
+                       win32/ScintillaWin.o win32/ScintillaDLL.o \
+                       win32/HanjaDic.o
+	i686-w64-mingw32-ar rc $@ $^
+	touch $@
+
+# MacOS platform objects.
+$(cocoa_src_objs): cocoa/%.o: src/%.cxx
+	i386-apple-darwin9-g++ -c $(CXXFLAGS) $< -o $@
+$(cocoa_lexlib_objs): cocoa/%.o: lexlib/%.cxx
+	i386-apple-darwin9-g++ -c $(CXXFLAGS) $< -o $@
+$(cocoa_lexer_objs): cocoa/%.o: lexers/%.cxx
+	i386-apple-darwin9-g++ -c $(CXXFLAGS) $< -o $@
+cocoa/PlatCocoa.o cocoa/ScintillaCocoa.o cocoa/ScintillaView.o: cocoa/%.o: cocoa/%.mm
+	i386-apple-darwin9-clang++-gstdc++ -c $(CXXFLAGS) $< -o $@
+bin/scintilla_cocoa.a: $(cocoa_src_objs) $(cocoa_lexlib_objs) \
+                       $(cocoa_lexer_objs) #cocoa/PlatCocoa.o \
+                       #cocoa/ScintillaCocoa.o cocoa/ScintillaView.o
+	i386-apple-darwin9-ar rc $@ $^
+	touch $@
+
+# GTK platform objects.
+bin/scintilla_gtk.a: $(gtk_src_objs) $(gtk_lexlib_objs) $(gtk_lexer_objs) \
+                     gtk/PlatGTK.o gtk/ScintillaGTK.o \
+                     gtk/ScintillaGTKAccessible.o gtk/scintilla-marshal.o
+	ar rc $@ $^
+	touch $@
+$(gtk_src_objs): gtk/%.o: src/%.cxx
+	g++ -c $(CXXFLAGS) -DGTK $< -o $@
+$(gtk_lexlib_objs): gtk/%.o: lexlib/%.cxx
+	g++ -c $(CXXFLAGS) -DGTK $< -o $@
+$(gtk_lexer_objs): gtk/%.o: lexers/%.cxx
+	g++ -c $(CXXFLAGS) -DGTK $< -o $@
+gtk/PlatGTK.o gtk/ScintillaGTK.o gtk/ScintillaGTKAccessible.o: gtk/%.o: gtk/%.cxx
+	g++ -c $(CXXFLAGS) -DGTK $(GTK_CFLAGS) $< -o $@
+gtk/scintilla-marshal.o: gtk/scintilla-marshal.c
+	gcc -c $(CFLAGS) $(GTK_CFLAGS) $< -o $@
+
+# Curses platform objects.
+bin/scintilla_curses.a: $(curses_src_objs) $(curses_lexlib_objs) \
+                        $(curses_lexer_objs) curses/ScintillaCurses.o
+	ar rc $@ $^
+	touch $@
+$(curses_src_objs): curses/%.o: src/%.cxx
+	g++ -c $(CXXFLAGS) -DCURSES -DLPEG_LEXER $< -o $@
+$(curses_lexlib_objs): curses/%.o: lexlib/%.cxx
+	g++ -c $(CXXFLAGS) -DCURSES -DLPEG_LEXER $< -o $@
+$(curses_lexer_objs): curses/%.o: lexers/%.cxx
+	g++ -c $(CXXFLAGS) -DCURSES -DLPEG_LEXER $< -o $@
+curses/ScintillaCurses.o: curses/ScintillaCurses.cxx
+	g++ -c $(CXXFLAGS) -DCURSES -Wno-unused-parameter $< -o $@
+
+# Qt platform objects. (Note: requires libqt4-dev qt4-qmake.)
+.PHONY: qt
+qt: qt/ScintillaEditBase/Makefile
+	make -C $(dir $<)
+qt/ScintillaEditBase/Makefile:
+	cd qt/ScintillaEditBase && qmake
+
+deps: win32_deps cocoa_deps gtk_deps curses_deps
+win32_deps: src/*.cxx lexlib/*.cxx lexers/*.cxx win32/*.cxx
+	i686-w64-mingw32-g++ -MM $(CXXFLAGS) $^ | sed -e 's|^\([[:alnum:]-]\+\.o:\)|win32/\1|;' > checkdeps.mak
+cocoa_deps: src/*.cxx lexlib/*.cxx lexers/*.cxx #cocoa/*.cxx
+	i386-apple-darwin9-g++ -MM $(CXXFLAGS) $^ | sed -e 's|^\([[:alnum:]-]\+\.o:\)|cocoa/\1|;' >> checkdeps.mak
+gtk_deps: src/*.cxx lexlib/*.cxx lexers/*.cxx gtk/*.cxx
+	g++ -MM $(CXXFLAGS) $^ | sed -e 's|^\([[:alnum:]-]\+\.o:\)|gtk/\1|;' >> checkdeps.mak
+curses_deps: src/*.cxx lexlib/*.cxx lexers/*.cxx curses/*.cxx
+	g++ -MM $(CXXFLAGS) $^ | sed -e 's|^\([[:alnum:]-]\+\.o:\)|curses/\1|;' >> checkdeps.mak
+
+include checkdeps.mak
+
+clean:
+	rm -f bin/*.a bin/*.dll win32/*.o cocoa/*.o gtk/*.o curses/*.o
+	rm -rf /tmp/scintilla
+
+.PHONY: test
+test: | /tmp/scintilla
+	make -C $|/test/unit CXX=g++ clean test
+	cd $|/test && lua5.1 test_lexlua.lua
+
+releasedir = /tmp/scintilla$(shell grep -o '[0-9]\+' version.txt)
+$(releasedir): ; hg archive $@
+zip: $(releasedir)
+	cd /tmp && tar czf $<.tgz $(notdir $<)
+	cd /tmp && zip -r $<.zip $(notdir $<)
+	rm -r $<
+
+upload: LongTermDownload.html doc/ScintillaHistory.html doc/ScintillaDoc.html \
+        doc/StyleMetadata.html doc/LPegLexer.html
+	scp $^ [email protected]:/home/project-web/scintilla/htdocs/

+ 2364 - 0
maxguitextareascintilla.mod/scintilla/checkdeps.mak

@@ -0,0 +1,2364 @@
+win32/AutoComplete.o: src/AutoComplete.cxx include/Platform.h \
+ include/Scintilla.h include/Sci_Position.h lexlib/CharacterSet.h \
+ src/Position.h src/AutoComplete.h
+win32/CallTip.o: src/CallTip.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/IntegerRectangle.h lexlib/StringCopy.h \
+ src/Position.h src/CallTip.h
+win32/CaseConvert.o: src/CaseConvert.cxx lexlib/StringCopy.h src/CaseConvert.h \
+ src/UniConversion.h
+win32/CaseFolder.o: src/CaseFolder.cxx src/CaseFolder.h src/CaseConvert.h
+win32/Catalogue.o: src/Catalogue.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/LexerModule.h \
+ src/Catalogue.h
+win32/CellBuffer.o: src/CellBuffer.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/CellBuffer.h src/UniConversion.h
+win32/CharClassify.o: src/CharClassify.cxx src/CharClassify.h
+win32/ContractionState.o: src/ContractionState.cxx include/Platform.h \
+ src/Position.h src/UniqueString.h src/SplitVector.h src/Partitioning.h \
+ src/RunStyles.h src/SparseVector.h src/ContractionState.h
+win32/DBCS.o: src/DBCS.cxx src/DBCS.h
+win32/Decoration.o: src/Decoration.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/Decoration.h
+win32/Document.o: src/Document.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/CharacterSet.h lexlib/CharacterCategory.h src/Position.h \
+ src/SplitVector.h src/Partitioning.h src/RunStyles.h src/CellBuffer.h \
+ src/PerLine.h src/CharClassify.h src/Decoration.h src/CaseFolder.h \
+ src/Document.h src/RESearch.h src/UniConversion.h src/ElapsedPeriod.h
+win32/EditModel.o: src/EditModel.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h src/Position.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/KeyMap.h src/Indicator.h src/LineMarker.h \
+ src/Style.h src/ViewStyle.h src/CharClassify.h src/Decoration.h \
+ src/CaseFolder.h src/Document.h src/UniConversion.h src/Selection.h \
+ src/PositionCache.h src/EditModel.h
+win32/Editor.o: src/Editor.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h lexlib/CharacterSet.h src/Position.h \
+ src/UniqueString.h src/SplitVector.h src/Partitioning.h src/RunStyles.h \
+ src/ContractionState.h src/CellBuffer.h src/PerLine.h src/KeyMap.h \
+ src/Indicator.h src/LineMarker.h src/Style.h src/ViewStyle.h \
+ src/CharClassify.h src/Decoration.h src/CaseFolder.h src/Document.h \
+ src/UniConversion.h src/Selection.h src/PositionCache.h src/EditModel.h \
+ src/MarginView.h src/EditView.h src/Editor.h
+win32/EditView.o: src/EditView.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h lexlib/CharacterSet.h src/Position.h \
+ src/IntegerRectangle.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/PerLine.h src/KeyMap.h src/Indicator.h \
+ src/LineMarker.h src/Style.h src/ViewStyle.h src/CharClassify.h \
+ src/Decoration.h src/CaseFolder.h src/Document.h src/UniConversion.h \
+ src/Selection.h src/PositionCache.h src/EditModel.h src/MarginView.h \
+ src/EditView.h src/ElapsedPeriod.h
+win32/ExternalLexer.o: src/ExternalLexer.cxx include/Platform.h \
+ include/ILexer.h include/Sci_Position.h include/Scintilla.h \
+ include/SciLexer.h lexlib/LexerModule.h src/Catalogue.h \
+ src/ExternalLexer.h
+win32/Indicator.o: src/Indicator.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/IntegerRectangle.h src/Indicator.h src/XPM.h
+win32/KeyMap.o: src/KeyMap.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/KeyMap.h
+win32/LineMarker.o: src/LineMarker.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h lexlib/StringCopy.h src/IntegerRectangle.h \
+ src/XPM.h src/LineMarker.h
+win32/MarginView.o: src/MarginView.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h src/Position.h src/IntegerRectangle.h \
+ src/UniqueString.h src/SplitVector.h src/Partitioning.h src/RunStyles.h \
+ src/ContractionState.h src/CellBuffer.h src/KeyMap.h src/Indicator.h \
+ src/LineMarker.h src/Style.h src/ViewStyle.h src/CharClassify.h \
+ src/Decoration.h src/CaseFolder.h src/Document.h src/UniConversion.h \
+ src/Selection.h src/PositionCache.h src/EditModel.h src/MarginView.h \
+ src/EditView.h
+win32/PerLine.o: src/PerLine.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/CellBuffer.h src/PerLine.h
+win32/PositionCache.o: src/PositionCache.cxx include/Platform.h \
+ include/ILoader.h include/Sci_Position.h include/ILexer.h \
+ include/Scintilla.h src/Position.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/KeyMap.h src/Indicator.h src/LineMarker.h \
+ src/Style.h src/ViewStyle.h src/CharClassify.h src/Decoration.h \
+ src/CaseFolder.h src/Document.h src/UniConversion.h src/Selection.h \
+ src/PositionCache.h
+win32/RESearch.o: src/RESearch.cxx src/Position.h src/CharClassify.h \
+ src/RESearch.h
+win32/RunStyles.o: src/RunStyles.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h
+win32/ScintillaBase.o: src/ScintillaBase.cxx include/Platform.h \
+ include/ILoader.h include/Sci_Position.h include/ILexer.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/LexerModule.h src/Catalogue.h src/Position.h src/UniqueString.h \
+ src/SplitVector.h src/Partitioning.h src/RunStyles.h \
+ src/ContractionState.h src/CellBuffer.h src/CallTip.h src/KeyMap.h \
+ src/Indicator.h src/LineMarker.h src/Style.h src/ViewStyle.h \
+ src/CharClassify.h src/Decoration.h src/CaseFolder.h src/Document.h \
+ src/Selection.h src/PositionCache.h src/EditModel.h src/MarginView.h \
+ src/EditView.h src/Editor.h src/AutoComplete.h src/ScintillaBase.h
+win32/Selection.o: src/Selection.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/Selection.h
+win32/Style.o: src/Style.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Style.h
+win32/UniConversion.o: src/UniConversion.cxx src/UniConversion.h
+win32/ViewStyle.o: src/ViewStyle.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/UniqueString.h src/Indicator.h \
+ src/XPM.h src/LineMarker.h src/Style.h src/ViewStyle.h
+win32/XPM.o: src/XPM.cxx include/Platform.h src/XPM.h
+win32/Accessor.o: lexlib/Accessor.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h
+win32/CharacterCategory.o: lexlib/CharacterCategory.cxx \
+ lexlib/CharacterCategory.h
+win32/CharacterSet.o: lexlib/CharacterSet.cxx lexlib/CharacterSet.h
+win32/DefaultLexer.o: lexlib/DefaultLexer.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/DefaultLexer.h
+win32/LexerBase.o: lexlib/LexerBase.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/LexerModule.h lexlib/LexerBase.h
+win32/LexerModule.o: lexlib/LexerModule.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/LexerBase.h \
+ lexlib/LexerSimple.h
+win32/LexerNoExceptions.o: lexlib/LexerNoExceptions.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/LexerBase.h \
+ lexlib/LexerNoExceptions.h
+win32/LexerSimple.o: lexlib/LexerSimple.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/LexerBase.h \
+ lexlib/LexerSimple.h
+win32/PropSetSimple.o: lexlib/PropSetSimple.cxx lexlib/PropSetSimple.h
+win32/StyleContext.o: lexlib/StyleContext.cxx include/ILexer.h \
+ include/Sci_Position.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h
+win32/WordList.o: lexlib/WordList.cxx lexlib/StringCopy.h lexlib/WordList.h
+win32/LexA68k.o: lexers/LexA68k.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexAbaqus.o: lexers/LexAbaqus.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexAda.o: lexers/LexAda.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexAPDL.o: lexers/LexAPDL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexAsm.o: lexers/LexAsm.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+win32/LexAsn1.o: lexers/LexAsn1.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexASY.o: lexers/LexASY.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexAU3.o: lexers/LexAU3.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexAVE.o: lexers/LexAVE.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexAVS.o: lexers/LexAVS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexBaan.o: lexers/LexBaan.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+win32/LexBash.o: lexers/LexBash.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexBasic.o: lexers/LexBasic.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+win32/LexBatch.o: lexers/LexBatch.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexBibTeX.o: lexers/LexBibTeX.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexBullant.o: lexers/LexBullant.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexCaml.o: lexers/LexCaml.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexCLW.o: lexers/LexCLW.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexCmake.o: lexers/LexCmake.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexCOBOL.o: lexers/LexCOBOL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexCoffeeScript.o: lexers/LexCoffeeScript.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexConf.o: lexers/LexConf.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexCPP.o: lexers/LexCPP.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h lexlib/SparseState.h lexlib/SubStyles.h
+win32/LexCrontab.o: lexers/LexCrontab.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexCsound.o: lexers/LexCsound.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexCSS.o: lexers/LexCSS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexD.o: lexers/LexD.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+win32/LexDiff.o: lexers/LexDiff.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexDMAP.o: lexers/LexDMAP.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexDMIS.o: lexers/LexDMIS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/DefaultLexer.h
+win32/LexECL.o: lexers/LexECL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h
+win32/LexEDIFACT.o: lexers/LexEDIFACT.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/LexAccessor.h lexlib/LexerModule.h lexlib/DefaultLexer.h
+win32/LexEiffel.o: lexers/LexEiffel.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexErlang.o: lexers/LexErlang.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexErrorList.o: lexers/LexErrorList.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexEScript.o: lexers/LexEScript.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexFlagship.o: lexers/LexFlagship.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexForth.o: lexers/LexForth.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexFortran.o: lexers/LexFortran.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexGAP.o: lexers/LexGAP.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexGui4Cli.o: lexers/LexGui4Cli.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexHaskell.o: lexers/LexHaskell.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/CharacterCategory.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/DefaultLexer.h
+win32/LexHex.o: lexers/LexHex.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexHTML.o: lexers/LexHTML.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexIndent.o: lexers/LexIndent.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexInno.o: lexers/LexInno.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexJSON.o: lexers/LexJSON.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+win32/LexKix.o: lexers/LexKix.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexKVIrc.o: lexers/LexKVIrc.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexLaTeX.o: lexers/LexLaTeX.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/LexerBase.h
+win32/LexLisp.o: lexers/LexLisp.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexLout.o: lexers/LexLout.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexLPeg.o: lexers/LexLPeg.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/LexerModule.h
+win32/LexLua.o: lexers/LexLua.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexMagik.o: lexers/LexMagik.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexMake.o: lexers/LexMake.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexMarkdown.o: lexers/LexMarkdown.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexMatlab.o: lexers/LexMatlab.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexMaxima.o: lexers/LexMaxima.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexMetapost.o: lexers/LexMetapost.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexMMIXAL.o: lexers/LexMMIXAL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexModula.o: lexers/LexModula.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexMPT.o: lexers/LexMPT.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexMSSQL.o: lexers/LexMSSQL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexMySQL.o: lexers/LexMySQL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexNimrod.o: lexers/LexNimrod.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexNsis.o: lexers/LexNsis.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexNull.o: lexers/LexNull.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexOpal.o: lexers/LexOpal.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexOScript.o: lexers/LexOScript.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexPascal.o: lexers/LexPascal.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexPB.o: lexers/LexPB.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexPerl.o: lexers/LexPerl.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+win32/LexPLM.o: lexers/LexPLM.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexPO.o: lexers/LexPO.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexPOV.o: lexers/LexPOV.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexPowerPro.o: lexers/LexPowerPro.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexPowerShell.o: lexers/LexPowerShell.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexProgress.o: lexers/LexProgress.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/SparseState.h lexlib/DefaultLexer.h
+win32/LexProps.o: lexers/LexProps.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexPS.o: lexers/LexPS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexPython.o: lexers/LexPython.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/CharacterCategory.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/SubStyles.h \
+ lexlib/DefaultLexer.h
+win32/LexR.o: lexers/LexR.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexRebol.o: lexers/LexRebol.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexRegistry.o: lexers/LexRegistry.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/DefaultLexer.h
+win32/LexRuby.o: lexers/LexRuby.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexRust.o: lexers/LexRust.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h lexlib/DefaultLexer.h
+win32/LexScriptol.o: lexers/LexScriptol.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexSmalltalk.o: lexers/LexSmalltalk.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexSML.o: lexers/LexSML.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexSorcus.o: lexers/LexSorcus.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexSpecman.o: lexers/LexSpecman.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexSpice.o: lexers/LexSpice.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexSQL.o: lexers/LexSQL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/SparseState.h lexlib/DefaultLexer.h
+win32/LexSTTXT.o: lexers/LexSTTXT.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexTACL.o: lexers/LexTACL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexTADS3.o: lexers/LexTADS3.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexTAL.o: lexers/LexTAL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexTCL.o: lexers/LexTCL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexTCMD.o: lexers/LexTCMD.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexTeX.o: lexers/LexTeX.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexTxt2tags.o: lexers/LexTxt2tags.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexVB.o: lexers/LexVB.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexVerilog.o: lexers/LexVerilog.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h lexlib/SubStyles.h lexlib/DefaultLexer.h
+win32/LexVHDL.o: lexers/LexVHDL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/LexVisualProlog.o: lexers/LexVisualProlog.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/CharacterCategory.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+win32/LexYAML.o: lexers/LexYAML.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+win32/HanjaDic.o: win32/HanjaDic.cxx src/UniConversion.h win32/HanjaDic.h
+win32/PlatWin.o: win32/PlatWin.cxx include/Platform.h lexlib/StringCopy.h \
+ src/Position.h src/XPM.h src/UniConversion.h src/DBCS.h \
+ src/FontQuality.h win32/PlatWin.h
+win32/ScintillaDLL.o: win32/ScintillaDLL.cxx include/Scintilla.h \
+ include/Sci_Position.h win32/ScintillaWin.h
+win32/ScintillaWin.o: win32/ScintillaWin.cxx include/Platform.h \
+ include/ILoader.h include/Sci_Position.h include/ILexer.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/LexerModule.h src/Position.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/CallTip.h src/KeyMap.h src/Indicator.h \
+ src/LineMarker.h src/Style.h src/ViewStyle.h src/CharClassify.h \
+ src/Decoration.h src/CaseFolder.h src/Document.h src/CaseConvert.h \
+ src/UniConversion.h src/Selection.h src/PositionCache.h src/EditModel.h \
+ src/MarginView.h src/EditView.h src/Editor.h src/ElapsedPeriod.h \
+ src/AutoComplete.h src/ScintillaBase.h src/ExternalLexer.h \
+ win32/PlatWin.h win32/HanjaDic.h win32/ScintillaWin.h
+cocoa/AutoComplete.o: src/AutoComplete.cxx include/Platform.h \
+ include/Scintilla.h include/Sci_Position.h lexlib/CharacterSet.h \
+ src/Position.h src/AutoComplete.h
+cocoa/CallTip.o: src/CallTip.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/IntegerRectangle.h lexlib/StringCopy.h \
+ src/Position.h src/CallTip.h
+cocoa/CaseConvert.o: src/CaseConvert.cxx lexlib/StringCopy.h src/CaseConvert.h \
+ src/UniConversion.h
+cocoa/CaseFolder.o: src/CaseFolder.cxx src/CaseFolder.h src/CaseConvert.h
+cocoa/Catalogue.o: src/Catalogue.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/LexerModule.h \
+ src/Catalogue.h
+cocoa/CellBuffer.o: src/CellBuffer.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/CellBuffer.h src/UniConversion.h
+cocoa/CharClassify.o: src/CharClassify.cxx src/CharClassify.h
+cocoa/ContractionState.o: src/ContractionState.cxx include/Platform.h \
+ src/Position.h src/UniqueString.h src/SplitVector.h src/Partitioning.h \
+ src/RunStyles.h src/SparseVector.h src/ContractionState.h
+cocoa/DBCS.o: src/DBCS.cxx src/DBCS.h
+cocoa/Decoration.o: src/Decoration.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/Decoration.h
+cocoa/Document.o: src/Document.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/CharacterSet.h lexlib/CharacterCategory.h src/Position.h \
+ src/SplitVector.h src/Partitioning.h src/RunStyles.h src/CellBuffer.h \
+ src/PerLine.h src/CharClassify.h src/Decoration.h src/CaseFolder.h \
+ src/Document.h src/RESearch.h src/UniConversion.h src/ElapsedPeriod.h
+cocoa/EditModel.o: src/EditModel.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h src/Position.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/KeyMap.h src/Indicator.h src/LineMarker.h \
+ src/Style.h src/ViewStyle.h src/CharClassify.h src/Decoration.h \
+ src/CaseFolder.h src/Document.h src/UniConversion.h src/Selection.h \
+ src/PositionCache.h src/EditModel.h
+cocoa/Editor.o: src/Editor.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h lexlib/CharacterSet.h src/Position.h \
+ src/UniqueString.h src/SplitVector.h src/Partitioning.h src/RunStyles.h \
+ src/ContractionState.h src/CellBuffer.h src/PerLine.h src/KeyMap.h \
+ src/Indicator.h src/LineMarker.h src/Style.h src/ViewStyle.h \
+ src/CharClassify.h src/Decoration.h src/CaseFolder.h src/Document.h \
+ src/UniConversion.h src/Selection.h src/PositionCache.h src/EditModel.h \
+ src/MarginView.h src/EditView.h src/Editor.h
+cocoa/EditView.o: src/EditView.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h lexlib/CharacterSet.h src/Position.h \
+ src/IntegerRectangle.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/PerLine.h src/KeyMap.h src/Indicator.h \
+ src/LineMarker.h src/Style.h src/ViewStyle.h src/CharClassify.h \
+ src/Decoration.h src/CaseFolder.h src/Document.h src/UniConversion.h \
+ src/Selection.h src/PositionCache.h src/EditModel.h src/MarginView.h \
+ src/EditView.h src/ElapsedPeriod.h
+cocoa/ExternalLexer.o: src/ExternalLexer.cxx include/Platform.h \
+ include/ILexer.h include/Sci_Position.h include/Scintilla.h \
+ include/SciLexer.h lexlib/LexerModule.h src/Catalogue.h \
+ src/ExternalLexer.h
+cocoa/Indicator.o: src/Indicator.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/IntegerRectangle.h src/Indicator.h src/XPM.h
+cocoa/KeyMap.o: src/KeyMap.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/KeyMap.h
+cocoa/LineMarker.o: src/LineMarker.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h lexlib/StringCopy.h src/IntegerRectangle.h \
+ src/XPM.h src/LineMarker.h
+cocoa/MarginView.o: src/MarginView.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h src/Position.h src/IntegerRectangle.h \
+ src/UniqueString.h src/SplitVector.h src/Partitioning.h src/RunStyles.h \
+ src/ContractionState.h src/CellBuffer.h src/KeyMap.h src/Indicator.h \
+ src/LineMarker.h src/Style.h src/ViewStyle.h src/CharClassify.h \
+ src/Decoration.h src/CaseFolder.h src/Document.h src/UniConversion.h \
+ src/Selection.h src/PositionCache.h src/EditModel.h src/MarginView.h \
+ src/EditView.h
+cocoa/PerLine.o: src/PerLine.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/CellBuffer.h src/PerLine.h
+cocoa/PositionCache.o: src/PositionCache.cxx include/Platform.h \
+ include/ILoader.h include/Sci_Position.h include/ILexer.h \
+ include/Scintilla.h src/Position.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/KeyMap.h src/Indicator.h src/LineMarker.h \
+ src/Style.h src/ViewStyle.h src/CharClassify.h src/Decoration.h \
+ src/CaseFolder.h src/Document.h src/UniConversion.h src/Selection.h \
+ src/PositionCache.h
+cocoa/RESearch.o: src/RESearch.cxx src/Position.h src/CharClassify.h \
+ src/RESearch.h
+cocoa/RunStyles.o: src/RunStyles.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h
+cocoa/ScintillaBase.o: src/ScintillaBase.cxx include/Platform.h \
+ include/ILoader.h include/Sci_Position.h include/ILexer.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/LexerModule.h src/Catalogue.h src/Position.h src/UniqueString.h \
+ src/SplitVector.h src/Partitioning.h src/RunStyles.h \
+ src/ContractionState.h src/CellBuffer.h src/CallTip.h src/KeyMap.h \
+ src/Indicator.h src/LineMarker.h src/Style.h src/ViewStyle.h \
+ src/CharClassify.h src/Decoration.h src/CaseFolder.h src/Document.h \
+ src/Selection.h src/PositionCache.h src/EditModel.h src/MarginView.h \
+ src/EditView.h src/Editor.h src/AutoComplete.h src/ScintillaBase.h
+cocoa/Selection.o: src/Selection.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/Selection.h
+cocoa/Style.o: src/Style.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Style.h
+cocoa/UniConversion.o: src/UniConversion.cxx src/UniConversion.h
+cocoa/ViewStyle.o: src/ViewStyle.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/UniqueString.h src/Indicator.h \
+ src/XPM.h src/LineMarker.h src/Style.h src/ViewStyle.h
+cocoa/XPM.o: src/XPM.cxx include/Platform.h src/XPM.h
+cocoa/Accessor.o: lexlib/Accessor.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h
+cocoa/CharacterCategory.o: lexlib/CharacterCategory.cxx \
+ lexlib/CharacterCategory.h
+cocoa/CharacterSet.o: lexlib/CharacterSet.cxx lexlib/CharacterSet.h
+cocoa/DefaultLexer.o: lexlib/DefaultLexer.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/DefaultLexer.h
+cocoa/LexerBase.o: lexlib/LexerBase.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/LexerModule.h lexlib/LexerBase.h
+cocoa/LexerModule.o: lexlib/LexerModule.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/LexerBase.h \
+ lexlib/LexerSimple.h
+cocoa/LexerNoExceptions.o: lexlib/LexerNoExceptions.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/LexerBase.h \
+ lexlib/LexerNoExceptions.h
+cocoa/LexerSimple.o: lexlib/LexerSimple.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/LexerBase.h \
+ lexlib/LexerSimple.h
+cocoa/PropSetSimple.o: lexlib/PropSetSimple.cxx lexlib/PropSetSimple.h
+cocoa/StyleContext.o: lexlib/StyleContext.cxx include/ILexer.h \
+ include/Sci_Position.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h
+cocoa/WordList.o: lexlib/WordList.cxx lexlib/StringCopy.h lexlib/WordList.h
+cocoa/LexA68k.o: lexers/LexA68k.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexAbaqus.o: lexers/LexAbaqus.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexAda.o: lexers/LexAda.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexAPDL.o: lexers/LexAPDL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexAsm.o: lexers/LexAsm.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+cocoa/LexAsn1.o: lexers/LexAsn1.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexASY.o: lexers/LexASY.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexAU3.o: lexers/LexAU3.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexAVE.o: lexers/LexAVE.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexAVS.o: lexers/LexAVS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexBaan.o: lexers/LexBaan.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+cocoa/LexBash.o: lexers/LexBash.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexBasic.o: lexers/LexBasic.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+cocoa/LexBatch.o: lexers/LexBatch.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexBibTeX.o: lexers/LexBibTeX.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexBullant.o: lexers/LexBullant.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexCaml.o: lexers/LexCaml.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexCLW.o: lexers/LexCLW.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexCmake.o: lexers/LexCmake.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexCOBOL.o: lexers/LexCOBOL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexCoffeeScript.o: lexers/LexCoffeeScript.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexConf.o: lexers/LexConf.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexCPP.o: lexers/LexCPP.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h lexlib/SparseState.h lexlib/SubStyles.h
+cocoa/LexCrontab.o: lexers/LexCrontab.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexCsound.o: lexers/LexCsound.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexCSS.o: lexers/LexCSS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexD.o: lexers/LexD.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+cocoa/LexDiff.o: lexers/LexDiff.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexDMAP.o: lexers/LexDMAP.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexDMIS.o: lexers/LexDMIS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/DefaultLexer.h
+cocoa/LexECL.o: lexers/LexECL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h
+cocoa/LexEDIFACT.o: lexers/LexEDIFACT.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/LexAccessor.h lexlib/LexerModule.h lexlib/DefaultLexer.h
+cocoa/LexEiffel.o: lexers/LexEiffel.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexErlang.o: lexers/LexErlang.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexErrorList.o: lexers/LexErrorList.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexEScript.o: lexers/LexEScript.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexFlagship.o: lexers/LexFlagship.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexForth.o: lexers/LexForth.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexFortran.o: lexers/LexFortran.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexGAP.o: lexers/LexGAP.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexGui4Cli.o: lexers/LexGui4Cli.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexHaskell.o: lexers/LexHaskell.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/CharacterCategory.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/DefaultLexer.h
+cocoa/LexHex.o: lexers/LexHex.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexHTML.o: lexers/LexHTML.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexIndent.o: lexers/LexIndent.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexInno.o: lexers/LexInno.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexJSON.o: lexers/LexJSON.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+cocoa/LexKix.o: lexers/LexKix.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexKVIrc.o: lexers/LexKVIrc.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexLaTeX.o: lexers/LexLaTeX.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/LexerBase.h
+cocoa/LexLisp.o: lexers/LexLisp.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexLout.o: lexers/LexLout.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexLPeg.o: lexers/LexLPeg.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/LexerModule.h
+cocoa/LexLua.o: lexers/LexLua.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexMagik.o: lexers/LexMagik.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexMake.o: lexers/LexMake.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexMarkdown.o: lexers/LexMarkdown.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexMatlab.o: lexers/LexMatlab.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexMaxima.o: lexers/LexMaxima.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexMetapost.o: lexers/LexMetapost.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexMMIXAL.o: lexers/LexMMIXAL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexModula.o: lexers/LexModula.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexMPT.o: lexers/LexMPT.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexMSSQL.o: lexers/LexMSSQL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexMySQL.o: lexers/LexMySQL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexNimrod.o: lexers/LexNimrod.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexNsis.o: lexers/LexNsis.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexNull.o: lexers/LexNull.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexOpal.o: lexers/LexOpal.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexOScript.o: lexers/LexOScript.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexPascal.o: lexers/LexPascal.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexPB.o: lexers/LexPB.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexPerl.o: lexers/LexPerl.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+cocoa/LexPLM.o: lexers/LexPLM.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexPO.o: lexers/LexPO.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexPOV.o: lexers/LexPOV.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexPowerPro.o: lexers/LexPowerPro.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexPowerShell.o: lexers/LexPowerShell.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexProgress.o: lexers/LexProgress.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/SparseState.h lexlib/DefaultLexer.h
+cocoa/LexProps.o: lexers/LexProps.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexPS.o: lexers/LexPS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexPython.o: lexers/LexPython.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/CharacterCategory.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/SubStyles.h \
+ lexlib/DefaultLexer.h
+cocoa/LexR.o: lexers/LexR.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexRebol.o: lexers/LexRebol.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexRegistry.o: lexers/LexRegistry.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/DefaultLexer.h
+cocoa/LexRuby.o: lexers/LexRuby.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexRust.o: lexers/LexRust.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h lexlib/DefaultLexer.h
+cocoa/LexScriptol.o: lexers/LexScriptol.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexSmalltalk.o: lexers/LexSmalltalk.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexSML.o: lexers/LexSML.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexSorcus.o: lexers/LexSorcus.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexSpecman.o: lexers/LexSpecman.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexSpice.o: lexers/LexSpice.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexSQL.o: lexers/LexSQL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/SparseState.h lexlib/DefaultLexer.h
+cocoa/LexSTTXT.o: lexers/LexSTTXT.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexTACL.o: lexers/LexTACL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexTADS3.o: lexers/LexTADS3.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexTAL.o: lexers/LexTAL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexTCL.o: lexers/LexTCL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexTCMD.o: lexers/LexTCMD.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexTeX.o: lexers/LexTeX.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexTxt2tags.o: lexers/LexTxt2tags.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexVB.o: lexers/LexVB.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexVerilog.o: lexers/LexVerilog.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h lexlib/SubStyles.h lexlib/DefaultLexer.h
+cocoa/LexVHDL.o: lexers/LexVHDL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+cocoa/LexVisualProlog.o: lexers/LexVisualProlog.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/CharacterCategory.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+cocoa/LexYAML.o: lexers/LexYAML.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/AutoComplete.o: src/AutoComplete.cxx include/Platform.h \
+ include/Scintilla.h include/Sci_Position.h lexlib/CharacterSet.h \
+ src/Position.h src/AutoComplete.h
+gtk/CallTip.o: src/CallTip.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/IntegerRectangle.h lexlib/StringCopy.h \
+ src/Position.h src/CallTip.h
+gtk/CaseConvert.o: src/CaseConvert.cxx lexlib/StringCopy.h src/CaseConvert.h \
+ src/UniConversion.h
+gtk/CaseFolder.o: src/CaseFolder.cxx src/CaseFolder.h src/CaseConvert.h
+gtk/Catalogue.o: src/Catalogue.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/LexerModule.h \
+ src/Catalogue.h
+gtk/CellBuffer.o: src/CellBuffer.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/CellBuffer.h src/UniConversion.h
+gtk/CharClassify.o: src/CharClassify.cxx src/CharClassify.h
+gtk/ContractionState.o: src/ContractionState.cxx include/Platform.h \
+ src/Position.h src/UniqueString.h src/SplitVector.h src/Partitioning.h \
+ src/RunStyles.h src/SparseVector.h src/ContractionState.h
+gtk/DBCS.o: src/DBCS.cxx src/DBCS.h
+gtk/Decoration.o: src/Decoration.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/Decoration.h
+gtk/Document.o: src/Document.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/CharacterSet.h lexlib/CharacterCategory.h src/Position.h \
+ src/SplitVector.h src/Partitioning.h src/RunStyles.h src/CellBuffer.h \
+ src/PerLine.h src/CharClassify.h src/Decoration.h src/CaseFolder.h \
+ src/Document.h src/RESearch.h src/UniConversion.h src/ElapsedPeriod.h
+gtk/EditModel.o: src/EditModel.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h src/Position.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/KeyMap.h src/Indicator.h src/LineMarker.h \
+ src/Style.h src/ViewStyle.h src/CharClassify.h src/Decoration.h \
+ src/CaseFolder.h src/Document.h src/UniConversion.h src/Selection.h \
+ src/PositionCache.h src/EditModel.h
+gtk/Editor.o: src/Editor.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h lexlib/CharacterSet.h src/Position.h \
+ src/UniqueString.h src/SplitVector.h src/Partitioning.h src/RunStyles.h \
+ src/ContractionState.h src/CellBuffer.h src/PerLine.h src/KeyMap.h \
+ src/Indicator.h src/LineMarker.h src/Style.h src/ViewStyle.h \
+ src/CharClassify.h src/Decoration.h src/CaseFolder.h src/Document.h \
+ src/UniConversion.h src/Selection.h src/PositionCache.h src/EditModel.h \
+ src/MarginView.h src/EditView.h src/Editor.h
+gtk/EditView.o: src/EditView.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h lexlib/CharacterSet.h src/Position.h \
+ src/IntegerRectangle.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/PerLine.h src/KeyMap.h src/Indicator.h \
+ src/LineMarker.h src/Style.h src/ViewStyle.h src/CharClassify.h \
+ src/Decoration.h src/CaseFolder.h src/Document.h src/UniConversion.h \
+ src/Selection.h src/PositionCache.h src/EditModel.h src/MarginView.h \
+ src/EditView.h src/ElapsedPeriod.h
+gtk/ExternalLexer.o: src/ExternalLexer.cxx include/Platform.h \
+ include/ILexer.h include/Sci_Position.h include/Scintilla.h \
+ include/SciLexer.h lexlib/LexerModule.h src/Catalogue.h \
+ src/ExternalLexer.h
+gtk/Indicator.o: src/Indicator.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/IntegerRectangle.h src/Indicator.h src/XPM.h
+gtk/KeyMap.o: src/KeyMap.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/KeyMap.h
+gtk/LineMarker.o: src/LineMarker.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h lexlib/StringCopy.h src/IntegerRectangle.h \
+ src/XPM.h src/LineMarker.h
+gtk/MarginView.o: src/MarginView.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h src/Position.h src/IntegerRectangle.h \
+ src/UniqueString.h src/SplitVector.h src/Partitioning.h src/RunStyles.h \
+ src/ContractionState.h src/CellBuffer.h src/KeyMap.h src/Indicator.h \
+ src/LineMarker.h src/Style.h src/ViewStyle.h src/CharClassify.h \
+ src/Decoration.h src/CaseFolder.h src/Document.h src/UniConversion.h \
+ src/Selection.h src/PositionCache.h src/EditModel.h src/MarginView.h \
+ src/EditView.h
+gtk/PerLine.o: src/PerLine.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/CellBuffer.h src/PerLine.h
+gtk/PositionCache.o: src/PositionCache.cxx include/Platform.h \
+ include/ILoader.h include/Sci_Position.h include/ILexer.h \
+ include/Scintilla.h src/Position.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/KeyMap.h src/Indicator.h src/LineMarker.h \
+ src/Style.h src/ViewStyle.h src/CharClassify.h src/Decoration.h \
+ src/CaseFolder.h src/Document.h src/UniConversion.h src/Selection.h \
+ src/PositionCache.h
+gtk/RESearch.o: src/RESearch.cxx src/Position.h src/CharClassify.h \
+ src/RESearch.h
+gtk/RunStyles.o: src/RunStyles.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h
+gtk/ScintillaBase.o: src/ScintillaBase.cxx include/Platform.h \
+ include/ILoader.h include/Sci_Position.h include/ILexer.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/LexerModule.h src/Catalogue.h src/Position.h src/UniqueString.h \
+ src/SplitVector.h src/Partitioning.h src/RunStyles.h \
+ src/ContractionState.h src/CellBuffer.h src/CallTip.h src/KeyMap.h \
+ src/Indicator.h src/LineMarker.h src/Style.h src/ViewStyle.h \
+ src/CharClassify.h src/Decoration.h src/CaseFolder.h src/Document.h \
+ src/Selection.h src/PositionCache.h src/EditModel.h src/MarginView.h \
+ src/EditView.h src/Editor.h src/AutoComplete.h src/ScintillaBase.h
+gtk/Selection.o: src/Selection.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/Selection.h
+gtk/Style.o: src/Style.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Style.h
+gtk/UniConversion.o: src/UniConversion.cxx src/UniConversion.h
+gtk/ViewStyle.o: src/ViewStyle.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/UniqueString.h src/Indicator.h \
+ src/XPM.h src/LineMarker.h src/Style.h src/ViewStyle.h
+gtk/XPM.o: src/XPM.cxx include/Platform.h src/XPM.h
+gtk/Accessor.o: lexlib/Accessor.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h
+gtk/CharacterCategory.o: lexlib/CharacterCategory.cxx \
+ lexlib/CharacterCategory.h
+gtk/CharacterSet.o: lexlib/CharacterSet.cxx lexlib/CharacterSet.h
+gtk/DefaultLexer.o: lexlib/DefaultLexer.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/DefaultLexer.h
+gtk/LexerBase.o: lexlib/LexerBase.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/LexerModule.h lexlib/LexerBase.h
+gtk/LexerModule.o: lexlib/LexerModule.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/LexerBase.h \
+ lexlib/LexerSimple.h
+gtk/LexerNoExceptions.o: lexlib/LexerNoExceptions.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/LexerBase.h \
+ lexlib/LexerNoExceptions.h
+gtk/LexerSimple.o: lexlib/LexerSimple.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/LexerBase.h \
+ lexlib/LexerSimple.h
+gtk/PropSetSimple.o: lexlib/PropSetSimple.cxx lexlib/PropSetSimple.h
+gtk/StyleContext.o: lexlib/StyleContext.cxx include/ILexer.h \
+ include/Sci_Position.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h
+gtk/WordList.o: lexlib/WordList.cxx lexlib/StringCopy.h lexlib/WordList.h
+gtk/LexA68k.o: lexers/LexA68k.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexAbaqus.o: lexers/LexAbaqus.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexAda.o: lexers/LexAda.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexAPDL.o: lexers/LexAPDL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexAsm.o: lexers/LexAsm.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+gtk/LexAsn1.o: lexers/LexAsn1.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexASY.o: lexers/LexASY.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexAU3.o: lexers/LexAU3.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexAVE.o: lexers/LexAVE.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexAVS.o: lexers/LexAVS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexBaan.o: lexers/LexBaan.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+gtk/LexBash.o: lexers/LexBash.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexBasic.o: lexers/LexBasic.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+gtk/LexBatch.o: lexers/LexBatch.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexBibTeX.o: lexers/LexBibTeX.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexBullant.o: lexers/LexBullant.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexCaml.o: lexers/LexCaml.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexCLW.o: lexers/LexCLW.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexCmake.o: lexers/LexCmake.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexCOBOL.o: lexers/LexCOBOL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexCoffeeScript.o: lexers/LexCoffeeScript.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexConf.o: lexers/LexConf.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexCPP.o: lexers/LexCPP.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h lexlib/SparseState.h lexlib/SubStyles.h
+gtk/LexCrontab.o: lexers/LexCrontab.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexCsound.o: lexers/LexCsound.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexCSS.o: lexers/LexCSS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexD.o: lexers/LexD.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+gtk/LexDiff.o: lexers/LexDiff.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexDMAP.o: lexers/LexDMAP.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexDMIS.o: lexers/LexDMIS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/DefaultLexer.h
+gtk/LexECL.o: lexers/LexECL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h
+gtk/LexEDIFACT.o: lexers/LexEDIFACT.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/LexAccessor.h lexlib/LexerModule.h lexlib/DefaultLexer.h
+gtk/LexEiffel.o: lexers/LexEiffel.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexErlang.o: lexers/LexErlang.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexErrorList.o: lexers/LexErrorList.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexEScript.o: lexers/LexEScript.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexFlagship.o: lexers/LexFlagship.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexForth.o: lexers/LexForth.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexFortran.o: lexers/LexFortran.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexGAP.o: lexers/LexGAP.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexGui4Cli.o: lexers/LexGui4Cli.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexHaskell.o: lexers/LexHaskell.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/CharacterCategory.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/DefaultLexer.h
+gtk/LexHex.o: lexers/LexHex.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexHTML.o: lexers/LexHTML.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexIndent.o: lexers/LexIndent.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexInno.o: lexers/LexInno.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexJSON.o: lexers/LexJSON.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+gtk/LexKix.o: lexers/LexKix.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexKVIrc.o: lexers/LexKVIrc.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexLaTeX.o: lexers/LexLaTeX.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/LexerBase.h
+gtk/LexLisp.o: lexers/LexLisp.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexLout.o: lexers/LexLout.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexLPeg.o: lexers/LexLPeg.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/LexerModule.h
+gtk/LexLua.o: lexers/LexLua.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexMagik.o: lexers/LexMagik.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexMake.o: lexers/LexMake.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexMarkdown.o: lexers/LexMarkdown.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexMatlab.o: lexers/LexMatlab.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexMaxima.o: lexers/LexMaxima.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexMetapost.o: lexers/LexMetapost.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexMMIXAL.o: lexers/LexMMIXAL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexModula.o: lexers/LexModula.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexMPT.o: lexers/LexMPT.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexMSSQL.o: lexers/LexMSSQL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexMySQL.o: lexers/LexMySQL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexNimrod.o: lexers/LexNimrod.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexNsis.o: lexers/LexNsis.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexNull.o: lexers/LexNull.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexOpal.o: lexers/LexOpal.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexOScript.o: lexers/LexOScript.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexPascal.o: lexers/LexPascal.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexPB.o: lexers/LexPB.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexPerl.o: lexers/LexPerl.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+gtk/LexPLM.o: lexers/LexPLM.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexPO.o: lexers/LexPO.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexPOV.o: lexers/LexPOV.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexPowerPro.o: lexers/LexPowerPro.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexPowerShell.o: lexers/LexPowerShell.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexProgress.o: lexers/LexProgress.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/SparseState.h lexlib/DefaultLexer.h
+gtk/LexProps.o: lexers/LexProps.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexPS.o: lexers/LexPS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexPython.o: lexers/LexPython.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/CharacterCategory.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/SubStyles.h \
+ lexlib/DefaultLexer.h
+gtk/LexR.o: lexers/LexR.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexRebol.o: lexers/LexRebol.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexRegistry.o: lexers/LexRegistry.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/DefaultLexer.h
+gtk/LexRuby.o: lexers/LexRuby.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexRust.o: lexers/LexRust.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h lexlib/DefaultLexer.h
+gtk/LexScriptol.o: lexers/LexScriptol.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexSmalltalk.o: lexers/LexSmalltalk.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexSML.o: lexers/LexSML.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexSorcus.o: lexers/LexSorcus.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexSpecman.o: lexers/LexSpecman.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexSpice.o: lexers/LexSpice.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexSQL.o: lexers/LexSQL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/SparseState.h lexlib/DefaultLexer.h
+gtk/LexSTTXT.o: lexers/LexSTTXT.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexTACL.o: lexers/LexTACL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexTADS3.o: lexers/LexTADS3.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexTAL.o: lexers/LexTAL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexTCL.o: lexers/LexTCL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexTCMD.o: lexers/LexTCMD.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexTeX.o: lexers/LexTeX.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexTxt2tags.o: lexers/LexTxt2tags.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexVB.o: lexers/LexVB.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexVerilog.o: lexers/LexVerilog.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h lexlib/SubStyles.h lexlib/DefaultLexer.h
+gtk/LexVHDL.o: lexers/LexVHDL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+gtk/LexVisualProlog.o: lexers/LexVisualProlog.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/CharacterCategory.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+gtk/LexYAML.o: lexers/LexYAML.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/AutoComplete.o: src/AutoComplete.cxx include/Platform.h \
+ include/Scintilla.h include/Sci_Position.h lexlib/CharacterSet.h \
+ src/Position.h src/AutoComplete.h
+curses/CallTip.o: src/CallTip.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/IntegerRectangle.h lexlib/StringCopy.h \
+ src/Position.h src/CallTip.h
+curses/CaseConvert.o: src/CaseConvert.cxx lexlib/StringCopy.h src/CaseConvert.h \
+ src/UniConversion.h
+curses/CaseFolder.o: src/CaseFolder.cxx src/CaseFolder.h src/CaseConvert.h
+curses/Catalogue.o: src/Catalogue.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/LexerModule.h \
+ src/Catalogue.h
+curses/CellBuffer.o: src/CellBuffer.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/CellBuffer.h src/UniConversion.h
+curses/CharClassify.o: src/CharClassify.cxx src/CharClassify.h
+curses/ContractionState.o: src/ContractionState.cxx include/Platform.h \
+ src/Position.h src/UniqueString.h src/SplitVector.h src/Partitioning.h \
+ src/RunStyles.h src/SparseVector.h src/ContractionState.h
+curses/DBCS.o: src/DBCS.cxx src/DBCS.h
+curses/Decoration.o: src/Decoration.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/Decoration.h
+curses/Document.o: src/Document.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/CharacterSet.h lexlib/CharacterCategory.h src/Position.h \
+ src/SplitVector.h src/Partitioning.h src/RunStyles.h src/CellBuffer.h \
+ src/PerLine.h src/CharClassify.h src/Decoration.h src/CaseFolder.h \
+ src/Document.h src/RESearch.h src/UniConversion.h src/ElapsedPeriod.h
+curses/EditModel.o: src/EditModel.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h src/Position.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/KeyMap.h src/Indicator.h src/LineMarker.h \
+ src/Style.h src/ViewStyle.h src/CharClassify.h src/Decoration.h \
+ src/CaseFolder.h src/Document.h src/UniConversion.h src/Selection.h \
+ src/PositionCache.h src/EditModel.h
+curses/Editor.o: src/Editor.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h lexlib/CharacterSet.h src/Position.h \
+ src/UniqueString.h src/SplitVector.h src/Partitioning.h src/RunStyles.h \
+ src/ContractionState.h src/CellBuffer.h src/PerLine.h src/KeyMap.h \
+ src/Indicator.h src/LineMarker.h src/Style.h src/ViewStyle.h \
+ src/CharClassify.h src/Decoration.h src/CaseFolder.h src/Document.h \
+ src/UniConversion.h src/Selection.h src/PositionCache.h src/EditModel.h \
+ src/MarginView.h src/EditView.h src/Editor.h
+curses/EditView.o: src/EditView.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h lexlib/CharacterSet.h src/Position.h \
+ src/IntegerRectangle.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/PerLine.h src/KeyMap.h src/Indicator.h \
+ src/LineMarker.h src/Style.h src/ViewStyle.h src/CharClassify.h \
+ src/Decoration.h src/CaseFolder.h src/Document.h src/UniConversion.h \
+ src/Selection.h src/PositionCache.h src/EditModel.h src/MarginView.h \
+ src/EditView.h src/ElapsedPeriod.h
+curses/ExternalLexer.o: src/ExternalLexer.cxx include/Platform.h \
+ include/ILexer.h include/Sci_Position.h include/Scintilla.h \
+ include/SciLexer.h lexlib/LexerModule.h src/Catalogue.h \
+ src/ExternalLexer.h
+curses/Indicator.o: src/Indicator.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/IntegerRectangle.h src/Indicator.h src/XPM.h
+curses/KeyMap.o: src/KeyMap.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/KeyMap.h
+curses/LineMarker.o: src/LineMarker.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h lexlib/StringCopy.h src/IntegerRectangle.h \
+ src/XPM.h src/LineMarker.h
+curses/MarginView.o: src/MarginView.cxx include/Platform.h include/ILoader.h \
+ include/Sci_Position.h include/ILexer.h include/Scintilla.h \
+ lexlib/StringCopy.h src/Position.h src/IntegerRectangle.h \
+ src/UniqueString.h src/SplitVector.h src/Partitioning.h src/RunStyles.h \
+ src/ContractionState.h src/CellBuffer.h src/KeyMap.h src/Indicator.h \
+ src/LineMarker.h src/Style.h src/ViewStyle.h src/CharClassify.h \
+ src/Decoration.h src/CaseFolder.h src/Document.h src/UniConversion.h \
+ src/Selection.h src/PositionCache.h src/EditModel.h src/MarginView.h \
+ src/EditView.h
+curses/PerLine.o: src/PerLine.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/CellBuffer.h src/PerLine.h
+curses/PositionCache.o: src/PositionCache.cxx include/Platform.h \
+ include/ILoader.h include/Sci_Position.h include/ILexer.h \
+ include/Scintilla.h src/Position.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/KeyMap.h src/Indicator.h src/LineMarker.h \
+ src/Style.h src/ViewStyle.h src/CharClassify.h src/Decoration.h \
+ src/CaseFolder.h src/Document.h src/UniConversion.h src/Selection.h \
+ src/PositionCache.h
+curses/RESearch.o: src/RESearch.cxx src/Position.h src/CharClassify.h \
+ src/RESearch.h
+curses/RunStyles.o: src/RunStyles.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h
+curses/ScintillaBase.o: src/ScintillaBase.cxx include/Platform.h \
+ include/ILoader.h include/Sci_Position.h include/ILexer.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/LexerModule.h src/Catalogue.h src/Position.h src/UniqueString.h \
+ src/SplitVector.h src/Partitioning.h src/RunStyles.h \
+ src/ContractionState.h src/CellBuffer.h src/CallTip.h src/KeyMap.h \
+ src/Indicator.h src/LineMarker.h src/Style.h src/ViewStyle.h \
+ src/CharClassify.h src/Decoration.h src/CaseFolder.h src/Document.h \
+ src/Selection.h src/PositionCache.h src/EditModel.h src/MarginView.h \
+ src/EditView.h src/Editor.h src/AutoComplete.h src/ScintillaBase.h
+curses/Selection.o: src/Selection.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/Selection.h
+curses/Style.o: src/Style.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Style.h
+curses/UniConversion.o: src/UniConversion.cxx src/UniConversion.h
+curses/ViewStyle.o: src/ViewStyle.cxx include/Platform.h include/Scintilla.h \
+ include/Sci_Position.h src/Position.h src/UniqueString.h src/Indicator.h \
+ src/XPM.h src/LineMarker.h src/Style.h src/ViewStyle.h
+curses/XPM.o: src/XPM.cxx include/Platform.h src/XPM.h
+curses/Accessor.o: lexlib/Accessor.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h
+curses/CharacterCategory.o: lexlib/CharacterCategory.cxx \
+ lexlib/CharacterCategory.h
+curses/CharacterSet.o: lexlib/CharacterSet.cxx lexlib/CharacterSet.h
+curses/DefaultLexer.o: lexlib/DefaultLexer.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/DefaultLexer.h
+curses/LexerBase.o: lexlib/LexerBase.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/LexerModule.h lexlib/LexerBase.h
+curses/LexerModule.o: lexlib/LexerModule.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/LexerBase.h \
+ lexlib/LexerSimple.h
+curses/LexerNoExceptions.o: lexlib/LexerNoExceptions.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/LexerBase.h \
+ lexlib/LexerNoExceptions.h
+curses/LexerSimple.o: lexlib/LexerSimple.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/LexerModule.h lexlib/LexerBase.h \
+ lexlib/LexerSimple.h
+curses/PropSetSimple.o: lexlib/PropSetSimple.cxx lexlib/PropSetSimple.h
+curses/StyleContext.o: lexlib/StyleContext.cxx include/ILexer.h \
+ include/Sci_Position.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h
+curses/WordList.o: lexlib/WordList.cxx lexlib/StringCopy.h lexlib/WordList.h
+curses/LexA68k.o: lexers/LexA68k.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexAbaqus.o: lexers/LexAbaqus.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexAda.o: lexers/LexAda.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexAPDL.o: lexers/LexAPDL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexAsm.o: lexers/LexAsm.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+curses/LexAsn1.o: lexers/LexAsn1.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexASY.o: lexers/LexASY.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexAU3.o: lexers/LexAU3.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexAVE.o: lexers/LexAVE.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexAVS.o: lexers/LexAVS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexBaan.o: lexers/LexBaan.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+curses/LexBash.o: lexers/LexBash.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexBasic.o: lexers/LexBasic.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+curses/LexBatch.o: lexers/LexBatch.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexBibTeX.o: lexers/LexBibTeX.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexBullant.o: lexers/LexBullant.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexCaml.o: lexers/LexCaml.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexCLW.o: lexers/LexCLW.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexCmake.o: lexers/LexCmake.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexCOBOL.o: lexers/LexCOBOL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexCoffeeScript.o: lexers/LexCoffeeScript.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexConf.o: lexers/LexConf.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexCPP.o: lexers/LexCPP.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h lexlib/SparseState.h lexlib/SubStyles.h
+curses/LexCrontab.o: lexers/LexCrontab.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexCsound.o: lexers/LexCsound.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexCSS.o: lexers/LexCSS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexD.o: lexers/LexD.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+curses/LexDiff.o: lexers/LexDiff.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexDMAP.o: lexers/LexDMAP.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexDMIS.o: lexers/LexDMIS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/DefaultLexer.h
+curses/LexECL.o: lexers/LexECL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h
+curses/LexEDIFACT.o: lexers/LexEDIFACT.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/LexAccessor.h lexlib/LexerModule.h lexlib/DefaultLexer.h
+curses/LexEiffel.o: lexers/LexEiffel.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexErlang.o: lexers/LexErlang.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexErrorList.o: lexers/LexErrorList.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexEScript.o: lexers/LexEScript.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexFlagship.o: lexers/LexFlagship.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexForth.o: lexers/LexForth.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexFortran.o: lexers/LexFortran.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexGAP.o: lexers/LexGAP.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexGui4Cli.o: lexers/LexGui4Cli.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexHaskell.o: lexers/LexHaskell.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/PropSetSimple.h lexlib/WordList.h lexlib/LexAccessor.h \
+ lexlib/Accessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/CharacterCategory.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/DefaultLexer.h
+curses/LexHex.o: lexers/LexHex.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexHTML.o: lexers/LexHTML.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexIndent.o: lexers/LexIndent.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexInno.o: lexers/LexInno.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexJSON.o: lexers/LexJSON.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+curses/LexKix.o: lexers/LexKix.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexKVIrc.o: lexers/LexKVIrc.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexLaTeX.o: lexers/LexLaTeX.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/LexerBase.h
+curses/LexLisp.o: lexers/LexLisp.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexLout.o: lexers/LexLout.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexLPeg.o: lexers/LexLPeg.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/LexerModule.h
+curses/LexLua.o: lexers/LexLua.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexMagik.o: lexers/LexMagik.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexMake.o: lexers/LexMake.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexMarkdown.o: lexers/LexMarkdown.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexMatlab.o: lexers/LexMatlab.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexMaxima.o: lexers/LexMaxima.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexMetapost.o: lexers/LexMetapost.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexMMIXAL.o: lexers/LexMMIXAL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexModula.o: lexers/LexModula.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexMPT.o: lexers/LexMPT.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexMSSQL.o: lexers/LexMSSQL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexMySQL.o: lexers/LexMySQL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexNimrod.o: lexers/LexNimrod.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexNsis.o: lexers/LexNsis.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexNull.o: lexers/LexNull.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexOpal.o: lexers/LexOpal.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexOScript.o: lexers/LexOScript.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexPascal.o: lexers/LexPascal.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexPB.o: lexers/LexPB.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexPerl.o: lexers/LexPerl.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/StyleContext.h lexlib/CharacterSet.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+curses/LexPLM.o: lexers/LexPLM.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexPO.o: lexers/LexPO.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexPOV.o: lexers/LexPOV.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexPowerPro.o: lexers/LexPowerPro.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexPowerShell.o: lexers/LexPowerShell.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexProgress.o: lexers/LexProgress.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/SparseState.h lexlib/DefaultLexer.h
+curses/LexProps.o: lexers/LexProps.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexPS.o: lexers/LexPS.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexPython.o: lexers/LexPython.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/StringCopy.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/CharacterCategory.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/SubStyles.h \
+ lexlib/DefaultLexer.h
+curses/LexR.o: lexers/LexR.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexRebol.o: lexers/LexRebol.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexRegistry.o: lexers/LexRegistry.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/DefaultLexer.h
+curses/LexRuby.o: lexers/LexRuby.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexRust.o: lexers/LexRust.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/PropSetSimple.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h lexlib/DefaultLexer.h
+curses/LexScriptol.o: lexers/LexScriptol.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexSmalltalk.o: lexers/LexSmalltalk.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexSML.o: lexers/LexSML.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexSorcus.o: lexers/LexSorcus.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexSpecman.o: lexers/LexSpecman.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexSpice.o: lexers/LexSpice.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexSQL.o: lexers/LexSQL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h lexlib/OptionSet.h \
+ lexlib/SparseState.h lexlib/DefaultLexer.h
+curses/LexSTTXT.o: lexers/LexSTTXT.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexTACL.o: lexers/LexTACL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexTADS3.o: lexers/LexTADS3.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexTAL.o: lexers/LexTAL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexTCL.o: lexers/LexTCL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexTCMD.o: lexers/LexTCMD.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexTeX.o: lexers/LexTeX.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexTxt2tags.o: lexers/LexTxt2tags.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexVB.o: lexers/LexVB.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexVerilog.o: lexers/LexVerilog.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/LexerModule.h \
+ lexlib/OptionSet.h lexlib/SubStyles.h lexlib/DefaultLexer.h
+curses/LexVHDL.o: lexers/LexVHDL.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/LexVisualProlog.o: lexers/LexVisualProlog.cxx include/ILexer.h \
+ include/Sci_Position.h include/Scintilla.h include/SciLexer.h \
+ lexlib/WordList.h lexlib/LexAccessor.h lexlib/Accessor.h \
+ lexlib/StyleContext.h lexlib/CharacterSet.h lexlib/CharacterCategory.h \
+ lexlib/LexerModule.h lexlib/OptionSet.h lexlib/DefaultLexer.h
+curses/LexYAML.o: lexers/LexYAML.cxx include/ILexer.h include/Sci_Position.h \
+ include/Scintilla.h include/SciLexer.h lexlib/WordList.h \
+ lexlib/LexAccessor.h lexlib/Accessor.h lexlib/StyleContext.h \
+ lexlib/CharacterSet.h lexlib/LexerModule.h
+curses/ScintillaCurses.o: curses/ScintillaCurses.cxx include/Platform.h \
+ include/ILoader.h include/Sci_Position.h include/ILexer.h \
+ include/Scintilla.h src/Position.h src/UniqueString.h src/SplitVector.h \
+ src/Partitioning.h src/RunStyles.h src/ContractionState.h \
+ src/CellBuffer.h src/CallTip.h src/KeyMap.h src/Indicator.h \
+ src/LineMarker.h src/Style.h src/ViewStyle.h src/CharClassify.h \
+ src/Decoration.h src/CaseFolder.h src/Document.h src/UniConversion.h \
+ src/Selection.h src/PositionCache.h src/EditModel.h src/MarginView.h \
+ src/EditView.h src/Editor.h src/AutoComplete.h src/ScintillaBase.h \
+ curses/ScintillaCurses.h

+ 13 - 7
maxguitextareascintilla.mod/scintilla/cocoa/InfoBar.mm

@@ -88,6 +88,10 @@
     NSBundle* bundle = [NSBundle bundleForClass: [InfoBar class]];
 
     NSString* path = [bundle pathForResource: @"info_bar_bg" ofType: @"tiff" inDirectory: nil];
+    // macOS 10.13 introduced bug where pathForResource: fails on SMB share
+    if (path == nil) {
+      path = [[bundle bundlePath] stringByAppendingPathComponent: @"Resources/info_bar_bg.tiff"];
+    }
     mBackground = [[NSImage alloc] initWithContentsOfFile: path];
     if (![mBackground isValid])
       NSLog(@"Background image for info bar is invalid.");
@@ -154,7 +158,7 @@ static float BarFontSize = 10.0;
   unsigned numberOfDefaultItems = sizeof(DefaultScaleMenuLabels) / sizeof(NSString *);
 
   // Create the popup button.
-  mZoomPopup = [[NSPopUpButton allocWithZone:[self zone]] initWithFrame: NSMakeRect(0.0, 0.0, 1.0, 1.0) pullsDown: NO];
+  mZoomPopup = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(0.0, 0.0, 1.0, 1.0) pullsDown: NO];
 
   // No border or background please.
   [[mZoomPopup cell] setBordered: NO];
@@ -242,11 +246,13 @@ static float BarFontSize = 10.0;
 {
   // Since the background is seamless, we don't need to take care for the proper offset.
   // Simply tile the background over the invalid rectangle.
-  NSPoint target = {rect.origin.x, 0};
-  while (target.x < rect.origin.x + rect.size.width)
-  {
-    [mBackground drawAtPoint: target fromRect: NSZeroRect operation: NSCompositeCopy fraction: 1];
-    target.x += mBackground.size.width;
+  if (mBackground.size.width != 0) {
+    NSPoint target = {rect.origin.x, 0};
+    while (target.x < rect.origin.x + rect.size.width)
+    {
+      [mBackground drawAtPoint: target fromRect: NSZeroRect operation: NSCompositeCopy fraction: 1];
+      target.x += mBackground.size.width;
+    }
   }
 
   // Draw separator lines between items.
@@ -346,7 +352,7 @@ static float BarFontSize = 10.0;
   {
     mDisplayMask = display;
     [self positionSubViews];
-    [self needsDisplay];
+    [self setNeedsDisplay: YES];
   }
 }
 

+ 46 - 45
maxguitextareascintilla.mod/scintilla/cocoa/PlatCocoa.h

@@ -7,14 +7,13 @@
 #ifndef PLATCOCOA_H
 #define PLATCOCOA_H
 
-#include <assert.h>
-
-#include <sys/time.h>
-
 #include <cstdlib>
+#include <cassert>
 #include <cstring>
 #include <cstdio>
 
+#include <sys/time.h>
+
 #include <Cocoa/Cocoa.h>
 
 #include "Platform.h"
@@ -22,7 +21,7 @@
 
 #include "QuartzTextLayout.h"
 
-NSRect PRectangleToNSRect(Scintilla::PRectangle& rc);
+NSRect PRectangleToNSRect(const Scintilla::PRectangle& rc);
 Scintilla::PRectangle NSRectToPRectangle(NSRect& rc);
 CFStringEncoding EncodingFromCharacterSet(bool unicode, int characterSet);
 
@@ -48,12 +47,12 @@ private:
   CGContextRef gc;
 
   /** The text layout instance */
-  QuartzTextLayout*	textLayout;
+  std::unique_ptr<QuartzTextLayout> textLayout;
   int codePage;
   int verticalDeviceResolution;
 
   /** If the surface is a bitmap context, contains a reference to the bitmap data. */
-  uint8_t* bitmapData;
+  std::unique_ptr<uint8_t[]> bitmapData;
   /** If the surface is a bitmap context, stores the dimensions of the bitmap. */
   int bitmapWidth;
   int bitmapHeight;
@@ -66,57 +65,59 @@ private:
   static const int BITS_PER_COMPONENT = 8;
   static const int BITS_PER_PIXEL = BITS_PER_COMPONENT * 4;
   static const int BYTES_PER_PIXEL = BITS_PER_PIXEL / 8;
+
+	void Clear();
+
 public:
   SurfaceImpl();
-  ~SurfaceImpl();
+  ~SurfaceImpl() override;
 
-  void Init(WindowID wid);
-  void Init(SurfaceID sid, WindowID wid);
-  void InitPixMap(int width, int height, Surface *surface_, WindowID wid);
+  void Init(WindowID wid) override;
+  void Init(SurfaceID sid, WindowID wid) override;
+  void InitPixMap(int width, int height, Surface *surface_, WindowID wid) override;
   CGContextRef GetContext() { return gc; }
 
-  void Release();
-  bool Initialised();
-  void PenColour(ColourDesired fore);
+  void Release() override;
+  bool Initialised() override;
+  void PenColour(ColourDesired fore) override;
 
   /** Returns a CGImageRef that represents the surface. Returns NULL if this is not possible. */
   CGImageRef GetImage();
   void CopyImageRectangle(Surface &surfaceSource, PRectangle srcRect, PRectangle dstRect);
 
-  int LogPixelsY();
-  int DeviceHeightFont(int points);
-  void MoveTo(int x_, int y_);
-  void LineTo(int x_, int y_);
-  void Polygon(Scintilla::Point *pts, int npts, ColourDesired fore, ColourDesired back);
-  void RectangleDraw(PRectangle rc, ColourDesired fore, ColourDesired back);
-  void FillRectangle(PRectangle rc, ColourDesired back);
-  void FillRectangle(PRectangle rc, Surface &surfacePattern);
-  void RoundedRectangle(PRectangle rc, ColourDesired fore, ColourDesired back);
+  int LogPixelsY() override;
+  int DeviceHeightFont(int points) override;
+  void MoveTo(int x_, int y_) override;
+  void LineTo(int x_, int y_) override;
+  void Polygon(Scintilla::Point *pts, size_t npts, ColourDesired fore, ColourDesired back) override;
+  void RectangleDraw(PRectangle rc, ColourDesired fore, ColourDesired back) override;
+  void FillRectangle(PRectangle rc, ColourDesired back) override;
+  void FillRectangle(PRectangle rc, Surface &surfacePattern) override;
+  void RoundedRectangle(PRectangle rc, ColourDesired fore, ColourDesired back) override;
   void AlphaRectangle(PRectangle rc, int cornerSize, ColourDesired fill, int alphaFill,
-                     ColourDesired outline, int alphaOutline, int flags);
-  void DrawRGBAImage(PRectangle rc, int width, int height, const unsigned char *pixelsImage);
-  void Ellipse(PRectangle rc, ColourDesired fore, ColourDesired back);
-  void Copy(PRectangle rc, Scintilla::Point from, Surface &surfaceSource);
+                     ColourDesired outline, int alphaOutline, int flags) override;
+  void GradientRectangle(PRectangle rc, const std::vector<ColourStop> &stops, GradientOptions options) override;
+  void DrawRGBAImage(PRectangle rc, int width, int height, const unsigned char *pixelsImage) override;
+  void Ellipse(PRectangle rc, ColourDesired fore, ColourDesired back) override;
+  void Copy(PRectangle rc, Scintilla::Point from, Surface &surfaceSource) override;
   void DrawTextNoClip(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore,
-                     ColourDesired back);
+                     ColourDesired back) override;
   void DrawTextClipped(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore,
-                      ColourDesired back);
-  void DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore);
-  void MeasureWidths(Font &font_, const char *s, int len, XYPOSITION *positions);
-  XYPOSITION WidthText(Font &font_, const char *s, int len);
-  XYPOSITION WidthChar(Font &font_, char ch);
-  XYPOSITION Ascent(Font &font_);
-  XYPOSITION Descent(Font &font_);
-  XYPOSITION InternalLeading(Font &font_);
-  XYPOSITION ExternalLeading(Font &font_);
-  XYPOSITION Height(Font &font_);
-  XYPOSITION AverageCharWidth(Font &font_);
-
-  void SetClip(PRectangle rc);
-  void FlushCachedState();
-
-  void SetUnicodeMode(bool unicodeMode_);
-  void SetDBCSMode(int codePage_);
+                      ColourDesired back) override;
+  void DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore) override;
+  void MeasureWidths(Font &font_, const char *s, int len, XYPOSITION *positions) override;
+  XYPOSITION WidthText(Font &font_, const char *s, int len) override;
+  XYPOSITION Ascent(Font &font_) override;
+  XYPOSITION Descent(Font &font_) override;
+  XYPOSITION InternalLeading(Font &font_) override;
+  XYPOSITION Height(Font &font_) override;
+  XYPOSITION AverageCharWidth(Font &font_) override;
+
+  void SetClip(PRectangle rc) override;
+  void FlushCachedState() override;
+
+  void SetUnicodeMode(bool unicodeMode_) override;
+  void SetDBCSMode(int codePage_) override;
 }; // SurfaceImpl class
 
 } // Scintilla namespace

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 235 - 245
maxguitextareascintilla.mod/scintilla/cocoa/PlatCocoa.mm


+ 9 - 18
maxguitextareascintilla.mod/scintilla/cocoa/QuartzTextLayout.h

@@ -19,13 +19,9 @@
 class QuartzTextLayout
 {
 public:
-    /** Create a text layout for drawing on the specified context. */
-    explicit QuartzTextLayout( CGContextRef context )
+    /** Create a text layout for drawing. */
+    QuartzTextLayout() : mString(NULL), mLine(NULL), stringLength(0)
     {
-		mString = NULL;
-		mLine = NULL;
-		stringLength = 0;
-        setContext(context);
     }
 
     ~QuartzTextLayout()
@@ -42,9 +38,9 @@ public:
 		}
     }
 
-    inline void setText( const UInt8* buffer, size_t byteLength, CFStringEncoding encoding, const QuartzTextStyle& r )
-    {
-		CFStringRef str = CFStringCreateWithBytes( NULL, buffer, byteLength, encoding, false );
+	void setText(const char *buffer, size_t byteLength, CFStringEncoding encoding, const QuartzTextStyle &r) {
+		const UInt8 *puiBuffer = reinterpret_cast<const UInt8 *>(buffer);
+		CFStringRef str = CFStringCreateWithBytes(NULL, puiBuffer, byteLength, encoding, false);
         if (!str)
             return;
 
@@ -63,12 +59,13 @@ public:
 		CFRelease( str );
     }
 
-    /** Draw the text layout into the current CGContext at the specified position.
+    /** Draw the text layout into a CGContext at the specified position.
+	* @param gc The CGContext in which to draw the text.
     * @param x The x axis position to draw the baseline in the current CGContext.
     * @param y The y axis position to draw the baseline in the current CGContext. */
-    void draw( float x, float y )
+    void draw( CGContextRef gc, float x, float y )
     {
-		if (mLine == NULL)
+		if (!mLine)
 			return;
 
 		::CGContextSetTextMatrix(gc, CGAffineTransformMakeScale(1.0, -1.0));
@@ -96,13 +93,7 @@ public:
 	    return stringLength;
     }
 
-    inline void setContext (CGContextRef context)
-    {
-        gc = context;
-    }
-
 private:
-    CGContextRef gc;
 	CFAttributedStringRef mString;
 	CTLineRef mLine;
 	CFIndex stringLength;

+ 74 - 62
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaCocoa.h

@@ -13,16 +13,19 @@
  * This file is dual licensed under LGPL v2.1 and the Scintilla license (http://www.scintilla.org/License.txt).
  */
 
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-#include <ctype.h>
+#include <cstddef>
+#include <cstdlib>
+#include <cctype>
+#include <cstdio>
+#include <ctime>
 
 #include <stdexcept>
 #include <string>
 #include <vector>
 #include <map>
+#include <memory>
 
+#include "ILoader.h"
 #include "ILexer.h"
 
 #ifdef SCI_LEXER
@@ -31,6 +34,7 @@
 #endif
 
 #include "Position.h"
+#include "UniqueString.h"
 #include "SplitVector.h"
 #include "Partitioning.h"
 #include "RunStyles.h"
@@ -39,7 +43,6 @@
 #include "CallTip.h"
 #include "KeyMap.h"
 #include "Indicator.h"
-#include "XPM.h"
 #include "LineMarker.h"
 #include "Style.h"
 #include "ViewStyle.h"
@@ -48,6 +51,8 @@
 #include "CaseFolder.h"
 #include "Document.h"
 #include "CaseConvert.h"
+#include "UniConversion.h"
+#include "DBCS.h"
 #include "Selection.h"
 #include "PositionCache.h"
 #include "EditModel.h"
@@ -88,6 +93,7 @@ namespace Scintilla {
 class ScintillaCocoa : public ScintillaBase
 {
 private:
+  ScintillaView* sciView;
   TimerTarget* timerTarget;
   NSEvent* lastMouseEvent;
 
@@ -100,14 +106,10 @@ private:
 
   bool enteredSetScrollingSize;
 
-  // Private so ScintillaCocoa objects can not be copied
-  ScintillaCocoa(const ScintillaCocoa &) : ScintillaBase() {}
-  ScintillaCocoa &operator=(const ScintillaCocoa &) { return * this; }
-
   bool GetPasteboardData(NSPasteboard* board, SelectionText* selectedText);
   void SetPasteboardData(NSPasteboard* board, const SelectionText& selectedText);
-  int TargetAsUTF8(char *text);
-  int EncodedFromUTF8(char *utf8, char *encoded) const;
+  Sci::Position TargetAsUTF8(char *text) const;
+  Sci::Position EncodedFromUTF8(const char *utf8, char *encoded) const;
 
   int scrollSpeed;
   int scrollTicks;
@@ -116,27 +118,30 @@ private:
   FindHighlightLayer *layerFindIndicator;
 
 protected:
-  Point GetVisibleOriginInMain() const;
-  PRectangle GetClientRectangle() const;
-  virtual PRectangle GetClientDrawingRectangle();
+  Point GetVisibleOriginInMain() const override;
+  PRectangle GetClientRectangle() const override;
+  PRectangle GetClientDrawingRectangle() override;
   Point ConvertPoint(NSPoint point);
-  virtual void RedrawRect(PRectangle rc);
-  virtual void DiscardOverdraw();
-  virtual void Redraw();
+  void RedrawRect(PRectangle rc) override;
+  void DiscardOverdraw() override;
+  void Redraw() override;
 
-  virtual void Initialise();
-  virtual void Finalise();
-  virtual CaseFolder *CaseFolderForEncoding();
-  virtual std::string CaseMapString(const std::string &s, int caseMapping);
-  virtual void CancelModes();
+  void Init();
+  CaseFolder *CaseFolderForEncoding() override;
+  std::string CaseMapString(const std::string &s, int caseMapping) override;
+  void CancelModes() override;
 
 public:
-  ScintillaCocoa(SCIContentView* view, SCIMarginView* viewMargin);
-  virtual ~ScintillaCocoa();
+  ScintillaCocoa(ScintillaView* sciView_, SCIContentView* viewContent, SCIMarginView* viewMargin);
+  // Deleted so ScintillaCocoa objects can not be copied.
+  ScintillaCocoa(const ScintillaCocoa &) = delete;
+  ScintillaCocoa &operator=(const ScintillaCocoa &) = delete;
+  ~ScintillaCocoa() override;
+  void Finalise() override;
 
   void SetDelegate(id<ScintillaNotificationProtocol> delegate_);
   void RegisterNotifyCallback(intptr_t windowid, SciNotifyFunc callback);
-  sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam);
+  sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override;
 
   NSScrollView* ScrollContainer() const;
   SCIContentView* ContentView();
@@ -145,43 +150,42 @@ public:
   bool Draw(NSRect rect, CGContextRef gc);
   void PaintMargin(NSRect aRect);
 
-  virtual sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam);
-  void TickFor(TickReason reason);
-  bool FineTickerAvailable();
-  bool FineTickerRunning(TickReason reason);
-  void FineTickerStart(TickReason reason, int millis, int tolerance);
-  void FineTickerCancel(TickReason reason);
-  bool SetIdle(bool on);
-  void SetMouseCapture(bool on);
-  bool HaveMouseCapture();
+  sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override;
+  void TickFor(TickReason reason) override;
+  bool FineTickerRunning(TickReason reason) override;
+  void FineTickerStart(TickReason reason, int millis, int tolerance) override;
+  void FineTickerCancel(TickReason reason) override;
+  bool SetIdle(bool on) override;
+  void SetMouseCapture(bool on) override;
+  bool HaveMouseCapture() override;
   void WillDraw(NSRect rect);
-  void ScrollText(int linesToMove);
-  void SetVerticalScrollPos();
-  void SetHorizontalScrollPos();
-  bool ModifyScrollBars(int nMax, int nPage);
+  void ScrollText(Sci::Line linesToMove) override;
+  void SetVerticalScrollPos() override;
+  void SetHorizontalScrollPos() override;
+  bool ModifyScrollBars(Sci::Line nMax, Sci::Line nPage) override;
   bool SetScrollingSize(void);
   void Resize();
   void UpdateForScroll();
 
   // Notifications for the owner.
-  void NotifyChange();
-  void NotifyFocus(bool focus);
-  void NotifyParent(SCNotification scn);
+  void NotifyChange() override;
+  void NotifyFocus(bool focus) override;
+  void NotifyParent(SCNotification scn) override;
   void NotifyURIDropped(const char *uri);
 
   bool HasSelection();
   bool CanUndo();
   bool CanRedo();
-  virtual void CopyToClipboard(const SelectionText &selectedText);
-  virtual void Copy();
-  virtual bool CanPaste();
-  virtual void Paste();
-  virtual void Paste(bool rectangular);
+  void CopyToClipboard(const SelectionText &selectedText) override;
+  void Copy() override;
+  bool CanPaste() override;
+  void Paste() override;
+  void Paste(bool rectangular);
   void CTPaint(void* gc, NSRect rc);
   void CallTipMouseDown(NSPoint pt);
-  virtual void CreateCallTipWindow(PRectangle rc);
-  virtual void AddToPopUp(const char *label, int cmd = 0, bool enabled = true);
-  virtual void ClaimSelection();
+  void CreateCallTipWindow(PRectangle rc) override;
+  void AddToPopUp(const char *label, int cmd = 0, bool enabled = true) override;
+  void ClaimSelection() override;
 
   NSPoint GetCaretPosition();
 
@@ -193,21 +197,27 @@ public:
   static void UpdateObserver(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *sci);
   void ObserverAdd();
   void ObserverRemove();
-  virtual void IdleWork();
-  virtual void QueueIdleWork(WorkNeeded::workItems items, int upTo);
-  int InsertText(NSString* input);
-  NSRange PositionsFromCharacters(NSRange range) const;
-  NSRange CharactersFromPositions(NSRange range) const;
+  void IdleWork() override;
+  void QueueIdleWork(WorkNeeded::workItems items, Sci::Position upTo) override;
+	ptrdiff_t InsertText(NSString *input);
+  NSRange PositionsFromCharacters(NSRange rangeCharacters) const;
+  NSRange CharactersFromPositions(NSRange rangePositions) const;
+  NSString *RangeTextAsString(NSRange rangePositions) const;
+  NSInteger VisibleLineForIndex(NSInteger index);
+  NSRange RangeForVisibleLine(NSInteger lineVisible);
+  NSRect FrameForRange(NSRange rangeCharacters);
+  NSRect GetBounds() const;
   void SelectOnlyMainSelection();
   void ConvertSelectionVirtualSpace();
   bool ClearAllSelections();
   void CompositionStart();
   void CompositionCommit();
   void CompositionUndo();
-  virtual void SetDocPointer(Document *document);
+  void SetDocPointer(Document *document) override;
 
   bool KeyboardInput(NSEvent* event);
   void MouseDown(NSEvent* event);
+  void RightMouseDown(NSEvent* event);
   void MouseMove(NSEvent* event);
   void MouseUp(NSEvent* event);
   void MouseEntered(NSEvent* event);
@@ -215,7 +225,7 @@ public:
   void MouseWheel(NSEvent* event);
 
   // Drag and drop
-  void StartDrag();
+  void StartDrag() override;
   bool GetDragData(id <NSDraggingInfo> info, NSPasteboard &pasteBoard, SelectionText* selectedText);
   NSDragOperation DraggingEntered(id <NSDraggingInfo> info);
   NSDragOperation DraggingUpdated(id <NSDraggingInfo> info);
@@ -224,16 +234,18 @@ public:
   void DragScroll();
 
   // Promote some methods needed for NSResponder actions.
-  virtual void SelectAll();
+  void SelectAll() override;
   void DeleteBackward();
-  virtual void Cut();
-  virtual void Undo();
-  virtual void Redo();
+  void Cut() override;
+  void Undo() override;
+  void Redo() override;
 
-  virtual NSMenu* CreateContextMenu(NSEvent* event);
+  bool ShouldDisplayPopupOnMargin();
+  bool ShouldDisplayPopupOnText();
+  NSMenu* CreateContextMenu(NSEvent* event);
   void HandleCommand(NSInteger command);
 
-  virtual void ActiveStateChanged(bool isActive);
+  void ActiveStateChanged(bool isActive);
   void WindowWillMove();
 
   // Find indicator

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 301 - 170
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaCocoa.mm


+ 2 - 2
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaFramework/Info.plist

@@ -17,11 +17,11 @@
 	<key>CFBundlePackageType</key>
 	<string>FMWK</string>
 	<key>CFBundleShortVersionString</key>
-	<string>3.6.7</string>
+	<string>3.10.1</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleVersion</key>
-	<string>3.6.7</string>
+	<string>3.10.1</string>
 	<key>NSPrincipalClass</key>
 	<string></string>
 </dict>

+ 81 - 9
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj

@@ -11,7 +11,6 @@
 		1100F1EC178E393200105727 /* CaseConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 1100F1E7178E393200105727 /* CaseConvert.h */; };
 		1100F1ED178E393200105727 /* CaseFolder.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1100F1E8178E393200105727 /* CaseFolder.cxx */; };
 		1100F1EE178E393200105727 /* CaseFolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 1100F1E9178E393200105727 /* CaseFolder.h */; };
-		1100F1EF178E393200105727 /* UnicodeFromUTF8.h in Headers */ = {isa = PBXBuildFile; fileRef = 1100F1EA178E393200105727 /* UnicodeFromUTF8.h */; };
 		1102C31C169FB49300DC16AB /* LexLaTeX.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1102C31B169FB49300DC16AB /* LexLaTeX.cxx */; };
 		11126B8214CD3A6200803C49 /* LexAVS.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 11126B8114CD3A6200803C49 /* LexAVS.cxx */; };
 		1114D6CB1602A951001DC345 /* LexPO.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1114D6CA1602A951001DC345 /* LexPO.cxx */; };
@@ -125,7 +124,7 @@
 		114B6F9D11FA75BE004FB6AB /* PropSetSimple.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 114B6F9411FA75BE004FB6AB /* PropSetSimple.cxx */; };
 		114B6F9E11FA75BE004FB6AB /* StyleContext.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 114B6F9511FA75BE004FB6AB /* StyleContext.cxx */; };
 		114B6F9F11FA75BE004FB6AB /* WordList.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 114B6F9611FA75BE004FB6AB /* WordList.cxx */; };
-		114B6FA111FA75DB004FB6AB /* ILexer.h in Headers */ = {isa = PBXBuildFile; fileRef = 114B6FA011FA75DB004FB6AB /* ILexer.h */; };
+		114B6FA111FA75DB004FB6AB /* ILexer.h in Headers */ = {isa = PBXBuildFile; fileRef = 114B6FA011FA75DB004FB6AB /* ILexer.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		114B6FBD11FA7623004FB6AB /* AutoComplete.h in Headers */ = {isa = PBXBuildFile; fileRef = 114B6FA211FA7623004FB6AB /* AutoComplete.h */; };
 		114B6FBE11FA7623004FB6AB /* CallTip.h in Headers */ = {isa = PBXBuildFile; fileRef = 114B6FA311FA7623004FB6AB /* CallTip.h */; };
 		114B6FBF11FA7623004FB6AB /* Catalogue.h in Headers */ = {isa = PBXBuildFile; fileRef = 114B6FA411FA7623004FB6AB /* Catalogue.h */; };
@@ -199,6 +198,8 @@
 		280056FC188DDD2C00F200AE /* StringCopy.h in Headers */ = {isa = PBXBuildFile; fileRef = 280056F9188DDD2C00F200AE /* StringCopy.h */; };
 		280056FD188DDD2C00F200AE /* SubStyles.h in Headers */ = {isa = PBXBuildFile; fileRef = 280056FA188DDD2C00F200AE /* SubStyles.h */; };
 		28064A05190F12E100E6E47F /* LexDMIS.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28064A04190F12E100E6E47F /* LexDMIS.cxx */; };
+		282D4A961F53FE270082E4D3 /* ILoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 282D4A951F53FE270082E4D3 /* ILoader.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		28804B2C1EEE232E00C0D154 /* DBCS.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28804B2B1EEE232E00C0D154 /* DBCS.cxx */; };
 		28A067111A36B42600B4966A /* LexHex.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28A067101A36B42600B4966A /* LexHex.cxx */; };
 		28A1DD51196BE0CA006EFCDD /* EditModel.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28A1DD4E196BE0CA006EFCDD /* EditModel.cxx */; };
 		28A1DD52196BE0CA006EFCDD /* EditView.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28A1DD4F196BE0CA006EFCDD /* EditView.cxx */; };
@@ -214,13 +215,21 @@
 		28B647101B54C0720009DC49 /* LexNull.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28B6470A1B54C0720009DC49 /* LexNull.cxx */; };
 		28B647111B54C0720009DC49 /* LexProps.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28B6470B1B54C0720009DC49 /* LexProps.cxx */; };
 		28BC38EC1B74C6AD008BF9EB /* Sci_Position.h in Headers */ = {isa = PBXBuildFile; fileRef = 28BC38EB1B74C6AD008BF9EB /* Sci_Position.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		28BDA1221EFB8F7C00EBD3F3 /* DefaultLexer.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28BDA1211EFB8F7C00EBD3F3 /* DefaultLexer.cxx */; };
+		28BDA1241EFB8FB200EBD3F3 /* DefaultLexer.h in Headers */ = {isa = PBXBuildFile; fileRef = 28BDA1231EFB8FB200EBD3F3 /* DefaultLexer.h */; };
 		28C40CA81CB7321200B089F2 /* LexJSON.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28C40CA71CB7321200B089F2 /* LexJSON.cxx */; };
+		28D191A21DEA72C800159938 /* LexEDIFACT.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28D191A11DEA72C800159938 /* LexEDIFACT.cxx */; };
 		28D516D81830FFCA0047C93D /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 28D516D51830FFCA0047C93D /* [email protected] */; };
 		28D516D91830FFCA0047C93D /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 28D516D61830FFCA0047C93D /* [email protected] */; };
 		28D516DA1830FFCA0047C93D /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 28D516D71830FFCA0047C93D /* [email protected] */; };
 		28FDA42119B6967B00BE27D7 /* LexBibTeX.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28FDA42019B6967B00BE27D7 /* LexBibTeX.cxx */; };
+		3D994BD7A5EAC4FA5B3CFBDF /* LexMaxima.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 29B042978C1F93EF42F9E4AB /* LexMaxima.cxx */; };
 		8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; };
 		8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
+		F437405F9F32C7DEFCA38C11 /* LexIndent.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 282E41F3B9E2BFEDD6A05BE7 /* LexIndent.cxx */; };
+		FDC7442CAD70B9A67EF1639D /* LexSAS.cxx in Sources */ = {isa = PBXBuildFile; fileRef = A95147A1AB7CADB00DAFE724 /* LexSAS.cxx */; };
+		5F804AA6B60FE695863A39FE /* LexStata.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 7623427695416AB1270EE023 /* LexStata.cxx
+		4D0C4365AB6DF998CD48B1FC /* LexLPeg.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 5EB3467789767C0ACE40A46A /* LexLPeg.cxx */; }; */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
@@ -232,7 +241,6 @@
 		1100F1E7178E393200105727 /* CaseConvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CaseConvert.h; path = ../../src/CaseConvert.h; sourceTree = "<group>"; };
 		1100F1E8178E393200105727 /* CaseFolder.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CaseFolder.cxx; path = ../../src/CaseFolder.cxx; sourceTree = "<group>"; };
 		1100F1E9178E393200105727 /* CaseFolder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CaseFolder.h; path = ../../src/CaseFolder.h; sourceTree = "<group>"; };
-		1100F1EA178E393200105727 /* UnicodeFromUTF8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UnicodeFromUTF8.h; path = ../../src/UnicodeFromUTF8.h; sourceTree = "<group>"; };
 		1102C31B169FB49300DC16AB /* LexLaTeX.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexLaTeX.cxx; path = ../../lexers/LexLaTeX.cxx; sourceTree = "<group>"; };
 		11126B8114CD3A6200803C49 /* LexAVS.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexAVS.cxx; path = ../../lexers/LexAVS.cxx; sourceTree = "<group>"; };
 		1114D6CA1602A951001DC345 /* LexPO.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexPO.cxx; path = ../../lexers/LexPO.cxx; sourceTree = "<group>"; };
@@ -420,6 +428,9 @@
 		280056F9188DDD2C00F200AE /* StringCopy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StringCopy.h; path = ../../lexlib/StringCopy.h; sourceTree = "<group>"; };
 		280056FA188DDD2C00F200AE /* SubStyles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SubStyles.h; path = ../../lexlib/SubStyles.h; sourceTree = "<group>"; };
 		28064A04190F12E100E6E47F /* LexDMIS.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexDMIS.cxx; path = ../../lexers/LexDMIS.cxx; sourceTree = "<group>"; };
+		282D4A951F53FE270082E4D3 /* ILoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ILoader.h; path = ../../include/ILoader.h; sourceTree = "<group>"; };
+		282E41F3B9E2BFEDD6A05BE7 /* LexIndent.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexIndent.cxx; path = ../../lexers/LexIndent.cxx; sourceTree = SOURCE_ROOT; };
+		28804B2B1EEE232E00C0D154 /* DBCS.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DBCS.cxx; path = ../../src/DBCS.cxx; sourceTree = "<group>"; };
 		28A067101A36B42600B4966A /* LexHex.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexHex.cxx; path = ../../lexers/LexHex.cxx; sourceTree = "<group>"; };
 		28A1DD4E196BE0CA006EFCDD /* EditModel.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EditModel.cxx; path = ../../src/EditModel.cxx; sourceTree = "<group>"; };
 		28A1DD4F196BE0CA006EFCDD /* EditView.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EditView.cxx; path = ../../src/EditView.cxx; sourceTree = "<group>"; };
@@ -435,15 +446,23 @@
 		28B6470A1B54C0720009DC49 /* LexNull.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexNull.cxx; path = ../../lexers/LexNull.cxx; sourceTree = "<group>"; };
 		28B6470B1B54C0720009DC49 /* LexProps.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexProps.cxx; path = ../../lexers/LexProps.cxx; sourceTree = "<group>"; };
 		28BC38EB1B74C6AD008BF9EB /* Sci_Position.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sci_Position.h; path = ../../include/Sci_Position.h; sourceTree = "<group>"; };
+		28BDA1211EFB8F7C00EBD3F3 /* DefaultLexer.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DefaultLexer.cxx; path = ../../lexlib/DefaultLexer.cxx; sourceTree = "<group>"; };
+		28BDA1231EFB8FB200EBD3F3 /* DefaultLexer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DefaultLexer.h; path = ../../lexlib/DefaultLexer.h; sourceTree = "<group>"; };
 		28C40CA71CB7321200B089F2 /* LexJSON.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexJSON.cxx; path = ../../lexers/LexJSON.cxx; sourceTree = "<group>"; };
+		28D1919E1DE69FC100159938 /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = "<group>"; };
+		28D191A11DEA72C800159938 /* LexEDIFACT.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexEDIFACT.cxx; path = ../../lexers/LexEDIFACT.cxx; sourceTree = "<group>"; };
 		28D516D51830FFCA0047C93D /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; };
 		28D516D61830FFCA0047C93D /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; };
 		28D516D71830FFCA0047C93D /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; };
 		28FDA42019B6967B00BE27D7 /* LexBibTeX.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexBibTeX.cxx; path = ../../lexers/LexBibTeX.cxx; sourceTree = "<group>"; };
+		29B042978C1F93EF42F9E4AB /* LexMaxima.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexMaxima.cxx; path = ../../lexers/LexMaxima.cxx; sourceTree = SOURCE_ROOT; };
 		32DBCF5E0370ADEE00C91783 /* Scintilla_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scintilla_Prefix.pch; sourceTree = "<group>"; };
 		8DC2EF5A0486A6940098B216 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		8DC2EF5B0486A6940098B216 /* Scintilla.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Scintilla.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		D2F7E79907B2D74100F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
+		A95147A1AB7CADB00DAFE724 /* LexSAS.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexSAS.cxx; path = ../../lexers/LexSAS.cxx; sourceTree = SOURCE_ROOT; };
+		7623427695416AB1270EE023 /* LexStata.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexStata.cxx; path = ../../lexers/LexStata.cxx; sourceTree = SOURCE_ROOT; };
+		5EB3467789767C0ACE40A46A /* LexLPeg.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexLPeg.cxx; path = ../../lexers/LexLPeg.cxx; sourceTree = SOURCE_ROOT; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -503,6 +522,7 @@
 		08FB77AEFE84172EC02AAC07 /* Classes */ = {
 			isa = PBXGroup;
 			children = (
+				28D1919E1DE69FC100159938 /* module.modulemap */,
 				2744E4980FC167ED00E85C33 /* Source Files */,
 				2744E4970FC167E400E85C33 /* Header Files */,
 			);
@@ -571,6 +591,7 @@
 				11FF3FE11810EB3900E13F13 /* LexDMAP.cxx */,
 				28064A04190F12E100E6E47F /* LexDMIS.cxx */,
 				11BEB6A114EF189600BDE92A /* LexECL.cxx */,
+				28D191A11DEA72C800159938 /* LexEDIFACT.cxx */,
 				114B6ED411FA7526004FB6AB /* LexEiffel.cxx */,
 				114B6ED511FA7526004FB6AB /* LexErlang.cxx */,
 				28B647081B54C0720009DC49 /* LexErrorList.cxx */,
@@ -583,6 +604,7 @@
 				114B6EDC11FA7526004FB6AB /* LexHaskell.cxx */,
 				28A067101A36B42600B4966A /* LexHex.cxx */,
 				114B6EDD11FA7526004FB6AB /* LexHTML.cxx */,
+				282E41F3B9E2BFEDD6A05BE7 /* LexIndent.cxx */,
 				114B6EDE11FA7526004FB6AB /* LexInno.cxx */,
 				28C40CA71CB7321200B089F2 /* LexJSON.cxx */,
 				114B6EDF11FA7526004FB6AB /* LexKix.cxx */,
@@ -590,11 +612,13 @@
 				1102C31B169FB49300DC16AB /* LexLaTeX.cxx */,
 				114B6EE011FA7526004FB6AB /* LexLisp.cxx */,
 				114B6EE111FA7526004FB6AB /* LexLout.cxx */,
+				5EB3467789767C0ACE40A46A /* LexLPeg.cxx */,
 				114B6EE211FA7526004FB6AB /* LexLua.cxx */,
 				114B6EE311FA7526004FB6AB /* LexMagik.cxx */,
 				28B647091B54C0720009DC49 /* LexMake.cxx */,
 				114B6EE411FA7526004FB6AB /* LexMarkdown.cxx */,
 				114B6EE511FA7526004FB6AB /* LexMatlab.cxx */,
+				29B042978C1F93EF42F9E4AB /* LexMaxima.cxx */,
 				114B6EE611FA7526004FB6AB /* LexMetapost.cxx */,
 				114B6EE711FA7526004FB6AB /* LexMMIXAL.cxx */,
 				11BB124C12FF9C1300F6BCF7 /* LexModula.cxx */,
@@ -623,6 +647,7 @@
 				28A7D6041995E47D0062D204 /* LexRegistry.cxx */,
 				114B6EFB11FA7526004FB6AB /* LexRuby.cxx */,
 				1160E0371803651C00BCEBCB /* LexRust.cxx */,
+				A95147A1AB7CADB00DAFE724 /* LexSAS.cxx */,
 				114B6EFC11FA7526004FB6AB /* LexScriptol.cxx */,
 				114B6EFD11FA7526004FB6AB /* LexSmalltalk.cxx */,
 				114B6EFE11FA7526004FB6AB /* LexSML.cxx */,
@@ -630,6 +655,7 @@
 				114B6F0011FA7526004FB6AB /* LexSpecman.cxx */,
 				114B6F0111FA7526004FB6AB /* LexSpice.cxx */,
 				114B6F0211FA7526004FB6AB /* LexSQL.cxx */,
+				7623427695416AB1270EE023 /* LexStata.cxx */,
 				11FDAEB6174E1A9700FA161B /* LexSTTXT.cxx */,
 				114B6F0311FA7526004FB6AB /* LexTACL.cxx */,
 				114B6F0411FA7526004FB6AB /* LexTADS3.cxx */,
@@ -662,6 +688,7 @@
 				114B6FA611FA7623004FB6AB /* CharClassify.h */,
 				114B6FA711FA7623004FB6AB /* ContractionState.h */,
 				114B6FA811FA7623004FB6AB /* Decoration.h */,
+				28BDA1231EFB8FB200EBD3F3 /* DefaultLexer.h */,
 				114B6FA911FA7623004FB6AB /* Document.h */,
 				28A1DD54196BE0ED006EFCDD /* EditModel.h */,
 				114B6FAA11FA7623004FB6AB /* Editor.h */,
@@ -669,6 +696,7 @@
 				114B6FAB11FA7623004FB6AB /* ExternalLexer.h */,
 				114B6FAC11FA7623004FB6AB /* FontQuality.h */,
 				114B6FA011FA75DB004FB6AB /* ILexer.h */,
+				282D4A951F53FE270082E4D3 /* ILoader.h */,
 				114B6FAD11FA7623004FB6AB /* Indicator.h */,
 				114B6FAE11FA7623004FB6AB /* KeyMap.h */,
 				114B6FDA11FA7645004FB6AB /* LexAccessor.h */,
@@ -693,7 +721,6 @@
 				114B6FB811FA7623004FB6AB /* Style.h */,
 				114B6FE111FA7645004FB6AB /* StyleContext.h */,
 				280056FA188DDD2C00F200AE /* SubStyles.h */,
-				1100F1EA178E393200105727 /* UnicodeFromUTF8.h */,
 				114B6FBA11FA7623004FB6AB /* UniConversion.h */,
 				114B6FBB11FA7623004FB6AB /* ViewStyle.h */,
 				114B6FE211FA7645004FB6AB /* WordList.h */,
@@ -716,7 +743,9 @@
 				114B6F8F11FA75BE004FB6AB /* CharacterSet.cxx */,
 				114B6F6411FA7597004FB6AB /* CharClassify.cxx */,
 				114B6F6511FA7597004FB6AB /* ContractionState.cxx */,
+				28804B2B1EEE232E00C0D154 /* DBCS.cxx */,
 				114B6F6611FA7597004FB6AB /* Decoration.cxx */,
+				28BDA1211EFB8F7C00EBD3F3 /* DefaultLexer.cxx */,
 				114B6F6711FA7597004FB6AB /* Document.cxx */,
 				28A1DD4E196BE0CA006EFCDD /* EditModel.cxx */,
 				114B6F6811FA7597004FB6AB /* Editor.cxx */,
@@ -807,9 +836,11 @@
 			buildActionMask = 2147483647;
 			files = (
 				28BC38EC1B74C6AD008BF9EB /* Sci_Position.h in Headers */,
+				114B6FA111FA75DB004FB6AB /* ILexer.h in Headers */,
 				2744E5A40FC168A100E85C33 /* InfoBar.h in Headers */,
 				2744E5AC0FC168B200E85C33 /* InfoBarCommunicator.h in Headers */,
 				2744E5AA0FC168A100E85C33 /* ScintillaView.h in Headers */,
+				28BDA1241EFB8FB200EBD3F3 /* DefaultLexer.h in Headers */,
 				280056FB188DDD2C00F200AE /* SparseState.h in Headers */,
 				2791F3C80FC19F71009DBCF9 /* SciLexer.h in Headers */,
 				2791F3C60FC19F71009DBCF9 /* PlatCocoa.h in Headers */,
@@ -818,7 +849,6 @@
 				2791F3E00FC1A390009DBCF9 /* ScintillaCocoa.h in Headers */,
 				2791F3C70FC19F71009DBCF9 /* Platform.h in Headers */,
 				2791F3C90FC19F71009DBCF9 /* Scintilla.h in Headers */,
-				114B6FA111FA75DB004FB6AB /* ILexer.h in Headers */,
 				114B6FBD11FA7623004FB6AB /* AutoComplete.h in Headers */,
 				114B6FBE11FA7623004FB6AB /* CallTip.h in Headers */,
 				114B6FBF11FA7623004FB6AB /* Catalogue.h in Headers */,
@@ -826,6 +856,7 @@
 				114B6FC111FA7623004FB6AB /* CharClassify.h in Headers */,
 				114B6FC211FA7623004FB6AB /* ContractionState.h in Headers */,
 				114B6FC311FA7623004FB6AB /* Decoration.h in Headers */,
+				282D4A961F53FE270082E4D3 /* ILoader.h in Headers */,
 				114B6FC411FA7623004FB6AB /* Document.h in Headers */,
 				114B6FC511FA7623004FB6AB /* Editor.h in Headers */,
 				114B6FC611FA7623004FB6AB /* ExternalLexer.h in Headers */,
@@ -865,7 +896,6 @@
 				11FBA39E17817DA00048C071 /* CharacterCategory.h in Headers */,
 				1100F1EC178E393200105727 /* CaseConvert.h in Headers */,
 				1100F1EE178E393200105727 /* CaseFolder.h in Headers */,
-				1100F1EF178E393200105727 /* UnicodeFromUTF8.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -897,7 +927,7 @@
 		0867D690FE84028FC02AAC07 /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 0700;
+				LastUpgradeCheck = 0800;
 			};
 			buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "ScintillaFramework" */;
 			compatibilityVersion = "Xcode 3.2";
@@ -945,6 +975,8 @@
 				2744E5B30FC168C500E85C33 /* PlatCocoa.mm in Sources */,
 				2744E5B50FC168C500E85C33 /* ScintillaCocoa.mm in Sources */,
 				2744E5B60FC168C500E85C33 /* ScintillaView.mm in Sources */,
+				28D191A21DEA72C800159938 /* LexEDIFACT.cxx in Sources */,
+				28BDA1221EFB8F7C00EBD3F3 /* DefaultLexer.cxx in Sources */,
 				114B6F0D11FA7526004FB6AB /* LexAbaqus.cxx in Sources */,
 				114B6F0E11FA7526004FB6AB /* LexAda.cxx in Sources */,
 				28B6470C1B54C0720009DC49 /* LexBatch.cxx in Sources */,
@@ -1001,6 +1033,7 @@
 				114B6F3911FA7526004FB6AB /* LexMySQL.cxx in Sources */,
 				114B6F3A11FA7526004FB6AB /* LexNimrod.cxx in Sources */,
 				114B6F3B11FA7526004FB6AB /* LexNsis.cxx in Sources */,
+				28804B2C1EEE232E00C0D154 /* DBCS.cxx in Sources */,
 				114B6F3C11FA7526004FB6AB /* LexOpal.cxx in Sources */,
 				114B6F3E11FA7526004FB6AB /* LexPascal.cxx in Sources */,
 				28B6470D1B54C0720009DC49 /* LexDiff.cxx in Sources */,
@@ -1086,6 +1119,11 @@
 				11FDD0E017C480D4001541B9 /* LexKVIrc.cxx in Sources */,
 				1160E0381803651C00BCEBCB /* LexRust.cxx in Sources */,
 				11FF3FE21810EB3900E13F13 /* LexDMAP.cxx in Sources */,
+				F437405F9F32C7DEFCA38C11 /* LexIndent.cxx in Sources */,
+				4D0C4365AB6DF998CD48B1FC /* LexLPeg.cxx in Sources */,
+				3D994BD7A5EAC4FA5B3CFBDF /* LexMaxima.cxx in Sources */,
+				FDC7442CAD70B9A67EF1639D /* LexSAS.cxx in Sources */,
+				5F804AA6B60FE695863A39FE /* LexStata.cxx in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1110,6 +1148,7 @@
 				CLANG_CXX_LIBRARY = "libc++";
 				COMBINE_HIDPI_IMAGES = YES;
 				COPY_PHASE_STRIP = NO;
+				DEFINES_MODULE = YES;
 				DYLIB_COMPATIBILITY_VERSION = 1;
 				DYLIB_CURRENT_VERSION = 1;
 				EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = ".bzr *.nib *.lproj *.framework *.gch (*) CVS .svn *.xcodeproj *.xcode *.pbproj *.pbxproj";
@@ -1120,7 +1159,6 @@
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = Scintilla_Prefix.pch;
 				GCC_PREPROCESSOR_DEFINITIONS = (
-					SCI_NAMESPACE,
 					SCI_LEXER,
 				);
 				GCC_WARN_UNINITIALIZED_AUTOS = NO;
@@ -1130,6 +1168,7 @@
 				INFOPLIST_FILE = Info.plist;
 				INSTALL_PATH = "@executable_path/../Frameworks";
 				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				MODULEMAP_FILE = module.modulemap;
 				PRODUCT_BUNDLE_IDENTIFIER = "com.sun.${PRODUCT_NAME:identifier}";
 				PRODUCT_NAME = Scintilla;
 				SKIP_INSTALL = YES;
@@ -1144,6 +1183,7 @@
 				CLANG_CXX_LIBRARY = "libc++";
 				COMBINE_HIDPI_IMAGES = YES;
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				DEFINES_MODULE = YES;
 				DYLIB_COMPATIBILITY_VERSION = 1;
 				DYLIB_CURRENT_VERSION = 1;
 				FRAMEWORK_VERSION = A;
@@ -1151,7 +1191,6 @@
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = Scintilla_Prefix.pch;
 				GCC_PREPROCESSOR_DEFINITIONS = (
-					SCI_NAMESPACE,
 					SCI_LEXER,
 				);
 				GCC_WARN_UNINITIALIZED_AUTOS = NO;
@@ -1161,6 +1200,7 @@
 				INFOPLIST_FILE = Info.plist;
 				INSTALL_PATH = "@executable_path/../Frameworks";
 				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				MODULEMAP_FILE = module.modulemap;
 				PRODUCT_BUNDLE_IDENTIFIER = "com.sun.${PRODUCT_NAME:identifier}";
 				PRODUCT_NAME = Scintilla;
 				SKIP_INSTALL = YES;
@@ -1171,11 +1211,27 @@
 		1DEB91B208733DA50010E9CD /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				ENABLE_TESTABILITY = YES;
 				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_NO_COMMON_BLOCKS = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				HEADER_SEARCH_PATHS = (
 					../../include,
@@ -1191,9 +1247,25 @@
 		1DEB91B308733DA50010E9CD /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				HEADER_SEARCH_PATHS = (
 					../../include,

+ 7 - 0
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "self:ScintillaFramework.xcodeproj">
+   </FileRef>
+</Workspace>

+ 72 - 0
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/xcshareddata/xcschemes/Scintilla.xcscheme

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "0800"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "8DC2EF4F0486A6940098B216"
+               BuildableName = "Scintilla.framework"
+               BlueprintName = "Scintilla"
+               ReferencedContainer = "container:ScintillaFramework.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES">
+      <Testables>
+      </Testables>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </TestAction>
+   <LaunchAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      enableAddressSanitizer = "YES"
+      debugServiceExtension = "internal"
+      allowLocationSimulation = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "8DC2EF4F0486A6940098B216"
+            BuildableName = "Scintilla.framework"
+            BlueprintName = "Scintilla"
+            ReferencedContainer = "container:ScintillaFramework.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Release"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>

+ 10 - 0
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaFramework/module.modulemap

@@ -0,0 +1,10 @@
+framework module Scintilla {
+  umbrella header "ScintillaView.h"
+  module InfoBar {
+    header "InfoBar.h"
+  }
+  // ILexer.h is not included as Swift doesn't yet interoperate with C++
+  exclude header "ILexer.h"
+  export *
+  module * { export * }
+}

+ 0 - 1
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaTest/AppController.h

@@ -16,7 +16,6 @@
   IBOutlet NSBox *mEditHost;
   ScintillaView* mEditor;
   ScintillaView* sciExtra;	// For testing Scintilla tear-down
-  NSString* sql;
 }
 
 - (void) awakeFromNib;

+ 17 - 14
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaTest/AppController.mm

@@ -72,25 +72,30 @@ const char user_keywords[] = // Definition of own keywords, not used by MySQL.
   [mEditor setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable];
   
   // Let's load some text for the editor, as initial content.
-  NSError* error = nil;
+  NSString *sql = [self exampleText];
+
+  [mEditor setString: sql];
+
+  [self setupEditor];
   
-  NSString* path = [[NSBundle mainBundle] pathForResource: @"TestData" 
+  sciExtra = nil;
+}
+
+- (NSString *) exampleText
+{
+  NSError* error = nil;
+
+  NSString* path = [[NSBundle mainBundle] pathForResource: @"TestData"
                                                    ofType: @"sql" inDirectory: nil];
-  
-  sql = [NSString stringWithContentsOfFile: path
+
+  NSString *sql = [NSString stringWithContentsOfFile: path
                                             encoding: NSUTF8StringEncoding
                                                error: &error];
 
-  [sql retain];
-
   if (error && [[error domain] isEqual: NSCocoaErrorDomain])
     NSLog(@"%@", error);
   
-  [mEditor setString: sql];
-
-  [self setupEditor];
-  
-  sciExtra = nil;
+  return sql;
 }
 
 //--------------------------------------------------------------------------------------------------
@@ -104,9 +109,6 @@ const char user_keywords[] = // Definition of own keywords, not used by MySQL.
   [mEditor setGeneralProperty: SCI_SETLEXER parameter: SCLEX_MYSQL value: 0];
   // alternatively: [mEditor setEditorProperty: SCI_SETLEXERLANGUAGE parameter: nil value: (sptr_t) "mysql"];
   
-  // Number of styles we use with this lexer.
-  [mEditor setGeneralProperty: SCI_SETSTYLEBITS value: [mEditor getGeneralProperty: SCI_GETSTYLEBITSNEEDED]];
-  
   // Keywords to highlight. Indices are:
   // 0 - Major keywords (reserved keywords)
   // 1 - Normal keywords (everything not reserved but integral part of the language)
@@ -291,6 +293,7 @@ static const char * box_xpm[] = {
 		sciExtra = [[[ScintillaView alloc] initWithFrame: newFrame] autorelease];
 		[[[mEditHost window]contentView] addSubview: sciExtra];
 		[sciExtra setGeneralProperty: SCI_SETWRAPMODE parameter: SC_WRAP_WORD value: 1];
+		NSString *sql = [self exampleText];
 		[sciExtra setString: sql];
 	}
 }

+ 8 - 14
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaTest/English.lproj/MainMenu.xib

@@ -1,14 +1,15 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9059" systemVersion="15B42" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12120" systemVersion="16E195" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
     <dependencies>
-        <deployment version="1050" identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9059"/>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12120"/>
         <capability name="box content view" minToolsVersion="7.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="NSApplication"/>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
-        <customObject id="-3" userLabel="Application"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <menu title="AMainMenu" systemMenu="main" id="29" userLabel="MainMenu">
             <items>
                 <menuItem title="NewApplication" id="56">
@@ -564,22 +565,17 @@
                 <rect key="frame" x="0.0" y="0.0" width="982" height="692"/>
                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
                 <subviews>
-                    <box autoresizesSubviews="NO" title="Scintilla Editor" borderType="line" id="451">
+                    <box autoresizesSubviews="NO" borderType="line" title="Scintilla Editor" id="451">
                         <rect key="frame" x="17" y="16" width="844" height="606"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <view key="contentView" id="e8h-ir-tqU">
                             <rect key="frame" x="1" y="1" width="842" height="590"/>
                             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                            <animations/>
                         </view>
-                        <animations/>
-                        <color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
-                        <color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
                     </box>
                     <button verticalHuggingPriority="750" id="452">
                         <rect key="frame" x="872" y="12" width="96" height="32"/>
                         <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
-                        <animations/>
                         <buttonCell key="cell" type="push" title="Quit" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="453">
                             <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                             <font key="font" metaFont="system"/>
@@ -588,10 +584,9 @@
                             <action selector="terminate:" target="-3" id="455"/>
                         </connections>
                     </button>
-                    <searchField verticalHuggingPriority="750" id="466">
+                    <searchField wantsLayer="YES" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="466">
                         <rect key="frame" x="20" y="630" width="287" height="22"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
-                        <animations/>
                         <searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" bezelStyle="round" id="467">
                             <font key="font" metaFont="system"/>
                             <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -602,7 +597,6 @@
                         </connections>
                     </searchField>
                 </subviews>
-                <animations/>
             </view>
         </window>
         <customObject id="420" customClass="NSFontManager"/>

+ 7 - 3
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaTest/ScintillaTest.xcodeproj/project.pbxproj

@@ -191,7 +191,7 @@
 		29B97313FDCFA39411CA2CEA /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 0700;
+				LastUpgradeCheck = 0830;
 			};
 			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "ScintillaTest" */;
 			compatibilityVersion = "Xcode 3.2";
@@ -295,7 +295,6 @@
 				GCC_PREFIX_HEADER = ScintillaTest_Prefix.pch;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					SCI_LEXER,
-					SCI_NAMESPACE,
 				);
 				HEADER_SEARCH_PATHS = "";
 				INFOPLIST_FILE = Info.plist;
@@ -321,7 +320,6 @@
 				GCC_PREFIX_HEADER = ScintillaTest_Prefix.pch;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					SCI_LEXER,
-					SCI_NAMESPACE,
 				);
 				HEADER_SEARCH_PATHS = "";
 				INFOPLIST_FILE = Info.plist;
@@ -338,11 +336,14 @@
 		C01FCF4F08A954540054247B /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
 				CLANG_WARN_BOOL_CONVERSION = YES;
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
 				CLANG_WARN_EMPTY_BODY = YES;
 				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
 				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
 				CLANG_WARN_UNREACHABLE_CODE = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -366,11 +367,14 @@
 		C01FCF5008A954540054247B /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
 				CLANG_WARN_BOOL_CONVERSION = YES;
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
 				CLANG_WARN_EMPTY_BODY = YES;
 				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
 				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
 				CLANG_WARN_UNREACHABLE_CODE = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				ENABLE_STRICT_OBJC_MSGSEND = YES;

+ 7 - 0
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaTest/ScintillaTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "self:ScintillaTest.xcodeproj">
+   </FileRef>
+</Workspace>

+ 16 - 59
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaView.h

@@ -23,7 +23,6 @@
 #define WM_COMMAND 1001
 #define WM_NOTIFY 1002
 
-namespace Scintilla {
 /**
  * On the Mac, there is no WM_COMMAND or WM_NOTIFY message that can be sent
  * back to the parent. Therefore, there must be a callback handler that acts
@@ -37,32 +36,16 @@ namespace Scintilla {
  */
 typedef void(*SciNotifyFunc) (intptr_t windowid, unsigned int iMessage, uintptr_t wParam, uintptr_t lParam);
 
-class ScintillaCocoa;
-}
-
-@class ScintillaView;
-
 extern NSString *const SCIUpdateUINotification;
 
 @protocol ScintillaNotificationProtocol
-- (void)notification: (Scintilla::SCNotification*)notification;
+- (void)notification: (SCNotification*)notification;
 @end
 
 /**
  * SCIMarginView draws line numbers and other margins next to the text view.
  */
-@interface SCIMarginView : NSRulerView
-{
-@private
-  int marginWidth;
-  ScintillaView *owner;
-  NSMutableArray *currentCursors;
-}
-
-@property (assign) int marginWidth;
-@property (assign) ScintillaView *owner;
-
-- (id)initWithScrollView:(NSScrollView *)aScrollView;
+@interface SCIMarginView : NSRulerView;
 
 @end
 
@@ -74,49 +57,20 @@ extern NSString *const SCIUpdateUINotification;
   NSTextInputClient,
   NSUserInterfaceValidations,
   NSDraggingSource,
-  NSDraggingDestination>
-{
-@private
-  ScintillaView* mOwner;
-  NSCursor* mCurrentCursor;
-  NSTrackingArea *trackingArea;
+  NSDraggingDestination,
+  NSAccessibilityStaticText>;
 
-  // Set when we are in composition mode and partial input is displayed.
-  NSRange mMarkedTextRange;
-}
-
-@property (nonatomic, assign) ScintillaView* owner;
-
-- (void) setCursor: (int) cursor;
-
-- (BOOL) canUndo;
-- (BOOL) canRedo;
+- (void) setCursor: (int) cursor; // Needed by ScintillaCocoa
 
 @end
 
-@interface ScintillaView : NSView <InfoBarCommunicator, ScintillaNotificationProtocol>
-{
-@private
-  // The back end is kind of a controller and model in one.
-  // It uses the content view for display.
-  Scintilla::ScintillaCocoa* mBackend;
-
-  // This is the actual content to which the backend renders itself.
-  SCIContentView* mContent;
-
-  NSScrollView *scrollView;
-  SCIMarginView *marginView;
-
-  CGFloat zoomDelta;
-
-  // Area to display additional controls (e.g. zoom info, caret position, status info).
-  NSView <InfoBarCommunicator>* mInfoBar;
-  BOOL mInfoBarAtTop;
-
-  id<ScintillaNotificationProtocol> mDelegate;
-}
+/**
+ * ScintillaView is the class instantiated by client code.
+ * It contains an NSScrollView which contains a SCIMarginView and a SCIContentView.
+ * It is responsible for providing an API and communicating to a delegate.
+ */
+@interface ScintillaView : NSView <InfoBarCommunicator, ScintillaNotificationProtocol>;
 
-@property (nonatomic, readonly) Scintilla::ScintillaCocoa* backend;
 @property (nonatomic, assign) id<ScintillaNotificationProtocol> delegate;
 @property (nonatomic, readonly) NSScrollView *scrollView;
 
@@ -127,7 +81,9 @@ extern NSString *const SCIUpdateUINotification;
 - (void) setCallback: (id <InfoBarCommunicator>) callback;
 
 - (void) suspendDrawing: (BOOL) suspend;
-- (void) notification: (Scintilla::SCNotification*) notification;
+- (void) notification: (SCNotification*) notification;
+
+- (void) updateIndicatorIME;
 
 // Scroller handling
 - (void) setMarginWidth: (int) width;
@@ -141,6 +97,7 @@ extern NSString *const SCIUpdateUINotification;
 - (void) setEditable: (BOOL) editable;
 - (BOOL) isEditable;
 - (NSRange) selectedRange;
+- (NSRange) selectedRangePositions;
 
 - (NSString*) selectedString;
 
@@ -177,7 +134,7 @@ extern NSString *const SCIUpdateUINotification;
 - (NSString*) getLexerProperty: (NSString*) name;
 
 // The delegate property should be used instead of registerNotifyCallback which is deprecated.
-- (void) registerNotifyCallback: (intptr_t) windowid value: (Scintilla::SciNotifyFunc) callback __attribute__((deprecated));
+- (void) registerNotifyCallback: (intptr_t) windowid value: (SciNotifyFunc) callback __attribute__((deprecated));
 
 - (void) setInfoBar: (NSView <InfoBarCommunicator>*) aView top: (BOOL) top;
 - (void) setStatusText: (NSString*) text;

+ 406 - 36
maxguitextareascintilla.mod/scintilla/cocoa/ScintillaView.mm

@@ -9,12 +9,20 @@
  * This file is dual licensed under LGPL v2.1 and the Scintilla license (http://www.scintilla.org/License.txt).
  */
 
+#include <vector>
+
 #import "Platform.h"
 #import "ScintillaView.h"
 #import "ScintillaCocoa.h"
 
 using namespace Scintilla;
 
+// Add backend property to ScintillaView as a private category.
+// Specified here as backend accessed by SCIMarginView and SCIContentView.
+@interface ScintillaView ()
+@property (nonatomic, readonly) Scintilla::ScintillaCocoa* backend;
+@end
+
 // Two additional cursors we need, which aren't provided by Cocoa.
 static NSCursor* reverseArrowCursor;
 static NSCursor* waitCursor;
@@ -46,8 +54,17 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
   }
 }
 
+// Add marginWidth and owner properties as a private category.
+@interface SCIMarginView ()
+@property (assign) int marginWidth;
+@property (nonatomic, assign) ScintillaView* owner;
+@end
 
-@implementation SCIMarginView
+@implementation SCIMarginView {
+  int marginWidth;
+  ScintillaView *owner;
+  NSMutableArray *currentCursors;
+}
 
 @synthesize marginWidth, owner;
 
@@ -64,6 +81,8 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
       [currentCursors addObject: [reverseArrowCursor retain]];
     }
     [self setClientView:[aScrollView documentView]];
+    if ([self respondsToSelector: @selector(setAccessibilityLabel:)])
+       self.accessibilityLabel = @"Scintilla Margin";
   }
   return self;
 }
@@ -100,6 +119,21 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
   }
 }
 
+/**
+ * Called by the framework if it wants to show a context menu for the margin.
+ */
+- (NSMenu*) menuForEvent: (NSEvent*) theEvent
+{
+  NSMenu *menu = [owner menuForEvent: theEvent];
+  if (menu) {
+    return menu;
+  } else if (owner.backend->ShouldDisplayPopupOnMargin()) {
+    return owner.backend->CreateContextMenu(theEvent);
+  } else {
+    return nil;
+  }
+}
+
 - (void) mouseDown: (NSEvent *) theEvent
 {
   NSClipView *textView = [[self scrollView] contentView];
@@ -107,6 +141,13 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
   owner.backend->MouseDown(theEvent);
 }
 
+- (void) rightMouseDown: (NSEvent *) theEvent
+{
+  [NSMenu popUpContextMenu:[self menuForEvent: theEvent] withEvent:theEvent forView:self];
+
+  owner.backend->RightMouseDown(theEvent);
+}
+
 - (void) mouseDragged: (NSEvent *) theEvent
 {
   owner.backend->MouseMove(theEvent);
@@ -122,6 +163,12 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
   owner.backend->MouseUp(theEvent);
 }
 
+// Not a simple button so return failure
+- (BOOL)accessibilityPerformPress
+{
+  return NO;
+}
+
 /**
  * This method is called to give us the opportunity to define our mouse sensitive rectangle.
  */
@@ -148,7 +195,19 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
 
 @end
 
-@implementation SCIContentView
+// Add owner property as a private category.
+@interface SCIContentView ()
+@property (nonatomic, assign) ScintillaView* owner;
+@end
+
+@implementation SCIContentView {
+  ScintillaView* mOwner;
+  NSCursor* mCurrentCursor;
+  NSTrackingArea *trackingArea;
+
+  // Set when we are in composition mode and partial input is displayed.
+  NSRange mMarkedTextRange;
+}
 
 @synthesize owner = mOwner;
 
@@ -167,6 +226,17 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
 
     [self registerForDraggedTypes: [NSArray arrayWithObjects:
                                    NSStringPboardType, ScintillaRecPboardType, NSFilenamesPboardType, nil]];
+
+    // Set up accessibility in the text role
+    if ([self respondsToSelector: @selector(setAccessibilityElement:)])
+    {
+       self.accessibilityElement = TRUE;
+       self.accessibilityEnabled = TRUE;
+       self.accessibilityLabel = NSLocalizedString(@"Scintilla", nil);	// No real localization
+       self.accessibilityRoleDescription = @"source code editor";
+       self.accessibilityRole = NSAccessibilityTextAreaRole;
+       self.accessibilityIdentifier = @"Scintilla";
+    }
   }
 
   return self;
@@ -180,7 +250,10 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
 - (void) updateTrackingAreas
 {
   if (trackingArea)
+  {
     [self removeTrackingArea:trackingArea];
+    [trackingArea release];
+  }
 
   int opts = (NSTrackingActiveAlways | NSTrackingInVisibleRect | NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved);
   trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds]
@@ -230,7 +303,8 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
   [super resetCursorRects];
 
   // We only have one cursor rect: our bounds.
-  [self addCursorRect: [self bounds] cursor: mCurrentCursor];
+  const NSRect visibleBounds = mOwner.backend->GetBounds();
+  [self addCursorRect: visibleBounds cursor: mCurrentCursor];
   [mCurrentCursor setOnMouseEntered: YES];
 }
 
@@ -338,10 +412,14 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
  */
 - (NSMenu*) menuForEvent: (NSEvent*) theEvent
 {
-  if (![mOwner respondsToSelector: @selector(menuForEvent:)])
+  NSMenu *menu = [mOwner menuForEvent: theEvent];
+  if (menu) {
+    return menu;
+  } else if (mOwner.backend->ShouldDisplayPopupOnText()) {
     return mOwner.backend->CreateContextMenu(theEvent);
-  else
-    return [mOwner menuForEvent: theEvent];
+  } else {
+    return nil;
+  }
 }
 
 //--------------------------------------------------------------------------------------------------
@@ -350,6 +428,10 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
 
 - (NSAttributedString *)attributedSubstringForProposedRange:(NSRange)aRange actualRange:(NSRangePointer)actualRange
 {
+  const NSInteger lengthCharacters = self.accessibilityNumberOfCharacters;
+  if (aRange.location > lengthCharacters) {
+    return nil;
+  }
   const NSRange posRange = mOwner.backend->PositionsFromCharacters(aRange);
   // The backend validated aRange and may have removed characters beyond the end of the document.
   const NSRange charRange = mOwner.backend->CharactersFromPositions(posRange);
@@ -361,11 +443,14 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
   [mOwner message: SCI_SETTARGETRANGE wParam: posRange.location lParam: NSMaxRange(posRange)];
   std::string text([mOwner message: SCI_TARGETASUTF8] + 1, 0);
   [mOwner message: SCI_TARGETASUTF8 wParam: 0 lParam: reinterpret_cast<sptr_t>(&text[0])];
+  text = FixInvalidUTF8(text);
   NSString *result = [NSString stringWithUTF8String: text.c_str()];
   NSMutableAttributedString *asResult = [[[NSMutableAttributedString alloc] initWithString:result] autorelease];
 
   const NSRange rangeAS = NSMakeRange(0, [asResult length]);
-  const long style = [mOwner message: SCI_GETSTYLEAT wParam:posRange.location];
+  // SCI_GETSTYLEAT reports a signed byte but want an unsigned to index into styles
+  const char styleByte = static_cast<char>([mOwner message: SCI_GETSTYLEAT wParam:posRange.location]);
+  const long style = static_cast<unsigned char>(styleByte);
   std::string fontName([mOwner message: SCI_STYLEGETFONT wParam:style lParam:0] + 1, 0);
   [mOwner message: SCI_STYLEGETFONT wParam:style lParam:(sptr_t)&fontName[0]];
   const CGFloat fontSize = [mOwner message: SCI_STYLEGETSIZEFRACTIONAL wParam:style] / 100.0f;
@@ -402,7 +487,7 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
 
 - (void) doCommandBySelector: (SEL) selector
 {
-  if ([self respondsToSelector: @selector(selector)])
+  if ([self respondsToSelector: selector])
     [self performSelector: selector withObject: nil];
 }
 
@@ -490,9 +575,21 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
 
 - (NSRange) selectedRange
 {
-  const long positionBegin = [mOwner message: SCI_GETSELECTIONSTART];
-  const long positionEnd = [mOwner message: SCI_GETSELECTIONEND];
-  NSRange posRangeSel = NSMakeRange(positionBegin, positionEnd-positionBegin);
+  const NSRange posRangeSel = [mOwner selectedRangePositions];
+  if (posRangeSel.length == 0)
+  {
+    NSTextInputContext *tic = [NSTextInputContext currentInputContext];
+    // Chinese input causes malloc crash when empty selection returned with actual
+    // position so return NSNotFound.
+    // If this is applied to European input, it stops the accented character
+    // chooser from appearing.
+    // May need to add more input source names.
+    if ([tic.selectedKeyboardInputSource
+         isEqualToString:@"com.apple.inputmethod.TCIM.Cangjie"])
+    {
+      return NSMakeRange(NSNotFound, 0);
+    }
+  }
   return mOwner.backend->CharactersFromPositions(posRangeSel);
 }
 
@@ -556,7 +653,8 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
       }
       // Ensure only a single selection.
       mOwner.backend->SelectOnlyMainSelection();
-      replacementRange = [self selectedRange];
+      const NSRange posRangeSel = [mOwner selectedRangePositions];
+      replacementRange = mOwner.backend->CharactersFromPositions(posRangeSel);
     }
   }
 
@@ -572,7 +670,7 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
     NSRange posRangeCurrent = mOwner.backend->PositionsFromCharacters(NSMakeRange(replacementRange.location, 0));
     // Note: Scintilla internally works almost always with bytes instead chars, so we need to take
     //       this into account when determining selection ranges and such.
-    int lengthInserted = mOwner.backend->InsertText(newText);
+    ptrdiff_t lengthInserted = mOwner.backend->InsertText(newText);
     posRangeCurrent.length = lengthInserted;
     mMarkedTextRange = mOwner.backend->CharactersFromPositions(posRangeCurrent);
     // Mark the just inserted text. Keep the marked range for later reset.
@@ -613,7 +711,7 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
 
 - (NSArray*) validAttributesForMarkedText
 {
-  return nil;
+  return @[];
 }
 
 // End of the NSTextInputClient protocol adoption.
@@ -627,10 +725,13 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
  */
 - (void) keyDown: (NSEvent *) theEvent
 {
+  bool handled = false;
   if (mMarkedTextRange.length == 0)
-	mOwner.backend->KeyboardInput(theEvent);
-  NSArray* events = [NSArray arrayWithObject: theEvent];
-  [self interpretKeyEvents: events];
+	handled = mOwner.backend->KeyboardInput(theEvent);
+  if (!handled) {
+    NSArray* events = [NSArray arrayWithObject: theEvent];
+    [self interpretKeyEvents: events];
+  }
 }
 
 //--------------------------------------------------------------------------------------------------
@@ -678,21 +779,21 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
 //--------------------------------------------------------------------------------------------------
 
 /**
- * Mouse wheel with command key magnifies text.
- * Enabling this code causes visual garbage to appear when scrolling
- * horizontally on OS X 10.9 with a retina display.
- * Pinch gestures and key commands can be used for magnification.
+ * Implementing scrollWheel makes scrolling work better even if just
+ * calling super.
+ * Mouse wheel with command key may magnify text if enabled.
+ * Pinch gestures and key commands can also be used for magnification.
  */
-#ifdef SCROLL_WHEEL_MAGNIFICATION
 - (void) scrollWheel: (NSEvent *) theEvent
 {
+#ifdef SCROLL_WHEEL_MAGNIFICATION
   if (([theEvent modifierFlags] & NSCommandKeyMask) != 0) {
     mOwner.backend->MouseWheel(theEvent);
-  } else {
-    [super scrollWheel:theEvent];
+    return;
   }
-}
 #endif
+  [super scrollWheel:theEvent];
+}
 
 //--------------------------------------------------------------------------------------------------
 
@@ -712,6 +813,13 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
     long lineHeight = mOwner.backend->WndProc(SCI_TEXTHEIGHT, 0, 0);
     rc.origin.y = roundf(static_cast<XYPOSITION>(rc.origin.y) / lineHeight) * lineHeight;
   }
+	// Snap to whole points - on retina displays this avoids visual debris
+	// when scrolling horizontally.
+	if ((rc.origin.x > 0) && (NSMaxX(rc) < contentRect.size.width)) {
+		// Only snap for positions inside the document - allow outside
+		// for overshoot.
+		rc.origin.x = roundf(static_cast<XYPOSITION>(rc.origin.x));
+	}
   return rc;
 }
 
@@ -931,11 +1039,228 @@ sourceOperationMaskForDraggingContext: (NSDraggingContext) context
   return mOwner.backend->WndProc(SCI_GETREADONLY, 0, 0) == 0;
 }
 
+#pragma mark - NSAccessibility
+
+//--------------------------------------------------------------------------------------------------
+
+// Adoption of NSAccessibility protocol.
+// NSAccessibility wants to pass ranges in UTF-16 code units, not bytes (like Scintilla)
+// or characters.
+// Needs more testing with non-ASCII and non-BMP text.
+// Needs to take account of folding and wraping.
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : Text of the whole document as a string.
+ */
+- (id) accessibilityValue {
+  const sptr_t length = [mOwner message: SCI_GETLENGTH];
+  return mOwner.backend->RangeTextAsString(NSMakeRange(0, length));
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : Line of the caret.
+ */
+- (NSInteger) accessibilityInsertionPointLineNumber {
+  const Sci::Position caret = [mOwner message: SCI_GETCURRENTPOS];
+  const NSRange rangeCharactersCaret = mOwner.backend->CharactersFromPositions(NSMakeRange(caret, 0));
+  return mOwner.backend->VisibleLineForIndex(rangeCharactersCaret.location);
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : Not implemented and not called by VoiceOver.
+ */
+- (NSRange)accessibilityRangeForPosition:(NSPoint)point {
+  return NSMakeRange(0,0);
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : Number of characters in the whole document.
+ */
+- (NSInteger) accessibilityNumberOfCharacters {
+  sptr_t length = [mOwner message: SCI_GETLENGTH];
+  const NSRange posRange = mOwner.backend->CharactersFromPositions(NSMakeRange(length, 0));
+  return posRange.location;
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : The selection text as a string.
+ */
+- (NSString *) accessibilitySelectedText {
+  const sptr_t positionBegin = [mOwner message: SCI_GETSELECTIONSTART];
+  const sptr_t positionEnd = [mOwner message: SCI_GETSELECTIONEND];
+  const NSRange posRangeSel = NSMakeRange(positionBegin, positionEnd-positionBegin);
+  return mOwner.backend->RangeTextAsString(posRangeSel);
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : The character range of the main selection.
+ */
+- (NSRange) accessibilitySelectedTextRange {
+  const sptr_t positionBegin = [mOwner message: SCI_GETSELECTIONSTART];
+  const sptr_t positionEnd = [mOwner message: SCI_GETSELECTIONEND];
+  const NSRange posRangeSel = NSMakeRange(positionBegin, positionEnd-positionBegin);
+  return mOwner.backend->CharactersFromPositions(posRangeSel);
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : The setter for accessibilitySelectedTextRange.
+ * This method is the only setter required for reasonable VoiceOver behaviour.
+ */
+- (void) setAccessibilitySelectedTextRange: (NSRange) range {
+  NSRange rangePositions = mOwner.backend->PositionsFromCharacters(range);
+  [mOwner message: SCI_SETSELECTION wParam: rangePositions.location lParam:NSMaxRange(rangePositions)];
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : Range of the glyph at a character index.
+ * Currently doesn't try to handle composite characters.
+ */
+- (NSRange) accessibilityRangeForIndex: (NSInteger)index {
+  sptr_t length = [mOwner message: SCI_GETLENGTH];
+  const NSRange rangeLength = mOwner.backend->CharactersFromPositions(NSMakeRange(length, 0));
+  NSRange rangePositions = NSMakeRange(length, 0);
+  if (index < rangeLength.location) {
+    rangePositions = mOwner.backend->PositionsFromCharacters(NSMakeRange(index, 1));
+  }
+  return mOwner.backend->CharactersFromPositions(rangePositions);
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : All the text ranges.
+ * Currently only returns the main selection.
+ */
+- (NSArray<NSValue *>*) accessibilitySelectedTextRanges {
+  const sptr_t positionBegin = [mOwner message: SCI_GETSELECTIONSTART];
+  const sptr_t positionEnd = [mOwner message: SCI_GETSELECTIONEND];
+  const NSRange posRangeSel = NSMakeRange(positionBegin, positionEnd-positionBegin);
+  NSRange rangeCharacters = mOwner.backend->CharactersFromPositions(posRangeSel);
+  NSValue *valueRange = [NSValue valueWithRange:(NSRange)rangeCharacters];
+  return @[valueRange];
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : Character range currently visible.
+ */
+- (NSRange) accessibilityVisibleCharacterRange {
+  const sptr_t lineTopVisible = [mOwner message: SCI_GETFIRSTVISIBLELINE];
+  const sptr_t lineTop = [mOwner message:SCI_DOCLINEFROMVISIBLE wParam:lineTopVisible];
+  const sptr_t lineEndVisible = lineTopVisible + [mOwner message: SCI_LINESONSCREEN] - 1;
+  const sptr_t lineEnd = [mOwner message:SCI_DOCLINEFROMVISIBLE wParam:lineEndVisible];
+  const sptr_t posStartView = [mOwner message: SCI_POSITIONFROMLINE wParam: lineTop];
+  const sptr_t posEndView = [mOwner message: SCI_GETLINEENDPOSITION wParam: lineEnd];
+  const NSRange posRangeSel = NSMakeRange(posStartView, posEndView-posStartView);
+  return mOwner.backend->CharactersFromPositions(posRangeSel);
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : Character range of a line.
+ */
+- (NSRange)accessibilityRangeForLine:(NSInteger)line {
+  return mOwner.backend->RangeForVisibleLine(line);
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : Line number of a text position in characters.
+ */
+- (NSInteger)accessibilityLineForIndex:(NSInteger)index {
+  return mOwner.backend->VisibleLineForIndex(index);
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : A rectangle that covers a range which will be shown as the
+ * VoiceOver cursor.
+ * Producing a nice rectangle is a little tricky particularly when including new
+ * lines. Needs to improve the case where parts of two lines are included.
+ */
+- (NSRect)accessibilityFrameForRange:(NSRange)range {
+  const NSRect rectInView = mOwner.backend->FrameForRange(range);
+  const NSRect rectInWindow = [[[self superview] superview] convertRect:rectInView toView:nil];
+  return [self.window convertRectToScreen:rectInWindow];
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : A range of text as a string.
+ */
+- (NSString *) accessibilityStringForRange:(NSRange)range {
+  const NSRange posRange = mOwner.backend->PositionsFromCharacters(range);
+  return mOwner.backend->RangeTextAsString(posRange);
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : A range of text as an attributed string.
+ * Currently no attributes are set.
+ */
+- (NSAttributedString *) accessibilityAttributedStringForRange:(NSRange)range {
+  const NSRange posRange = mOwner.backend->PositionsFromCharacters(range);
+  NSString *result = mOwner.backend->RangeTextAsString(posRange);
+  return [[[NSMutableAttributedString alloc] initWithString:result] autorelease];
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * NSAccessibility : Show the context menu at the caret.
+ */
+- (BOOL)accessibilityPerformShowMenu {
+  const sptr_t caret = [mOwner message: SCI_GETCURRENTPOS];
+  NSRect rect;
+  rect.origin.x = [mOwner message: SCI_POINTXFROMPOSITION wParam: 0 lParam: caret];
+  rect.origin.y = [mOwner message: SCI_POINTYFROMPOSITION wParam: 0 lParam: caret];
+  rect.origin.y += [mOwner message: SCI_TEXTHEIGHT wParam: 0 lParam: 0];
+  rect.size.width = 1.0;
+  rect.size.height = 1.0;
+  NSRect rectInWindow = [[[self superview] superview] convertRect:rect toView:nil];
+  NSPoint pt = rectInWindow.origin;
+  NSEvent *event = [NSEvent mouseEventWithType: NSRightMouseDown
+				      location: pt
+				 modifierFlags: 0
+				     timestamp: 0
+				  windowNumber: [[self window] windowNumber]
+				       context: nil
+				   eventNumber: 0
+				    clickCount: 1
+				      pressure: 0.0];
+  NSMenu *menu = mOwner.backend->CreateContextMenu(event);
+  [NSMenu popUpContextMenu:menu withEvent:event forView:self];
+  return YES;
+}
+
 //--------------------------------------------------------------------------------------------------
 
 - (void) dealloc
 {
   [mCurrentCursor release];
+  [trackingArea release];
   [super dealloc];
 }
 
@@ -943,7 +1268,25 @@ sourceOperationMaskForDraggingContext: (NSDraggingContext) context
 
 //--------------------------------------------------------------------------------------------------
 
-@implementation ScintillaView
+@implementation ScintillaView {
+  // The back end is kind of a controller and model in one.
+  // It uses the content view for display.
+  Scintilla::ScintillaCocoa* mBackend;
+
+  // This is the actual content to which the backend renders itself.
+  SCIContentView* mContent;
+
+  NSScrollView *scrollView;
+  SCIMarginView *marginView;
+
+  CGFloat zoomDelta;
+
+  // Area to display additional controls (e.g. zoom info, caret position, status info).
+  NSView <InfoBarCommunicator>* mInfoBar;
+  BOOL mInfoBarAtTop;
+
+  id<ScintillaNotificationProtocol> mDelegate;
+}
 
 @synthesize backend = mBackend;
 @synthesize delegate = mDelegate;
@@ -972,7 +1315,7 @@ sourceOperationMaskForDraggingContext: (NSDraggingContext) context
 
     path = [bundle pathForResource: @"mac_cursor_flipped" ofType: @"tiff" inDirectory: nil];
     image = [[[NSImage alloc] initWithContentsOfFile: path] autorelease];
-    reverseArrowCursor = [[NSCursor alloc] initWithImage: image hotSpot: NSMakePoint(12, 2)];
+    reverseArrowCursor = [[NSCursor alloc] initWithImage: image hotSpot: NSMakePoint(15, 2)];
   }
 }
 
@@ -1084,7 +1427,7 @@ sourceOperationMaskForDraggingContext: (NSDraggingContext) context
  * A delegate can be set to receive all notifications. If set no handling takes place here, except
  * for action pertaining to internal stuff (like the info bar).
  */
-- (void) notification: (Scintilla::SCNotification*)scn
+- (void) notification: (SCNotification*)scn
 {
   // Parent notification. Details are passed as SCNotification structure.
 
@@ -1147,6 +1490,21 @@ sourceOperationMaskForDraggingContext: (NSDraggingContext) context
 
 //--------------------------------------------------------------------------------------------------
 
+/**
+ * Setup a special indicator used in the editor to provide visual feedback for
+ * input composition, depending on language, keyboard etc.
+ */
+- (void) updateIndicatorIME
+{
+  [self setColorProperty: SCI_INDICSETFORE parameter: INDIC_IME fromHTML: @"#FF0000"];
+  const bool drawInBackground = [self message: SCI_GETPHASESDRAW] != 0;
+  [self setGeneralProperty: SCI_INDICSETUNDER parameter: INDIC_IME value: drawInBackground];
+  [self setGeneralProperty: SCI_INDICSETSTYLE parameter: INDIC_IME value: INDIC_PLAIN];
+  [self setGeneralProperty: SCI_INDICSETALPHA parameter: INDIC_IME value: 100];
+}
+
+//--------------------------------------------------------------------------------------------------
+
 /**
  * Initialization of the view. Used to setup a few other things we need.
  */
@@ -1180,18 +1538,13 @@ sourceOperationMaskForDraggingContext: (NSDraggingContext) context
     [scrollView setHasVerticalRuler:YES];
     [scrollView setRulersVisible:YES];
 
-    mBackend = new ScintillaCocoa(mContent, marginView);
+    mBackend = new ScintillaCocoa(self, mContent, marginView);
 
     // Establish a connection from the back end to this container so we can handle situations
     // which require our attention.
     mBackend->SetDelegate(self);
 
-    // Setup a special indicator used in the editor to provide visual feedback for
-    // input composition, depending on language, keyboard etc.
-    [self setColorProperty: SCI_INDICSETFORE parameter: INDIC_IME fromHTML: @"#FF0000"];
-    [self setGeneralProperty: SCI_INDICSETUNDER parameter: INDIC_IME value: 1];
-    [self setGeneralProperty: SCI_INDICSETSTYLE parameter: INDIC_IME value: INDIC_PLAIN];
-    [self setGeneralProperty: SCI_INDICSETALPHA parameter: INDIC_IME value: 100];
+    [self updateIndicatorIME];
 
     NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
     [center addObserver:self
@@ -1223,9 +1576,11 @@ sourceOperationMaskForDraggingContext: (NSDraggingContext) context
 - (void) dealloc
 {
   [[NSNotificationCenter defaultCenter] removeObserver:self];
+  mBackend->Finalise();
   delete mBackend;
   mBackend = NULL;
   mContent.owner = nil;
+  [marginView setClientView:nil];
   [scrollView removeFromSuperview];
   [marginView release];
   [super dealloc];
@@ -1711,7 +2066,7 @@ sourceOperationMaskForDraggingContext: (NSDraggingContext) context
 /**
  * Sets the notification callback
  */
-- (void) registerNotifyCallback: (intptr_t) windowid value: (Scintilla::SciNotifyFunc) callback
+- (void) registerNotifyCallback: (intptr_t) windowid value: (SciNotifyFunc) callback
 {
 	mBackend->RegisterNotifyCallback(windowid, callback);
 }
@@ -1760,6 +2115,21 @@ sourceOperationMaskForDraggingContext: (NSDraggingContext) context
   return [mContent selectedRange];
 }
 
+//--------------------------------------------------------------------------------------------------
+
+/**
+ * Return the main selection as an NSRange of positions (not characters).
+ * Unlike selectedRange, this can return empty ranges inside the document.
+ */
+
+- (NSRange) selectedRangePositions
+{
+  const sptr_t positionBegin = [self message: SCI_GETSELECTIONSTART];
+  const sptr_t positionEnd = [self message: SCI_GETSELECTIONEND];
+  return NSMakeRange(positionBegin, positionEnd-positionBegin);
+}
+
+
 //--------------------------------------------------------------------------------------------------
 
 - (void)insertText: (id) aString

+ 25 - 2
maxguitextareascintilla.mod/scintilla/cppcheck.suppress

@@ -5,13 +5,26 @@
 // members to initialize or the initialization is complex or has comments.
 useInitializationList
 
+// These may be interesting but its not clear without examining each instance closely
+// Would have to ensure that any_of/all_of has same early/late exits as current code and
+// produces same result on empty collections
+useStlAlgorithm
+
 // Some non-explicit constructors are used for conversions or are private to lexers
 noExplicitConstructor
 
-// cppcheck does not understand private methods can be called from static methods
-unusedPrivateFunction:scintilla/win32/PlatWin.cxx
+// Document is checking for a change by called methods and cppcheck isn't considering escape
+knownConditionTrueFalse:scintilla/src/Document.cxx
+
+// ScintillaDocument is providing an API and there are no consumers of the API inside Scintilla
+unusedFunction:scintilla/qt/ScintillaEdit/ScintillaDocument.cpp
+
+// The performance cost of by-value passing is often small and using a reference decreases
+// code legibility.
+passedByValue
 
 // Suppress most lexer warnings since the lexers are maintained by others
+redundantCondition:scintilla/lexers/LexA68k.cxx
 useInitializationList:scintilla/lexers/LexAsm.cxx
 useInitializationList:scintilla/lexers/LexBasic.cxx
 uninitMemberVar:scintilla/lexers/LexBash.cxx
@@ -20,23 +33,33 @@ variableScope:scintilla/lexers/LexBatch.cxx
 variableScope:scintilla/lexers/LexCmake.cxx
 variableScope:scintilla/lexers/LexCSS.cxx
 useInitializationList:scintilla/lexers/LexD.cxx
+unreadVariable:scintilla/lexers/LexDMAP.cxx
 variableScope:scintilla/lexers/LexErlang.cxx
 variableScope:scintilla/lexers/LexGui4Cli.cxx
 variableScope:scintilla/lexers/LexInno.cxx
 variableScope:scintilla/lexers/LexLaTeX.cxx
+copyCtorAndEqOperator:scintilla/lexers/LexLaTeX.cxx
 variableScope:scintilla/lexers/LexMetapost.cxx
 variableScope:scintilla/lexers/LexModula.cxx
+variableScope:scintilla/lexers/LexMSSQL.cxx
 variableScope:scintilla/lexers/LexNimrod.cxx
 variableScope:scintilla/lexers/LexNsis.cxx
 variableScope:scintilla/lexers/LexOpal.cxx
 variableScope:scintilla/lexers/LexPB.cxx
+variableScope:scintilla/lexers/LexProgress.cxx
 variableScope:scintilla/lexers/LexRuby.cxx
 uninitMemberVar:scintilla/lexers/LexRuby.cxx
 variableScope:scintilla/lexers/LexSpecman.cxx
 clarifyCalculation:scintilla/lexers/LexTADS3.cxx
 invalidscanf:scintilla/lexers/LexTCMD.cxx
+knownConditionTrueFalse:scintilla/lexers/LexTCMD.cxx
 variableScope:scintilla/lexers/LexTeX.cxx
+knownConditionTrueFalse:scintilla/lexers/LexVerilog.cxx
 variableScope:scintilla/lexers/LexVHDL.cxx
+unreadVariable:scintilla/lexers/LexVisualProlog.cxx
 
 // Suppress everything in catch.hpp as won't be changing
 *:scintilla/test/unit/catch.hpp
+// For now, suppress all test source files as, since Catch 2, cppcheck shows many warnings showing
+// it doesn't understand the REQUIRE macro
+*:scintilla/test/unit/*.cxx

+ 52 - 0
maxguitextareascintilla.mod/scintilla/curses/Makefile

@@ -0,0 +1,52 @@
+# Copyright 2012-2018 Mitchell mitchell.att.foicica.com. See License.txt.
+
+.SUFFIXES: .cxx .c .o .h .a
+
+AR = ar
+CC = gcc
+CXX = g++
+INCLUDEDIRS = -I ../include -I ../src -I ../lexlib
+CFLAGS = -std=c99 -pedantic -Wall
+CXXFLAGS = -std=c++11 -pedantic -DCURSES -DSCI_LEXER $(INCLUDEDIRS) -Wall
+ifdef DEBUG
+  CXXFLAGS += -DDEBUG -g
+else
+  CXXFLAGS += -DNDEBUG -Os
+endif
+CURSES_FLAGS =
+
+scintilla = ../bin/scintilla.a
+sci = AutoComplete.o CallTip.o CaseConvert.o CaseFolder.o Catalogue.o \
+      CellBuffer.o CharacterCategory.o CharClassify.o ContractionState.o \
+      DBCS.o Decoration.o Document.o EditModel.o Editor.o EditView.o \
+      ExternalLexer.o Indicator.o KeyMap.o LineMarker.o MarginView.o PerLine.o \
+      PositionCache.o RESearch.o RunStyles.o ScintillaBase.o Selection.o \
+      Style.o UniConversion.o ViewStyle.o XPM.o \
+      Accessor.o CharacterSet.o DefaultLexer.o LexerBase.o LexerModule.o \
+      LexerNoExceptions.o LexerSimple.o PropSetSimple.o StyleContext.o \
+      WordList.o
+lexers = $(addsuffix .o,$(basename $(sort $(notdir $(wildcard ../lexers/Lex*.cxx)))))
+ifdef LPEG_LEXER
+  CXXFLAGS += -DLPEG_LEXER -I ../lua/src
+  LUA_CFLAGS = -I ../lua/src -DLUA_USE_POSIX -DLUA_USE_DLOPEN
+  lua = lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o linit.o \
+        llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o \
+        ltable.o ltm.o lundump.o lvm.o lzio.o \
+        lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o \
+        loadlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o \
+        lpcap.o lpcode.o lpprint.o lptree.o lpvm.o
+endif
+
+vpath %.h ../src ../include ../lexlib
+vpath %.cxx ../src ../lexlib ../lexers
+
+all: $(scintilla)
+$(sci) $(lexers) ScintillaCurses.o: %.o: %.cxx
+	$(CXX) $(CXXFLAGS) $(CURSES_FLAGS) -c $<
+$(lua): %.o: ../lua/src/%.c
+	$(CC) $(CFLAGS) $(LUA_CFLAGS) -c $<
+$(scintilla): $(sci) $(lexers) $(lua) ScintillaCurses.o
+	$(AR) rc $@ $^
+	touch $@
+clean:
+	rm -f *.o $(scintilla)

+ 78 - 0
maxguitextareascintilla.mod/scintilla/curses/README.md

@@ -0,0 +1,78 @@
+# Scintilla curses
+
+## Overview
+
+This is an implementation of [Scintilla][] for curses platforms including:
+
+* [ncurses][]
+* [PDCurses][]
+* X/Open Curses
+
+[Scintilla]: http://scintilla.org
+[ncurses]: http://invisible-island.net/ncurses/
+[PDCurses]: http://pdcurses.sourceforge.net/
+
+## Compiling
+
+Simply run `make` to build the usual `../bin/scintilla.a`.
+
+## Usage
+
+It is highly recommended to use Scintilla curses in a UTF-8-aware terminal with
+a font that supports many UTF-8 characters ("DejaVu Sans Mono" is one of them)
+because Scintilla curses makes use of UTF-8 characters when drawing wrap
+symbols, some marker symbols, and call tip arrows.
+
+Note: `setlocale(LC_CTYPE, "")` must be called before initializing curses in
+order to display UTF-8 characters properly in ncursesw.
+
+## Curses Compatibility
+
+Scintilla curses lacks some Scintilla features due to the terminal's
+constraints:
+
+* Any settings with alpha values are not supported.
+* Autocompletion lists cannot show images (pixmap surfaces are not supported).
+  Instead, they show the first character in the string passed to
+  [`SCI_REGISTERIMAGE`][].
+* Buffered and two-phase drawing is not supported.
+* Caret settings like period, line style, and width are not supported
+  (terminals use block carets with their own period definitions).
+* Code pages other than UTF-8 have not been tested and it is possible some
+  curses implementations do not support them.
+* Drag and drop is not supported.
+* Edge lines are not displayed properly (the line is drawn over by text lines).
+* Extra ascent and descent for lines is not supported.
+* Fold lines cannot be drawn above or below lines.
+* Hotspot underlines are not drawn on mouse hover (`surface->FillRectangle()` is
+  not supported).
+* Indicators other than `INDIC_ROUNDBOX` and `INDIC_STRAIGHTBOX` are not drawn
+  (`surface->LineTo()` and `surface->FillRectangle()` are not supported for
+  drawing indicator shapes and pixmap surfaces are not supported). Translucent
+  drawing and rounded corners are not supported either.
+* Some complex marker types are not drawn properly or at all (pixmap surfaces
+  are not supported and `surface->LineTo()` is not supported for drawing some
+  marker shapes).
+* Mouse cursor types are not supported.
+* Up to 16 colors are supported, regardless of how many colors the terminal
+  supports. They are (in "0xBBGGRR" format): black (`0x000000`), red
+  (`0x000080`), green (`0x008000`), yellow (`0x008080`), blue (`0x800000`),
+  magenta (`0x800080`), cyan (`0x808000`), white (`0xC0C0C0`), light black
+  (`0x404040`), light red (`0x0000FF`), light green (`0x00FF00`), light yellow
+  (`0x00FFFF`), light blue (`0xFF0000`), light magenta (`0xFF00FF`), light cyan
+  (`0xFFFF00`), and light white (`0xFFFFFF`). Even if your terminal uses a
+  different color map, you must use these color values with Scintilla;
+  unrecognized colors are set to white by default. For some terminals, you may
+  need to set a lexer style's `bold` attribute in order to use the light color
+  variant.
+* Some styles settings like font name, font size, and italic do not display
+  properly (terminals use one only font, size and variant).
+* X selections (primary and secondary) are not integrated into the clipboard.
+* Zoom is not supported (terminal font size is fixed).
+
+[`SCI_REGISTERIMAGE`]: http://scintilla.org/ScintillaDoc.html#SCI_REGISTERIMAGE
+
+## `jinx`
+
+`jinx` is an example of using Scintilla with curses. You can build it by going
+into `jinx/` and running `make`.

+ 1444 - 0
maxguitextareascintilla.mod/scintilla/curses/ScintillaCurses.cxx

@@ -0,0 +1,1444 @@
+// Copyright 2012-2018 Mitchell mitchell.att.foicica.com. See License.txt.
+// Scintilla implemented in a curses (terminal) environment.
+// Contains platform facilities and a curses-specific subclass of ScintillaBase.
+// Note: setlocale(LC_CTYPE, "") must be called before initializing curses in
+// order to display UTF-8 characters properly in ncursesw.
+
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <math.h>
+#include <wchar.h>
+
+#include <stdexcept>
+#include <string>
+#include <vector>
+#include <map>
+#include <algorithm>
+#include <memory>
+
+#include "Platform.h"
+
+#include "ILoader.h"
+#include "ILexer.h"
+#include "Scintilla.h"
+#include "Position.h"
+#include "UniqueString.h"
+#include "SplitVector.h"
+#include "Partitioning.h"
+#include "RunStyles.h"
+#include "ContractionState.h"
+#include "CellBuffer.h"
+#include "CallTip.h"
+#include "KeyMap.h"
+#include "Indicator.h"
+#include "LineMarker.h"
+#include "Style.h"
+#include "ViewStyle.h"
+#include "CharClassify.h"
+#include "Decoration.h"
+#include "CaseFolder.h"
+#include "Document.h"
+#include "UniConversion.h"
+#include "Selection.h"
+#include "PositionCache.h"
+#include "EditModel.h"
+#include "MarginView.h"
+#include "EditView.h"
+#include "Editor.h"
+#include "AutoComplete.h"
+#include "ScintillaBase.h"
+#include "ScintillaCurses.h"
+
+/**
+ * Returns the given Scintilla `WindowID` as a curses `WINDOW`.
+ * @param w A Scintilla `WindowID`.
+ * @return curses `WINDOW`.
+ */
+#define _WINDOW(w) reinterpret_cast<WINDOW *>(w)
+
+#if _WIN32
+#define wcwidth(_) 1 // TODO: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
+#endif
+
+using namespace Scintilla;
+
+// Font handling.
+
+/**
+ * Allocates a new Scintilla font for curses.
+ * Since terminals handle fonts on their own, the only use for Scintilla font
+ * objects is to indicate which attributes terminal characters have. This is
+ * done in `Font::Create()`.
+ * @see Font::Create
+ */
+Font::Font() noexcept : fid(0) {}
+/** Deletes the font. Currently empty. */
+Font::~Font() {}
+/**
+ * Sets terminal character attributes for a particular font.
+ * These attributes are a union of curses attributes and stored in the font's
+ * `fid`.
+ * The curses attributes are not constructed from various fields in *fp* since
+ * there is no `underline` parameter. Instead, you need to manually set the
+ * `weight` parameter to be the union of your desired attributes.
+ * Scintilla's lexers/LexLPeg.cxx has an example of this.
+ */
+void Font::Create(const FontParameters &fp) {
+  Release();
+  attr_t attrs = 0;
+  if (fp.weight == SC_WEIGHT_BOLD)
+    attrs = A_BOLD;
+  else if (fp.weight != SC_WEIGHT_NORMAL && fp.weight != SC_WEIGHT_SEMIBOLD)
+    attrs = fp.weight; // font attributes are stored in fp.weight
+  fid = reinterpret_cast<FontID>(attrs);
+}
+/** Releases a font's resources. */
+void Font::Release() { fid = 0; }
+
+// Color handling.
+
+static int COLOR_LBLACK = COLOR_BLACK + 8;
+static int COLOR_LRED = COLOR_RED + 8;
+static int COLOR_LGREEN = COLOR_GREEN + 8;
+static int COLOR_LYELLOW = COLOR_YELLOW + 8;
+static int COLOR_LBLUE = COLOR_BLUE + 8;
+static int COLOR_LMAGENTA = COLOR_MAGENTA + 8;
+static int COLOR_LCYAN = COLOR_CYAN + 8;
+static int COLOR_LWHITE = COLOR_WHITE + 8;
+
+static bool initialized_colors = false;
+
+/**
+ * Initializes colors in curses if they have not already been initialized.
+ * Creates all possible color pairs using the `SCI_COLOR_PAIR()` macro.
+ * This is called automatically from `scintilla_new()`.
+ */
+static void init_colors() {
+  if (initialized_colors) return;
+  if (has_colors()) {
+    start_color();
+    for (int back = 0; back < ((COLORS < 16) ? 8 : 16); back++)
+      for (int fore = 0; fore < ((COLORS < 16) ? 8 : 16); fore++)
+        init_pair(SCI_COLOR_PAIR(fore, back), fore, back);
+    if (COLORS < 16) {
+      // Do not distinguish between light and normal colors.
+      COLOR_LBLACK -= 8;
+      COLOR_LRED -= 8;
+      COLOR_LGREEN -= 8;
+      COLOR_LYELLOW -= 8;
+      COLOR_LBLUE -= 8;
+      COLOR_LMAGENTA -= 8;
+      COLOR_LCYAN -= 8;
+      COLOR_LWHITE -= 8;
+    }
+  }
+  initialized_colors = true;
+}
+
+static ColourDesired BLACK(0, 0, 0);
+static ColourDesired RED(0x80, 0, 0);
+static ColourDesired GREEN(0, 0x80, 0);
+static ColourDesired YELLOW(0x80, 0x80, 0);
+static ColourDesired BLUE(0, 0, 0x80);
+static ColourDesired MAGENTA(0x80, 0, 0x80);
+static ColourDesired CYAN(0, 0x80, 0x80);
+static ColourDesired WHITE(0xC0, 0xC0, 0xC0);
+static ColourDesired LBLACK(0x40, 0x40, 0x40);
+static ColourDesired LRED(0xFF, 0, 0);
+static ColourDesired LGREEN(0, 0xFF, 0);
+static ColourDesired LYELLOW(0xFF, 0xFF, 0);
+static ColourDesired LBLUE(0, 0, 0xFF);
+static ColourDesired LMAGENTA(0xFF, 0, 0xFF);
+static ColourDesired LCYAN(0, 0xFF, 0xFF);
+static ColourDesired LWHITE(0xFF, 0xFF, 0xFF);
+static ColourDesired SCI_COLORS[] = {
+  BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, LBLACK, LRED, LGREEN,
+  LYELLOW, LBLUE, LMAGENTA, LCYAN, LWHITE
+};
+
+/**
+ * Returns a curses color for the given Scintilla color.
+ * Recognized colors are: black (0x000000), red (0x800000), green (0x008000),
+ * yellow (0x808000), blue (0x000080), magenta (0x800080), cyan (0x008080),
+ * white (0xc0c0c0), light black (0x404040), light red (0xff0000), light green
+ * (0x00ff00), light yellow (0xffff00), light blue (0x0000ff), light magenta
+ * (0xff00ff), light cyan (0x00ffff), and light white (0xffffff). If the color
+ * is not recognized, returns `COLOR_WHITE` by default.
+ * @param color Color to get a curses color for.
+ * @return curses color
+ */
+static int term_color(ColourDesired color) {
+  if (color == BLACK) return COLOR_BLACK;
+  else if (color == RED) return COLOR_RED;
+  else if (color == GREEN) return COLOR_GREEN;
+  else if (color == YELLOW) return COLOR_YELLOW;
+  else if (color == BLUE) return COLOR_BLUE;
+  else if (color == MAGENTA) return COLOR_MAGENTA;
+  else if (color == CYAN) return COLOR_CYAN;
+  else if (color == LBLACK) return COLOR_LBLACK;
+  else if (color == LRED) return COLOR_LRED;
+  else if (color == LGREEN) return COLOR_LGREEN;
+  else if (color == LYELLOW) return COLOR_LYELLOW;
+  else if (color == LBLUE) return COLOR_LBLUE;
+  else if (color == LMAGENTA) return COLOR_LMAGENTA;
+  else if (color == LCYAN) return COLOR_LCYAN;
+  else if (color == LWHITE) return COLOR_LWHITE;
+  else return COLOR_WHITE;
+}
+
+/**
+ * Returns a curses color for the given curses color.
+ * This overloaded method only exists for the `term_color_pair()` macro.
+ */
+static int term_color(int color) { return color; }
+
+/**
+ * Returns a curses color pair from the given fore and back colors.
+ * @param f Foreground color, either a Scintilla color or curses color.
+ * @param b Background color, either a Scintilla color or curses color.
+ * @return curses color pair suitable for calling `COLOR_PAIR()` with.
+ */
+#define term_color_pair(f, b) SCI_COLOR_PAIR(term_color(f), term_color(b))
+
+// Surface handling.
+
+/**
+ * Implementation of a Scintilla surface for curses.
+ * The surface is initialized with a curses `WINDOW` for drawing on. Since
+ * curses can only show text, many of Scintilla's pixel-based functions are
+ * not implemented.
+ */
+class SurfaceImpl : public Surface {
+  WINDOW *win;
+  PRectangle clip;
+
+  /**
+   * Returns the number of columns used to display the first UTF-8 character in
+   * `s`, taking into account zero-width combining characters.
+   * @param s The string that contains the first UTF-8 character to display.
+   */
+  int grapheme_width(const char *s) {
+    wchar_t wch;
+    if (mbtowc(&wch, s, MB_CUR_MAX) < 1) return 1;
+    int width = wcwidth(wch);
+    return width >= 0 ? width : 1;
+  }
+public:
+  /** Allocates a new Scintilla surface for curses. */
+  SurfaceImpl() : win(0) {}
+  /** Deletes the surface. */
+  ~SurfaceImpl() { Release(); }
+
+  /**
+   * Initializes/reinitializes the surface with a curses `WINDOW` for drawing
+   * on.
+   * @param wid Curses `WINDOW`.
+   */
+  void Init(WindowID wid) {
+    Release();
+    win = _WINDOW(wid);
+  }
+  /** Identical to `Init()` using the given curses `WINDOW`. */
+  void Init(SurfaceID sid, WindowID wid) { Init(wid); }
+  /** Initializing the surface as a pixmap is not implemented. */
+  void InitPixMap(int width, int height, Surface *surface_, WindowID wid) {}
+
+  /** Releases the surface's resources. */
+  void Release() { win = 0; }
+  /**
+   * Returns `true` since this method is only called for pixmap surfaces and
+   * those surfaces are not implemented.
+   */
+  bool Initialised() { return true; }
+  /**
+   * Setting the surface's foreground color is not implemented because all uses
+   * in Scintilla involve special drawing that is not supported in curses.
+   */
+  void PenColour(ColourDesired fore) {}
+  /** Unused; return value irrelevant. */
+  int LogPixelsY() { return 1; }
+  /** Returns 1 since font height is always 1 in curses. */
+  int DeviceHeightFont(int points) { return 1; }
+  /**
+   * Moving to a particular position is not implemented because all uses in
+   * Scintilla involve subsequent calls to `LineTo()`, which is also
+   * unimplemented.
+   */
+  void MoveTo(int x_, int y_) {}
+  /**
+   * Drawing lines is not implemented because more often than not lines are
+   * being drawn for decoration (e.g. line markers, underlines, indicators,
+   * arrows, etc.).
+   */
+  void LineTo(int x_, int y_) {}
+  /**
+   * Draws the character equivalent of shape outlined by the given polygon's
+   * points.
+   * Scintilla only calls this method for CallTip arrows.
+   * Line markers that Scintilla would normally draw as polygons are handled in
+   * `DrawLineMarker()`.
+   */
+  void Polygon(Point *pts, size_t npts, ColourDesired fore,
+               ColourDesired back) {
+    wattr_set(win, 0, term_color_pair(back, COLOR_WHITE), NULL); // invert
+    if (pts[0].y < pts[npts - 1].y) // up arrow
+      mvwaddstr(win, pts[0].y, pts[npts - 1].x + 1, "▲");
+    else if (pts[0].y > pts[npts - 1].y) // down arrow
+      mvwaddstr(win, pts[0].y - 2, pts[npts - 1].x + 1, "▼");
+  }
+  /**
+   * Scintilla will never call this method.
+   * Line markers that Scintilla would normally draw as rectangles are handled
+   * in `DrawLineMarker()`.
+   */
+  void RectangleDraw(PRectangle rc, ColourDesired fore, ColourDesired back) {}
+  /**
+   * Clears the given portion of the screen with the given background color.
+   * In some cases, it can be determined that whitespace is being drawn. If so,
+   * draw it appropriately instead of clearing the given portion of the screen.
+   */
+  void FillRectangle(PRectangle rc, ColourDesired back) {
+    wattr_set(win, 0, term_color_pair(COLOR_WHITE, back), NULL);
+    chtype ch = ' ';
+    if (fabs(rc.left - (int)rc.left) > 0.1) {
+      // If rc.left is a fractional value (e.g. 4.5) then whitespace dots are
+      // being drawn. Draw them appropriately.
+      // TODO: set color to vs.whitespaceColours.fore and back.
+      wcolor_set(win, term_color_pair(COLOR_BLACK, COLOR_BLACK), NULL);
+      rc.right = (int)rc.right, ch = ACS_BULLET | A_BOLD;
+    }
+    for (int y = rc.top; y < rc.bottom; y++)
+      for (int x = rc.left; x < rc.right; x++)
+        mvwaddch(win, y, x, ch);
+  }
+  /**
+   * Instead of filling a portion of the screen with a surface pixmap, fills the
+   * the screen portion with black.
+   */
+  void FillRectangle(PRectangle rc, Surface &surfacePattern) {
+    FillRectangle(rc, BLACK);
+  }
+  /**
+   * Scintilla will never call this method.
+   * Line markers that Scintilla would normally draw as rounded rectangles are
+   * handled in `DrawLineMarker()`.
+   */
+  void RoundedRectangle(PRectangle rc, ColourDesired fore,
+                        ColourDesired back) {}
+  /**
+   * Drawing alpha rectangles is not fully supported.
+   * Instead, fills the background color of the given rectangle with the fill
+   * color, emulating INDIC_STRAIGHTBOX with no transparency.
+   * This is called by Scintilla to draw INDIC_ROUNDBOX and INDIC_STRAIGHTBOX
+   * indicators, text blobs, and translucent line states and selections.
+   */
+  void AlphaRectangle(PRectangle rc, int cornerSize, ColourDesired fill,
+                      int alphaFill, ColourDesired outline, int alphaOutline,
+                      int flags) {
+    for (int x = rc.left, y = rc.top - 1; x < rc.right; x++) {
+      attr_t attrs = mvwinch(win, y, x) & A_ATTRIBUTES;
+      short pair = PAIR_NUMBER(attrs), fore, unused;
+      if (pair > 0) pair_content(pair, &fore, &unused);
+      mvwchgat(win, y, x, 1, attrs, term_color_pair(fore, fill), NULL);
+    }
+  }
+  /** Drawing gradients is not implemented. */
+  void GradientRectangle(PRectangle rc, const std::vector<ColourStop> &stops,
+                         GradientOptions options) {}
+  /** Drawing images is not implemented. */
+  void DrawRGBAImage(PRectangle rc, int width, int height,
+                     const unsigned char *pixelsImage) {}
+  /**
+   * Scintilla will never call this method.
+   * Line markers that Scintilla would normally draw as circles are handled in
+   * `DrawLineMarker()`.
+   */
+  void Ellipse(PRectangle rc, ColourDesired fore, ColourDesired back) {}
+  /**
+   * Draw an indentation guide.
+   * Scintilla will only call this method when drawing indentation guides or
+   * during certain drawing operations when double buffering is enabled. Since
+   * the latter is not supported, assume the former.
+   */
+  void Copy(PRectangle rc, Point from, Surface &surfaceSource) {
+    // TODO: handle indent guide highlighting.
+    wattr_set(win, 0, term_color_pair(COLOR_BLACK, COLOR_BLACK), NULL);
+    mvwaddch(win, rc.top, rc.left - 1, '|' | A_BOLD);
+  }
+
+  /**
+   * Draws the given text at the given position on the screen with the given
+   * foreground and background colors.
+   * Takes into account any clipping boundaries previously specified.
+   */
+  void DrawTextNoClip(PRectangle rc, Font &font_, XYPOSITION ybase,
+                      const char *s, int len, ColourDesired fore,
+                      ColourDesired back) {
+    intptr_t attrs = reinterpret_cast<intptr_t>(font_.GetID());
+    wattr_set(win, static_cast<attr_t>(attrs), term_color_pair(fore, back),
+              NULL);
+    if (rc.left < clip.left) {
+      // Do not overwrite margin text.
+      int clip_chars = static_cast<int>(clip.left - rc.left);
+      int offset = 0;
+      for (int chars = 0; offset < len; offset++) {
+        if (!UTF8IsTrailByte((unsigned char)s[offset]))
+          chars += grapheme_width(s + offset);
+        if (chars > clip_chars) break;
+      }
+      s += offset, len -= offset, rc.left = clip.left;
+    }
+    // Do not write beyond right window boundary.
+    int clip_chars = getmaxx(win) - rc.left;
+    int bytes = 0;
+    for (int chars = 0; bytes < len; bytes++) {
+      if (!UTF8IsTrailByte((unsigned char)s[bytes]))
+        chars += grapheme_width(s + bytes);
+      if (chars > clip_chars) break;
+    }
+    mvwaddnstr(win, rc.top, rc.left, s, std::min(len, bytes));
+  }
+  /**
+   * Similar to `DrawTextNoClip()`.
+   * Scintilla calls this method for drawing the caret, text blobs, and
+   * `SC_MARKCHARACTER` line markers.
+   * When drawing control characters, *rc* needs to have its pixel padding
+   * removed since curses has smaller resolution. Similarly when drawing line
+   * markers, *rc* needs to be reshaped.
+   * @see DrawTextNoClip
+   */
+  void DrawTextClipped(PRectangle rc, Font &font_, XYPOSITION ybase,
+                       const char *s, int len, ColourDesired fore,
+                       ColourDesired back) {
+    if (rc.left >= rc.right) // when drawing text blobs
+      rc.left -= 2, rc.right -= 2, rc.top -= 1, rc.bottom -= 1;
+    DrawTextNoClip(rc, font_, ybase, s, len, fore, back);
+  }
+  /**
+   * Similar to `DrawTextNoClip()`.
+   * Scintilla calls this method for drawing CallTip text and two-phase buffer
+   * text. However, the latter is not supported.
+   */
+  void DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION ybase,
+                           const char *s, int len, ColourDesired fore) {
+    if ((int)rc.top >= getmaxy(win) - 1) return;
+    attr_t attrs = mvwinch(win, (int)rc.top, (int)rc.left);
+    short pair = PAIR_NUMBER(attrs), unused, back;
+    if (pair > 0) pair_content(pair, &unused, &back);
+    DrawTextNoClip(rc, font_, ybase, s, len, fore, SCI_COLORS[back]);
+  }
+  /**
+   * Measures the width of characters in the given string and writes them to the
+   * given position list.
+   * Curses characters always have a width of 1 if they are not UTF-8 trailing
+   * bytes.
+   */
+  void MeasureWidths(Font &font_, const char *s, int len,
+                     XYPOSITION *positions) {
+    for (int i = 0, j = 0; i < len; i++) {
+      if (!UTF8IsTrailByte((unsigned char)s[i])) j += grapheme_width(s + i);
+      positions[i] = j;
+    }
+  }
+  /**
+   * Returns the number of UTF-8 characters in the given string since curses
+   * characters always have a width of 1.
+   */
+  XYPOSITION WidthText(Font &font_, const char *s, int len) {
+    int width = 0;
+    for (int i = 0; i < len; i++)
+      if (!UTF8IsTrailByte((unsigned char)s[i])) width += grapheme_width(s + i);
+    return width;
+  }
+  /** Returns 0 since curses characters have no ascent. */
+  XYPOSITION Ascent(Font &font_) { return 0; }
+  /** Returns 0 since curses characters have no descent. */
+  XYPOSITION Descent(Font &font_) { return 0; }
+  /** Returns 0 since curses characters have no leading. */
+  XYPOSITION InternalLeading(Font &font_) { return 0; }
+  /** Returns 1 since curses characters always have a height of 1. */
+  XYPOSITION Height(Font &font_) { return 1; }
+  /** Returns 1 since curses characters always have a width of 1. */
+  XYPOSITION AverageCharWidth(Font &font_) { return 1; }
+
+  /**
+   * Ensure text to be drawn in subsequent calls to `DrawText*()` is drawn
+   * within the given rectangle.
+   * This is needed in order to prevent long lines from overwriting margin text
+   * when scrolling to the right.
+   */
+  void SetClip(PRectangle rc) {
+    clip.left = rc.left, clip.top = rc.top;
+    clip.right = rc.right, clip.bottom = rc.bottom;
+  }
+  /** Flushing cache is not implemented. */
+  void FlushCachedState() {}
+
+  /** Unsetting unicode mode is not implemented. UTF-8 is assumed. */
+  void SetUnicodeMode(bool unicodeMode_) {}
+  /** Setting DBCS mode is not implemented. UTF-8 is used. */
+  void SetDBCSMode(int codePage) {}
+
+  /** Draws the text representation of a line marker, if possible. */
+  void DrawLineMarker(PRectangle &rcWhole, Font &fontForCharacter, int tFold,
+                      const void *data) {
+    // TODO: handle fold marker highlighting.
+    const LineMarker *marker = reinterpret_cast<const LineMarker *>(data);
+    wattr_set(win, 0, term_color_pair(marker->fore, marker->back), NULL);
+    switch (marker->markType) {
+    case SC_MARK_CIRCLE:
+      mvwaddstr(win, rcWhole.top, rcWhole.left, "●");
+      return;
+    case SC_MARK_SMALLRECT:
+    case SC_MARK_ROUNDRECT:
+      mvwaddstr(win, rcWhole.top, rcWhole.left, "■");
+      return;
+    case SC_MARK_ARROW:
+      mvwaddstr(win, rcWhole.top, rcWhole.left, "►");
+      return;
+    case SC_MARK_SHORTARROW:
+      mvwaddstr(win, rcWhole.top, rcWhole.left, "→");
+      return;
+    case SC_MARK_ARROWDOWN:
+      mvwaddstr(win, rcWhole.top, rcWhole.left, "▼");
+      return;
+    case SC_MARK_MINUS:
+      mvwaddch(win, rcWhole.top, rcWhole.left, '-');
+      return;
+    case SC_MARK_BOXMINUS:
+    case SC_MARK_BOXMINUSCONNECTED:
+      mvwaddstr(win, rcWhole.top, rcWhole.left, "⊟");
+      return;
+    case SC_MARK_CIRCLEMINUS:
+    case SC_MARK_CIRCLEMINUSCONNECTED:
+      mvwaddstr(win, rcWhole.top, rcWhole.left, "⊖");
+      return;
+    case SC_MARK_PLUS:
+      mvwaddch(win, rcWhole.top, rcWhole.left, '+');
+      return;
+    case SC_MARK_BOXPLUS:
+    case SC_MARK_BOXPLUSCONNECTED:
+      mvwaddstr(win, rcWhole.top, rcWhole.left, "⊞");
+      return;
+    case SC_MARK_CIRCLEPLUS:
+    case SC_MARK_CIRCLEPLUSCONNECTED:
+      mvwaddstr(win, rcWhole.top, rcWhole.left, "⊕");
+      return;
+    case SC_MARK_VLINE:
+      mvwaddch(win, rcWhole.top, rcWhole.left, ACS_VLINE);
+      return;
+    case SC_MARK_LCORNER:
+    case SC_MARK_LCORNERCURVE:
+      mvwaddch(win, rcWhole.top, rcWhole.left, ACS_LLCORNER);
+      return;
+    case SC_MARK_TCORNER:
+    case SC_MARK_TCORNERCURVE:
+      mvwaddch(win, rcWhole.top, rcWhole.left, ACS_LTEE);
+      return;
+    case SC_MARK_DOTDOTDOT:
+      mvwaddstr(win, rcWhole.top, rcWhole.left, "…");
+      return;
+    case SC_MARK_ARROWS:
+      mvwaddstr(win, rcWhole.top, rcWhole.left, "»");
+      return;
+    case SC_MARK_FULLRECT:
+      FillRectangle(rcWhole, marker->back);
+      return;
+    case SC_MARK_LEFTRECT:
+      mvwaddstr(win, rcWhole.top, rcWhole.left, "▌");
+      return;
+    case SC_MARK_BOOKMARK:
+      mvwaddstr(win, rcWhole.top, rcWhole.left, "Σ");
+      return;
+    }
+    if (marker->markType >= SC_MARK_CHARACTER) {
+      char ch = static_cast<char>(marker->markType - SC_MARK_CHARACTER);
+      DrawTextClipped(rcWhole, fontForCharacter, rcWhole.bottom, &ch, 1,
+                      marker->fore, marker->back);
+      return;
+    }
+  }
+  /** Draws the text representation of a wrap marker. */
+  void DrawWrapMarker(PRectangle rcPlace, bool isEndMarker,
+                      ColourDesired wrapColour) {
+    wattr_set(win, 0, term_color_pair(wrapColour, COLOR_BLACK), NULL);
+    mvwaddstr(win, rcPlace.top, rcPlace.left, isEndMarker ? "↩" : "↪");
+  }
+  /** Draws the text representation of a tab arrow. */
+  void DrawTabArrow(PRectangle rcTab) {
+    // TODO: set color to vs.whitespaceColours.fore and back.
+    wattr_set(win, 0, term_color_pair(COLOR_BLACK, COLOR_BLACK), NULL);
+    for (int i = rcTab.left - 1; i < rcTab.right; i++)
+      mvwaddch(win, rcTab.top, i, '-' | A_BOLD);
+    mvwaddch(win, rcTab.top, rcTab.right, '>' | A_BOLD);
+  }
+};
+
+/** Creates a new curses surface. */
+Surface *Surface::Allocate(int) { return new SurfaceImpl(); }
+
+/** Custom function for drawing line markers in curses. */
+static void DrawLineMarker(Surface *surface, PRectangle &rcWhole,
+                           Font &fontForCharacter, int tFold, int marginStyle,
+                           const void *data) {
+  reinterpret_cast<SurfaceImpl *>(surface)->DrawLineMarker(rcWhole,
+                                                           fontForCharacter,
+                                                           tFold, data);
+}
+/** Custom function for drawing wrap markers in curses. */
+static void DrawWrapVisualMarker(Surface *surface, PRectangle rcPlace,
+                                 bool isEndMarker, ColourDesired wrapColour) {
+  reinterpret_cast<SurfaceImpl *>(surface)->DrawWrapMarker(rcPlace, isEndMarker,
+                                                           wrapColour);
+}
+/** Custom function for drawing tab arrows in curses. */
+static void DrawTabArrow(Surface *surface, PRectangle rcTab, int ymid) {
+  reinterpret_cast<SurfaceImpl *>(surface)->DrawTabArrow(rcTab);
+}
+
+// Window handling.
+
+/** Deletes the window. */
+Window::~Window() {}
+/**
+ * Releases the window's resources.
+ * Since the only Windows created are AutoComplete and CallTip windows, and
+ * since those windows are created in `ListBox::Create()` and
+ * `ScintillaCurses::CreateCallTipWindow()`, respectively, via `newwin()`, it is
+ * safe to use `delwin()`.
+ * It is important to note that even though `ScintillaCurses::wMain` is a Window,
+ * its `Destroy()` function is never called, hence why `scintilla_delete()` is
+ * the complement to `scintilla_new()`.
+ */
+void Window::Destroy() {
+  if (wid) delwin(_WINDOW(wid));
+  wid = 0;
+}
+/**
+ * Returns the window's boundaries.
+ * Unlike other platforms, Scintilla paints in coordinates relative to the
+ * window in curses. Therefore, this function should always return the window
+ * bounds to ensure all of it is painted.
+ * @return PRectangle with the window's boundaries.
+ */
+PRectangle Window::GetPosition() const {
+  int maxx = wid ? getmaxx(_WINDOW(wid)) : 0;
+  int maxy = wid ? getmaxy(_WINDOW(wid)) : 0;
+  return PRectangle(0, 0, maxx, maxy);
+}
+/**
+ * Sets the position of the window relative to its parent window.
+ * It will take care not to exceed the boundaries of the parent.
+ * @param rc The position relative to the parent window.
+ * @param relativeTo The parent window.
+ */
+void Window::SetPositionRelative(PRectangle rc, const Window *relativeTo) {
+  int begx = 0, begy = 0, x = 0, y = 0;
+  // Determine the relative position.
+  getbegyx(_WINDOW(relativeTo->GetID()), begy, begx);
+  x = begx + rc.left;
+  if (x < begx) x = begx;
+  y = begy + rc.top;
+  if (y < begy) y = begy;
+  // Correct to fit the parent if necessary.
+  int sizex = rc.right - rc.left;
+  int sizey = rc.bottom - rc.top;
+  int screen_width = getmaxx(_WINDOW(relativeTo->GetID()));
+  int screen_height = getmaxy(_WINDOW(relativeTo->GetID()));
+  if (sizex > screen_width)
+    x = begx; // align left
+  else if (x + sizex > begx + screen_width)
+    x = begx + screen_width - sizex; // align right
+  if (y + sizey > begy + screen_height) {
+    y = begy + screen_height - sizey; // align bottom
+    if (screen_height == 1) y--; // show directly above the relative window
+  }
+  if (y < 0) y = begy; // align top
+  // Update the location.
+  mvwin(_WINDOW(wid), y, x);
+}
+/** Identical to `Window::GetPosition()`. */
+PRectangle Window::GetClientPosition() const { return GetPosition(); }
+void Window::Show(bool show) { /* TODO: */ }
+void Window::InvalidateAll() { /* notify repaint */ }
+void Window::InvalidateRectangle(PRectangle rc) { /* notify repaint*/ }
+/** Setting the font is not implemented. */
+void Window::SetFont(Font &) {}
+/** Setting the cursor icon is not implemented. */
+void Window::SetCursor(Cursor curs) {}
+/** Identical to `Window::GetPosition()`. */
+PRectangle Window::GetMonitorRect(Point pt) { return GetPosition(); }
+
+/**
+ * Implementation of a Scintilla ListBox for curses.
+ * Instead of registering images to types, printable UTF-8 characters are
+ * registered to types.
+ */
+class ListBoxImpl : public ListBox {
+  int height, width;
+  std::vector<std::string> list;
+  char types[IMAGE_MAX + 1][5]; // UTF-8 character plus terminating '\0'
+  int selection;
+public:
+  IListBoxDelegate *delegate;
+
+  /** Allocates a new Scintilla ListBox for curses. */
+  ListBoxImpl() : height(5), width(10), selection(0), delegate(NULL) {
+    list.reserve(10);
+    ClearRegisteredImages();
+  }
+  /** Deletes the ListBox. */
+  ~ListBoxImpl() {}
+
+  /** Setting the font is not implemented. */
+  void SetFont(Font &font) {}
+  /**
+   * Creates a new listbox.
+   * The `Show()` function resizes window with the appropriate height and width.
+   */
+  void Create(Window &parent, int ctrlID, Point location_, int lineHeight_,
+              bool unicodeMode_, int technology_) {
+    wid = newwin(1, 1, 0, 0);
+  }
+  /**
+   * Setting average char width is not implemented since all curses characters
+   * have a width of 1.
+   */
+  void SetAverageCharWidth(int width) {}
+  /** Sets the number of visible rows in the listbox. */
+  void SetVisibleRows(int rows) {
+    height = rows;
+    wresize(_WINDOW(wid), height + 2, width + 2);
+  }
+  /** Returns the number of visible rows in the listbox. */
+  int GetVisibleRows() const { return height; }
+  /** Returns the desired size of the listbox. */
+  PRectangle GetDesiredRect() {
+    return PRectangle(0, 0, width + 2, height + 2); // add border widths
+  }
+  /**
+   * Returns the left-offset of the ListBox with respect to the caret.
+   * Takes into account the border width and type character width.
+   * @return 2 to shift the ListBox to the left two characters.
+   */
+  int CaretFromEdge() { return 2; }
+  /** Clears the contents of the listbox. */
+  void Clear() {
+    list.clear();
+    width = 0;
+  }
+  /**
+   * Adds the given string list item to the listbox.
+   * Prepends the item's type character (if any) to the list item for display.
+   */
+  void Append(char *s, int type = -1) {
+    if (type >= 0 && type <= IMAGE_MAX) {
+      char *chtype = types[type];
+      list.push_back(std::string(chtype, strlen(chtype)) + std::string(s));
+    } else list.push_back(std::string(" ") + std::string(s));
+    int len = strlen(s); // TODO: UTF-8 awareness?
+    if (width < len) {
+      width = len + 1; // include type character len
+      wresize(_WINDOW(wid), height + 2, width + 2);
+    }
+  }
+  /** Returns the number of items in the listbox. */
+  int Length() { return list.size(); }
+  /** Selects the given item in the listbox and repaints the listbox. */
+  void Select(int n) {
+    WINDOW *w = _WINDOW(wid);
+    wclear(w);
+    box(w, '|', '-');
+    int len = static_cast<int>(list.size());
+    int s = n - height / 2;
+    if (s + height > len) s = len - height;
+    if (s < 0) s = 0;
+    for (int i = s; i < s + height && i < len; i++) {
+      mvwaddstr(w, i - s + 1, 1, list.at(i).c_str());
+      if (i == n) mvwchgat(w, i - s + 1, 2, width - 1, A_REVERSE, 0, NULL);
+    }
+    wmove(w, n - s + 1, 1); // place cursor on selected line
+    wnoutrefresh(w);
+    selection = n;
+  }
+  /** Returns the currently selected item in the listbox. */
+  int GetSelection() { return selection; }
+  /**
+   * Searches the listbox for the items matching the given prefix string and
+   * returns the index of the first match.
+   * Since the type is displayed as the first character, the value starts on the
+   * second character; match strings starting there.
+   */
+  int Find(const char *prefix) {
+    int len = strlen(prefix);
+    for (unsigned int i = 0; i < list.size(); i++) {
+      const char *item = list.at(i).c_str();
+      item += UTF8DrawBytes(reinterpret_cast<const unsigned char *>(item),
+                            strlen(item));
+      if (strncmp(prefix, item, len) == 0) return i;
+    }
+    return -1;
+  }
+  /**
+   * Gets the item in the listbox at the given index and stores it in the given
+   * string.
+   * Since the type is displayed as the first character, the value starts on the
+   * second character.
+   */
+  void GetValue(int n, char *value, int len) {
+    if (len > 0) {
+      const char *item = list.at(n).c_str();
+      item += UTF8DrawBytes(reinterpret_cast<const unsigned char *>(item),
+                            strlen(item));
+      strncpy(value, item, len);
+      value[len - 1] = '\0';
+    } else value[0] = '\0';
+  }
+  /**
+   * Registers the first UTF-8 character of the given string to the given type.
+   * By default, ' ' (space) is registered to all types.
+   * @usage SCI_REGISTERIMAGE(1, "*") // type 1 shows '*' in front of list item.
+   * @usage SCI_REGISTERIMAGE(2, "+") // type 2 shows '+' in front of list item.
+   * @usage SCI_REGISTERIMAGE(3, "■") // type 3 shows '■' in front of list item.
+   */
+  void RegisterImage(int type, const char *xpm_data) {
+    if (type < 0 || type > IMAGE_MAX) return;
+    int len = UTF8DrawBytes(reinterpret_cast<const unsigned char *>(xpm_data),
+                            strlen(xpm_data));
+    for (int i = 0; i < len; i++) types[type][i] = xpm_data[i];
+    types[type][len] = '\0';
+  }
+  /** Registering images is not implemented. */
+  void RegisterRGBAImage(int type, int width, int height,
+                         const unsigned char *pixelsImage) {}
+  /** Clears all registered types back to ' ' (space). */
+  void ClearRegisteredImages() {
+    for (int i = 0; i <= IMAGE_MAX; i++) types[i][0] = ' ', types[i][1] = '\0';
+  }
+  /** Defines the delegate for ListBox actions. */
+  void SetDelegate(IListBoxDelegate *lbDelegate) {
+    delegate = lbDelegate;
+  }
+  /** Sets the list items in the listbox to the given items. */
+  void SetList(const char *listText, char separator, char typesep) {
+    Clear();
+    int len = strlen(listText);
+    char *text = new char[len + 1];
+    if (!text) return;
+    memcpy(text, listText, len + 1);
+    char *word = text, *type = NULL;
+    for (int i = 0; i <= len; i++) {
+      if (text[i] == separator || i == len) {
+        text[i] = '\0';
+        if (type) *type = '\0';
+        Append(word, type ? atoi(type + 1) : -1);
+        word = text + i + 1, type = NULL;
+      } else if (text[i] == typesep)
+        type = text + i;
+    }
+    delete []text;
+  }
+};
+
+/** Creates a new Scintilla ListBox. */
+ListBox::ListBox() noexcept {}
+/** Deletes the ListBox. */
+ListBox::~ListBox() {}
+/** Creates a new curses ListBox. */
+ListBox *ListBox::Allocate() { return new ListBoxImpl(); }
+
+// Menus are not implemented.
+Menu::Menu() noexcept : mid(0) {}
+void Menu::CreatePopUp() {}
+void Menu::Destroy() {}
+void Menu::Show(Point pt, Window &w) {}
+
+/** Dynamic library loading is not implemented. */
+DynamicLibrary *DynamicLibrary::Load(const char *modulePath) {
+  /* TODO */ return 0;
+}
+
+ColourDesired Platform::Chrome() { return ColourDesired(0, 0, 0); }
+ColourDesired Platform::ChromeHighlight() { return ColourDesired(0, 0, 0); }
+const char *Platform::DefaultFont() { return "monospace"; }
+int Platform::DefaultFontSize() { return 10; }
+unsigned int Platform::DoubleClickTime() { return 500; /* ms */ }
+void Platform::DebugDisplay(const char *s) { fprintf(stderr, "%s", s); }
+void Platform::DebugPrintf(const char *format, ...) {}
+//bool Platform::ShowAssertionPopUps(bool assertionPopUps_) { return true; }
+void Platform::Assert(const char *c, const char *file, int line) {
+  char buffer[2000];
+  sprintf(buffer, "Assertion [%s] failed at %s %d\r\n", c, file, line);
+  Platform::DebugDisplay(buffer);
+  abort();
+}
+
+/** Implementation of Scintilla for curses. */
+class ScintillaCurses : public ScintillaBase {
+  Surface *sur; // window surface to draw on
+  int width, height; // window dimensions
+  void (*callback)(void *, int, void *, void *); // SCNotification callback
+  int scrollBarVPos, scrollBarHPos; // positions of the scroll bars
+  int scrollBarHeight, scrollBarWidth; // height and width of the scroll bars
+  SelectionText clipboard; // current clipboard text
+  bool capturedMouse; // whether or not the mouse is currently captured
+  unsigned int autoCompleteLastClickTime; // last click time in the AC box
+  bool draggingVScrollBar, draggingHScrollBar; // a scrollbar is being dragged
+  int dragOffset; // the distance to the position of the scrollbar being dragged
+
+  /**
+   * Uses the given UTF-8 code point to fill the given UTF-8 byte sequence and
+   * length.
+   * This algorithm was inspired by Paul Evans' libtermkey.
+   * (http://www.leonerd.org.uk/code/libtermkey)
+   * @param code The UTF-8 code point.
+   * @param s The string to write the UTF-8 byte sequence in. Must be at least
+   *   6 bytes in size.
+   * @param len The integer to put the number of UTF-8 bytes written in.
+   */
+  void toutf8(int code, char *s, int *len) {
+    if (code < 0x80) *len = 1;
+    else if (code < 0x800) *len = 2;
+    else if (code < 0x10000) *len = 3;
+    else if (code < 0x200000) *len = 4;
+    else if (code < 0x4000000) *len = 5;
+    else *len = 6;
+    for (int b = *len - 1; b > 0; b--) s[b] = 0x80 | (code & 0x3F), code >>= 6;
+    if (*len == 1) s[0] = code & 0x7F;
+    else if (*len == 2) s[0] = 0xC0 | (code & 0x1F);
+    else if (*len == 3) s[0] = 0xE0 | (code & 0x0F);
+    else if (*len == 4) s[0] = 0xF0 | (code & 0x07);
+    else if (*len == 5) s[0] = 0xF8 | (code & 0x03);
+    else if (*len == 6) s[0] = 0xFC | (code & 0x01);
+  }
+public:
+  /**
+   * Creates a new Scintilla instance in a curses `WINDOW`.
+   * However, the `WINDOW` itself will not be created until it is absolutely
+   * necessary. When the `WINDOW` is created, it will initially be full-screen.
+   * @param callback_ Callback function for Scintilla notifications.
+   */
+  ScintillaCurses(void (*callback_)(void *, int, void *, void *)) :
+                 width(0), height(0), scrollBarHeight(1), scrollBarWidth(1) {
+    callback = callback_;
+    sur = Surface::Allocate(SC_TECHNOLOGY_DEFAULT);
+
+    // Defaults for curses.
+    marginView.wrapMarkerPaddingRight = 0; // no padding for margin wrap markers
+    marginView.customDrawWrapMarker = DrawWrapVisualMarker; // draw text markers
+    view.tabWidthMinimumPixels = 0; // no proportional fonts
+    view.drawOverstrikeCaret = false; // always draw normal caret
+    view.bufferedDraw = false; // draw directly to the screen
+    view.phasesDraw = EditView::phasesOne; // no need for two-phase drawing
+    view.tabArrowHeight = 0; // no additional tab arrow height
+    view.customDrawTabArrow = DrawTabArrow; // draw text arrows for tabs
+    view.customDrawWrapMarker = DrawWrapVisualMarker; // draw text wrap markers
+    mouseSelectionRectangularSwitch = true; // easier rectangular selection
+    doubleClickCloseThreshold = Point(0, 0); // double-clicks only in same cell
+    horizontalScrollBarVisible = false; // no horizontal scroll bar
+    scrollWidth = 5 * width; // reasonable default for any horizontal scroll bar
+    vs.selColours.fore = ColourDesired(0, 0, 0); // black on white selection
+    vs.selColours.fore.isSet = true; // setting selection foreground above
+    vs.caretcolour = ColourDesired(0xFF, 0xFF, 0xFF); // white caret
+    vs.caretStyle = CARETSTYLE_BLOCK; // block caret
+    vs.leftMarginWidth = 0, vs.rightMarginWidth = 0; // no margins
+    vs.ms[1].width = 1; // marker margin width should be 1
+    vs.extraDescent = -1; // hack to make lineHeight 1 instead of 2
+    // Set default marker foreground and background colors.
+    for (int i = 0; i <= MARKER_MAX; i++) {
+      vs.markers[i].fore = ColourDesired(0xC0, 0xC0, 0xC0);
+      vs.markers[i].back = ColourDesired(0, 0, 0);
+      if (i >= 25) vs.markers[i].markType = SC_MARK_EMPTY;
+      vs.markers[i].customDraw = DrawLineMarker;
+    }
+    // Use '+' and '-' fold markers.
+    vs.markers[SC_MARKNUM_FOLDEROPEN].markType = SC_MARK_MINUS;
+    vs.markers[SC_MARKNUM_FOLDER].markType = SC_MARK_PLUS;
+    vs.markers[SC_MARKNUM_FOLDEROPENMID].markType = SC_MARK_MINUS;
+    vs.markers[SC_MARKNUM_FOLDEREND].markType = SC_MARK_PLUS;
+    displayPopupMenu = false; // no context menu
+    vs.marginNumberPadding = 0; // no number margin padding
+    vs.ctrlCharPadding = 0; // no ctrl character text blob padding
+    vs.lastSegItalicsOffset = 0; // no offset for italic characters at EOLs
+    ac.widthLBDefault = 10; // more sane bound for autocomplete width
+    ac.heightLBDefault = 10; // more sane bound for autocomplete  height
+    ct.colourBG = ColourDesired(0, 0, 0); // black background color
+    ct.colourUnSel = ColourDesired(0xC0, 0xC0, 0xC0); // white text
+    ct.insetX = 2; // border and arrow widths are 1 each
+    ct.widthArrow = 1; // arrow width is 1 character
+    ct.borderHeight = 1; // no extra empty lines in border height
+    ct.verticalOffset = 0; // no extra offset of calltip from line
+  }
+  /** Deletes the Scintilla instance. */
+  ~ScintillaCurses() {
+    if (wMain.GetID())
+      delwin(GetWINDOW());
+    if (sur) {
+      sur->Release();
+      delete sur;
+    }
+  }
+  /** Initializing code is unnecessary. */
+  void Initialise() {}
+  /** Disable drag and drop since it is not implemented. */
+  void StartDrag() {
+    inDragDrop = ddNone;
+    SetDragPosition(SelectionPosition(Sci::invalidPosition));
+  }
+  /** Draws the vertical scroll bar. */
+  void SetVerticalScrollPos() {
+    if (!wMain.GetID() || !verticalScrollBarVisible) return;
+    WINDOW *w = GetWINDOW();
+    int maxy = getmaxy(w), maxx = getmaxx(w);
+    // Draw the gutter.
+    wattr_set(w, 0, term_color_pair(COLOR_WHITE, COLOR_BLACK), NULL);
+    for (int i = 0; i < maxy; i++) mvwaddch(w, i, maxx - 1, ACS_CKBOARD);
+    // Draw the bar.
+    scrollBarVPos = static_cast<float>(topLine) /
+                    (MaxScrollPos() + LinesOnScreen() - 1) * maxy;
+    wattr_set(w, 0, term_color_pair(COLOR_BLACK, COLOR_WHITE), NULL);
+    for (int i = scrollBarVPos; i < scrollBarVPos + scrollBarHeight; i++)
+      mvwaddch(w, i, maxx - 1, ' ');
+  }
+  /** Draws the horizontal scroll bar. */
+  void SetHorizontalScrollPos() {
+    if (!wMain.GetID() || !horizontalScrollBarVisible) return;
+    WINDOW *w = GetWINDOW();
+    int maxy = getmaxy(w), maxx = getmaxx(w);
+    // Draw the gutter.
+    wattr_set(w, 0, term_color_pair(COLOR_WHITE, COLOR_BLACK), NULL);
+    for (int i = 0; i < maxx; i++) mvwaddch(w, maxy - 1, i, ACS_CKBOARD);
+    // Draw the bar.
+    scrollBarHPos = static_cast<float>(xOffset) / scrollWidth * maxx;
+    wattr_set(w, 0, term_color_pair(COLOR_BLACK, COLOR_WHITE), NULL);
+    for (int i = scrollBarHPos; i < scrollBarHPos + scrollBarWidth; i++)
+      mvwaddch(w, maxy - 1, i, ' ');
+  }
+  /**
+   * Sets the height of the vertical scroll bar and width of the horizontal
+   * scroll bar.
+   * The height is based on the given size of a page and the total number of
+   * pages. The width is based on the width of the view and the view's scroll
+   * width property.
+   */
+  bool ModifyScrollBars(Sci::Line nMax, Sci::Line nPage) {
+    if (!wMain.GetID()) return false;
+    WINDOW *w = GetWINDOW();
+    int maxy = getmaxy(w), maxx = getmaxx(w);
+    int height = roundf(static_cast<float>(nPage) / nMax * maxy);
+    scrollBarHeight = Sci::clamp(height, 1, maxy);
+    int width = roundf(static_cast<float>(maxx) / scrollWidth * maxx);
+    scrollBarWidth = Sci::clamp(width, 1, maxx);
+    return true;
+  }
+  /**
+   * Copies the selected text to the internal clipboard.
+   * The primary and secondary X selections are unaffected.
+   */
+  void Copy() { if (!sel.Empty()) CopySelectionRange(&clipboard); }
+  /**
+   * Pastes text from the internal clipboard, not from primary or secondary X
+   * selections.
+   */
+  void Paste() {
+    if (clipboard.Empty()) return;
+    ClearSelection(multiPasteMode == SC_MULTIPASTE_EACH);
+    InsertPasteShape(clipboard.Data(), static_cast<int>(clipboard.Length()),
+                     !clipboard.rectangular ? pasteStream : pasteRectangular);
+    EnsureCaretVisible();
+  }
+  /** Setting of the primary and/or secondary X selections is not supported. */
+  void ClaimSelection() {}
+  /** Notifying the parent of text changes is not yet supported. */
+  void NotifyChange() {}
+  /** Send Scintilla notifications to the parent. */
+  void NotifyParent(SCNotification scn) {
+    if (callback)
+      (*callback)(reinterpret_cast<void *>(this), 0, (void *)&scn, 0);
+  }
+  /**
+   * Handles an unconsumed key.
+   * If a character is being typed, add it to the editor. Otherwise, notify the
+   * container.
+   */
+  int KeyDefault(int key, int modifiers) {
+    if ((IsUnicodeMode() || key < 256) && modifiers == 0) {
+      if (IsUnicodeMode()) {
+        char utf8[6];
+        int len;
+        toutf8(key, utf8, &len);
+        return (AddCharUTF(utf8, len), 1);
+      } else return (AddChar(key), 1);
+    } else {
+      SCNotification scn = {};
+      scn.nmhdr.code = SCN_KEY;
+      scn.ch = key;
+      scn.modifiers = modifiers;
+      return (NotifyParent(scn), 0);
+    }
+  }
+  /**
+   * Copies the given text to the internal clipboard.
+   * Like `Copy()`, does not affect the primary and secondary X selections.
+   */
+  void CopyToClipboard(const SelectionText &selectedText) {
+    clipboard.Copy(selectedText);
+  }
+  /** A ticking caret is not implemented. */
+  bool FineTickerRunning(TickReason reason) { return false; }
+  /** A ticking caret is not implemented. */
+  void FineTickerStart(TickReason reason, int millis, int tolerance) {}
+  /** A ticking caret is not implemented. */
+  void FineTickerCancel(TickReason reason) {}
+  /**
+   * Sets whether or not the mouse is captured.
+   * This is used by Scintilla to handle mouse clicks, drags, and releases.
+   */
+  void SetMouseCapture(bool on) { capturedMouse = on; }
+  /** Returns whether or not the mouse is captured. */
+  bool HaveMouseCapture() { return capturedMouse; }
+  /** A Scintilla direct pointer is not implemented. */
+  sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
+    return 0;
+  }
+  /** Draws a CallTip, creating the curses window for it if necessary. */
+  void CreateCallTipWindow(PRectangle rc) {
+    if (!wMain.GetID()) return;
+    if (!ct.wCallTip.Created()) {
+      rc.right -= 1; // remove right-side padding
+      int begx = 0, begy = 0, maxx = 0, maxy = 0;
+      getbegyx(GetWINDOW(), begy, begx);
+      int xoffset = begx - rc.left, yoffset = begy - rc.top;
+      if (xoffset > 0) rc.left += xoffset, rc.right += xoffset;
+      if (yoffset > 0) rc.top += yoffset, rc.bottom += yoffset;
+      getmaxyx(GetWINDOW(), maxy, maxx);
+      if (rc.Width() > maxx) rc.right = rc.left + maxx;
+      if (rc.Height() > maxy) rc.bottom = rc.top + maxy;
+      ct.wCallTip = newwin(rc.Height(), rc.Width(), rc.top, rc.left);
+    }
+    WindowID wid = ct.wCallTip.GetID();
+    box(_WINDOW(wid), '|', '-');
+    Surface *sur = Surface::Allocate(SC_TECHNOLOGY_DEFAULT);
+    if (sur) {
+      sur->Init(wid);
+      ct.PaintCT(sur);
+      wnoutrefresh(_WINDOW(wid));
+      sur->Release();
+      delete sur;
+    }
+  }
+  /** Adding menu items to the popup menu is not implemented. */
+  void AddToPopUp(const char *label, int cmd=0, bool enabled=true) {}
+  /**
+   * Sends the given message and parameters to Scintilla unless it is a message
+   * that changes an unsupported property.
+   */
+  sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
+    try {
+      switch (iMessage) {
+        case SCI_GETDIRECTFUNCTION:
+          return reinterpret_cast<sptr_t>(scintilla_send_message);
+        case SCI_GETDIRECTPOINTER: return reinterpret_cast<sptr_t>(this);
+        // Ignore attempted changes of the following unsupported properties.
+        case SCI_SETBUFFEREDDRAW:
+        case SCI_SETWHITESPACESIZE:
+        case SCI_SETTWOPHASEDRAW: case SCI_SETPHASESDRAW:
+        case SCI_SETEXTRAASCENT: case SCI_SETEXTRADESCENT:
+          return 0;
+        // Pass to Scintilla.
+        default: return ScintillaBase::WndProc(iMessage, wParam, lParam);
+      }
+    } catch (std::bad_alloc&) {
+      errorStatus = SC_STATUS_BADALLOC;
+    } catch (...) {
+      errorStatus = SC_STATUS_FAILURE;
+    }
+    return 0;
+  }
+
+  /**
+   * Returns the curses `WINDOW` associated with this Scintilla instance.
+   * If the `WINDOW` has not been created yet, create it now.
+   */
+  WINDOW *GetWINDOW() {
+    if (!wMain.GetID()) {
+      init_colors();
+      wMain = newwin(0, 0, 0, 0);
+      WINDOW *w = _WINDOW(wMain.GetID());
+      keypad(w, TRUE);
+      if (sur)
+        sur->Init(w);
+      getmaxyx(w, height, width);
+      InvalidateStyleRedraw(); // needed to fully initialize Scintilla
+    }
+    return _WINDOW(wMain.GetID());
+  }
+  /**
+   * Repaints the Scintilla window on the virtual screen.
+   * If an autocompletion list, user list, or calltip is active, redraw it over
+   * the buffer's contents.
+   * It is the application's responsibility to call the curses `doupdate()` in
+   * order to refresh the physical screen.
+   * To paint to the physical screen instead, use `Refresh()`.
+   * @see Refresh
+   */
+  void NoutRefresh() {
+    WINDOW *w = GetWINDOW();
+    rcPaint.top = 0, rcPaint.left = 0; // paint from (0, 0), not (begy, begx)
+    getmaxyx(w, rcPaint.bottom, rcPaint.right);
+    if (rcPaint.bottom != height || rcPaint.right != width)
+      height = rcPaint.bottom, width = rcPaint.right, ChangeSize();
+    Paint(sur, rcPaint);
+    SetVerticalScrollPos(), SetHorizontalScrollPos();
+    wnoutrefresh(w);
+#if PDCURSES
+    touchwin(w); // pdcurses sometimes has problems drawing overlapping windows
+#endif
+    if (ac.Active())
+      ac.lb->Select(ac.lb->GetSelection()); // redraw
+    else if (ct.inCallTipMode)
+      CreateCallTipWindow(PRectangle(0, 0, 0, 0)); // redraw
+    if (hasFocus) {
+      // Update cursor position, even if it's not visible, as the container may
+      // have a use for it.
+      int pos = WndProc(SCI_GETCURRENTPOS, 0, 0);
+      move(getbegy(w) + WndProc(SCI_POINTYFROMPOSITION, 0, pos),
+           getbegx(w) + WndProc(SCI_POINTXFROMPOSITION, 0, pos));
+    }
+  }
+  /**
+   * Repaints the Scintilla window on the physical screen.
+   * If an autocompletion list, user list, or calltip is active, redraw it over
+   * the buffer's contents.
+   * To paint to the virtual screen instead, use `NoutRefresh()`.
+   * @see NoutRefresh
+   */
+  void Refresh() {
+    NoutRefresh();
+    doupdate();
+  }
+  /**
+   * Sends a key to Scintilla.
+   * Usually if a key is consumed, the screen should be repainted. However, when
+   * autocomplete is active, that window is consuming the keys and any
+   * repainting of the main Scintilla window will overwrite the autocomplete
+   * window.
+   * @param key The key pressed.
+   * @param shift Flag indicating whether or not the shift modifier key is
+   *   pressed.
+   * @param shift Flag indicating whether or not the control modifier key is
+   *   pressed.
+   * @param shift Flag indicating whether or not the alt modifier key is
+   *   pressed.
+   */
+  void KeyPress(int key, bool shift, bool ctrl, bool alt) {
+    KeyDownWithModifiers(key, ModifierFlags(shift, ctrl, alt), NULL);
+  }
+  /**
+   * Handles a mouse button press.
+   * @param button The button number pressed, or `0` if none.
+   * @param time The time in milliseconds of the mouse event.
+   * @param y The y coordinate of the mouse event relative to this window.
+   * @param x The x coordinate of the mouse event relative to this window.
+   * @param shift Flag indicating whether or not the shift modifier key is
+   *   pressed.
+   * @param ctrl Flag indicating whether or not the control modifier key is
+   *   pressed.
+   * @param alt Flag indicating whether or not the alt modifier key is pressed.
+   * @return whether or not the mouse event was handled
+   */
+  bool MousePress(int button, unsigned int time, int y, int x, bool shift,
+                  bool ctrl, bool alt) {
+    GetWINDOW(); // ensure the curses `WINDOW` has been created
+    if (ac.Active() && (button == 1 || button == 4 || button == 5)) {
+      // Select an autocompletion list item if possible or scroll the list.
+      WINDOW *w = _WINDOW(ac.lb->GetID()), *parent = GetWINDOW();
+      int begy = getbegy(w) - getbegy(parent); // y is relative to the view
+      int begx = getbegx(w) - getbegx(parent); // x is relative to the view
+      int maxy = getmaxy(w) - 1, maxx = getmaxx(w) - 1; // ignore border
+      int ry = y - begy, rx = x - begx; // relative to list box
+      if (ry > 0 && ry < maxy && rx > 0 && rx < maxx) {
+        if (button == 1) {
+          // Select a list item.
+          // The currently selected item is normally displayed in the middle.
+          int middle = ac.lb->GetVisibleRows() / 2;
+          int n = ac.lb->GetSelection(), ny = middle;
+          if (n < middle)
+            ny = n; // the currently selected item is near the beginning
+          else if (n >= ac.lb->Length() - middle)
+            ny = (n - 1) % ac.lb->GetVisibleRows(); // it's near the end
+          // Compute the index of the item to select.
+          int offset = ry - ny - 1; // -1 ignores list box border
+          if (offset == 0 &&
+              time - autoCompleteLastClickTime < Platform::DoubleClickTime()) {
+            ListBoxImpl* listbox = reinterpret_cast<ListBoxImpl *>(ac.lb.get());
+            if (listbox->delegate) {
+              ListBoxEvent event(ListBoxEvent::EventType::doubleClick);
+              listbox->delegate->ListNotify(&event);
+            }
+          } else ac.lb->Select(n + offset);
+          autoCompleteLastClickTime = time;
+        } else {
+          // Scroll the list.
+          int n = ac.lb->GetSelection();
+          if (button == 4 && n > 0)
+            ac.lb->Select(n - 1);
+          else if (button == 5 && n < ac.lb->Length() - 1)
+            ac.lb->Select(n + 1);
+        }
+        return true;
+      } else if (ry == 0 || ry == maxy || rx == 0 || rx == maxx)
+        return true; // ignore border click
+    } else if (ct.inCallTipMode && button == 1) {
+      // Send the click to the CallTip.
+      WINDOW *w = _WINDOW(ct.wCallTip.GetID()), *parent = GetWINDOW();
+      int begy = getbegy(w) - getbegy(parent); // y is relative to the view
+      int begx = getbegx(w) - getbegx(parent); // x is relative to the view
+      int maxy = getmaxy(w) - 1, maxx = getmaxx(w) - 1; // ignore border
+      int ry = y - begy, rx = x - begx; // relative to list box
+      if (ry >= 0 && ry <= maxy && rx >= 0 && rx <= maxx) {
+        ct.MouseClick(Point(rx, ry));
+        return (CallTipClick(), true);
+      }
+    }
+
+    if (button == 1) {
+      if (verticalScrollBarVisible && x == getmaxx(GetWINDOW()) - 1) {
+        // Scroll the vertical scrollbar.
+        if (y < scrollBarVPos)
+          return (ScrollTo(topLine - LinesOnScreen()), true);
+        else if (y >= scrollBarVPos + scrollBarHeight)
+          return (ScrollTo(topLine + LinesOnScreen()), true);
+        else
+          draggingVScrollBar = true, dragOffset = y - scrollBarVPos;
+      } else if (horizontalScrollBarVisible && y == getmaxy(GetWINDOW()) - 1) {
+        // Scroll the horizontal scroll bar.
+        if (x < scrollBarHPos)
+          return (HorizontalScrollTo(xOffset - getmaxx(GetWINDOW()) / 2), true);
+        else if (x >= scrollBarHPos + scrollBarWidth)
+          return (HorizontalScrollTo(xOffset + getmaxx(GetWINDOW()) / 2), true);
+        else
+          draggingHScrollBar = true, dragOffset = x - scrollBarHPos;
+      } else {
+        // Have Scintilla handle the click.
+        ButtonDownWithModifiers(Point(x, y), time,
+                                ModifierFlags(shift, ctrl, alt));
+        return true;
+      }
+    } else if (button == 4 || button == 5) {
+      // Scroll the view.
+      int lines = getmaxy(GetWINDOW()) / 4;
+      if (lines < 1) lines = 1;
+      if (button == 4) lines *= -1;
+      return (ScrollTo(topLine + lines), true);
+    }
+    return false;
+  }
+  /**
+   * Sends a mouse move event to Scintilla, returning whether or not Scintilla
+   * handled the mouse event.
+   * @param y The y coordinate of the mouse event relative to this window.
+   * @param x The x coordinate of the mouse event relative to this window.
+   * @param shift Flag indicating whether or not the shift modifier key is
+   *   pressed.
+   * @param ctrl Flag indicating whether or not the control modifier key is
+   *   pressed.
+   * @param alt Flag indicating whether or not the alt modifier key is pressed.
+   * @return whether or not Scintilla handled the mouse event
+   */
+  bool MouseMove(int y, int x, bool shift, bool ctrl, bool alt) {
+    GetWINDOW(); // ensure the curses `WINDOW` has been created
+    if (!draggingVScrollBar && !draggingHScrollBar) {
+      ButtonMoveWithModifiers(Point(x, y), 0, ModifierFlags(shift, ctrl, alt));
+    } else if (draggingVScrollBar) {
+      int maxy = getmaxy(GetWINDOW()) - scrollBarHeight, pos = y - dragOffset;
+      if (pos >= 0 && pos <= maxy) ScrollTo(pos * MaxScrollPos() / maxy);
+      return true;
+    } else if (draggingHScrollBar) {
+      int maxx = getmaxx(GetWINDOW()) - scrollBarWidth, pos = x - dragOffset;
+      if (pos >= 0 && pos <= maxx)
+        HorizontalScrollTo(pos * (scrollWidth - maxx - scrollBarWidth) / maxx);
+      return true;
+    }
+    return HaveMouseCapture();
+  }
+  /**
+   * Sends a mouse release event to Scintilla.
+   * @param time The time in milliseconds of the mouse event.
+   * @param y The y coordinate of the mouse event relative to this window.
+   * @param x The x coordinate of the mouse event relative to this window.
+   * @param ctrl Flag indicating whether or not the control modifier key is
+   *   pressed.
+   */
+  void MouseRelease(int time, int y, int x, int ctrl) {
+    GetWINDOW(); // ensure the curses `WINDOW` has been created
+    if (draggingVScrollBar || draggingHScrollBar)
+      draggingVScrollBar = false, draggingHScrollBar = false;
+    else if (HaveMouseCapture()) {
+      ButtonUpWithModifiers(Point(x, y), time,
+                            ModifierFlags(ctrl, false, false));
+      // TODO: ListBoxEvent event(ListBoxEvent::EventType::selectionChange);
+      // TODO: listbox->delegate->ListNotify(&event);
+    }
+  }
+  /**
+   * Copies the text of the internal clipboard, not the primary and/or secondary
+   * X selections, into the given buffer and returns the size of the clipboard
+   * text.
+   * @param text The buffer to copy clipboard text to.
+   * @return size of the clipboard text
+   */
+  int GetClipboard(char *buffer) {
+    if (buffer) memcpy(buffer, clipboard.Data(), clipboard.Length() + 1);
+    return clipboard.Length() + 1;
+  }
+};
+
+// Link with C. Documentation in Scintilla.h.
+extern "C" {
+void *scintilla_new(void (*callback)(void *, int, void *, void *)) {
+  return reinterpret_cast<void *>(new ScintillaCurses(callback));
+}
+WINDOW *scintilla_get_window(void *sci) {
+  return reinterpret_cast<ScintillaCurses *>(sci)->GetWINDOW();
+}
+sptr_t scintilla_send_message(void *sci, unsigned int iMessage, uptr_t wParam,
+                              sptr_t lParam) {
+  return reinterpret_cast<ScintillaCurses *>(sci)->WndProc(iMessage, wParam,
+                                                           lParam);
+}
+void scintilla_send_key(void *sci, int key, bool shift, bool ctrl, bool alt) {
+  reinterpret_cast<ScintillaCurses *>(sci)->KeyPress(key, shift, ctrl, alt);
+}
+bool scintilla_send_mouse(void *sci, int event, unsigned int time, int button,
+                          int y, int x, bool shift, bool ctrl, bool alt) {
+  ScintillaCurses *scicurses = reinterpret_cast<ScintillaCurses *>(sci);
+  WINDOW *w = scicurses->GetWINDOW();
+  int begy = getbegy(w), begx = getbegx(w);
+  int maxy = getmaxy(w), maxx = getmaxx(w);
+  // Ignore most events outside the window.
+  if ((x < begx || x > begx + maxx - 1 || y < begy || y > begy + maxy - 1) &&
+      button != 4 && button != 5) return false;
+  y = y - begy, x = x - begx;
+  if (event == SCM_PRESS)
+    return scicurses->MousePress(button, time, y, x, shift, ctrl, alt);
+  else if (event == SCM_DRAG)
+    return scicurses->MouseMove(y, x, shift, ctrl, alt);
+  else if (event == SCM_RELEASE)
+    return (scicurses->MouseRelease(time, y, x, ctrl), true);
+  return false;
+}
+int scintilla_get_clipboard(void *sci, char *buffer) {
+  return reinterpret_cast<ScintillaCurses *>(sci)->GetClipboard(buffer);
+}
+void scintilla_noutrefresh(void *sci) {
+  reinterpret_cast<ScintillaCurses *>(sci)->NoutRefresh();
+}
+void scintilla_refresh(void *sci) {
+  reinterpret_cast<ScintillaCurses *>(sci)->Refresh();
+}
+void scintilla_delete(void *sci) {
+  delete reinterpret_cast<ScintillaCurses *>(sci);
+}
+}

+ 128 - 0
maxguitextareascintilla.mod/scintilla/curses/ScintillaCurses.h

@@ -0,0 +1,128 @@
+// Copyright 2012-2018 Mitchell mitchell.att.foicica.com. See License.txt.
+// Header for Scintilla in a curses (terminal) environment.
+
+#ifndef SCINTILLACURSES_H
+#define SCINTILLACURSES_H
+
+#include <curses.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Creates a new Scintilla window.
+ * Curses does not have to be initialized before calling this function.
+ * @param callback A callback function for Scintilla notifications.
+ */
+void *scintilla_new(void (*callback)(void *sci, int iMessage, void *wParam,
+                                     void *lParam));
+/**
+ * Returns the curses `WINDOW` associated with the given Scintilla window.
+ * Curses must have been initialized prior to calling this function.
+ * @param sci The Scintilla window returned by `scintilla_new()`.
+ * @return curses `WINDOW`.
+ */
+WINDOW *scintilla_get_window(void *sci);
+/**
+ * Sends the given message with parameters to the given Scintilla window.
+ * Curses does not have to be initialized before calling this function.
+ * @param sci The Scintilla window returned by `scintilla_new()`.
+ * @param iMessage The message ID.
+ * @param wParam The first parameter.
+ * @param lParam The second parameter.
+ */
+sptr_t scintilla_send_message(void *sci, unsigned int iMessage, uptr_t wParam,
+                              sptr_t lParam);
+/**
+ * Sends the specified key to the given Scintilla window for processing.
+ * If it is not consumed, an SCNotification will be emitted.
+ * Curses does not have to be initialized before calling this function.
+ * @param sci The Scintilla window returned by `scintilla_new()`.
+ * @param key The keycode of the key.
+ * @param shift Flag indicating whether or not the shift modifier key is
+ *   pressed.
+ * @param ctrl Flag indicating whether or not the control modifier key is
+ *   pressed.
+ * @param alt Flag indicating whether or not the alt modifier key is pressed.
+ */
+void scintilla_send_key(void *sci, int key, bool shift, bool ctrl, bool alt);
+/**
+ * Sends the specified mouse event to the given Scintilla window for processing.
+ * Curses must have been initialized prior to calling this function.
+ * @param sci The Scintilla window returned by `scintilla_new()`.
+ * @param event The mouse event (`SCM_CLICK`, `SCM_DRAG`, or `SCM_RELEASE`).
+ * @param time The time in milliseconds of the mouse event. This is only needed
+ *   if double and triple clicks need to be detected.
+ * @param button The button number pressed, or `0` if none.
+ * @param y The absolute y coordinate of the mouse event.
+ * @param x The absolute x coordinate of the mouse event.
+ * @param shift Flag indicating whether or not the shift modifier key is
+ *   pressed.
+ * @param ctrl Flag indicating whether or not the control modifier key is
+ *   pressed.
+ * @param alt Flag indicating whether or not the alt modifier key is pressed.
+ * @return whether or not Scintilla handled the mouse event
+ */
+bool scintilla_send_mouse(void *sci, int event, unsigned int time, int button,
+                          int y, int x, bool shift, bool ctrl, bool alt);
+/**
+ * Copies the text of Scintilla's internal clipboard, not the primary and/or
+ * secondary X selections, into the given buffer and returns the size of the
+ * clipboard text.
+ * Call with a `null` buffer first to get the size of the buffer needed to store
+ * clipboard text.
+ * Keep in mind clipboard text may contain null bytes.
+ * Curses does not have to be initialized before calling this function.
+ * @param sci The Scintilla window returned by `scintilla_new()`.
+ * @param buffer The buffer to copy clipboard text to.
+ * @return size of the clipboard text.
+ */
+int scintilla_get_clipboard(void *sci, char *buffer);
+/**
+ * Refreshes the Scintilla window on the virtual screen.
+ * This should be done along with the normal curses `noutrefresh()`, as the
+ * virtual screen is updated when calling this function.
+ * Curses must have been initialized prior to calling this function.
+ * @param sci The Scintilla window returned by `scintilla_new()`.
+ */
+void scintilla_noutrefresh(void *sci);
+/**
+ * Refreshes the Scintilla window on the physical screen.
+ * This should be done along with the normal curses `refresh()`, as the physical
+ * screen is updated when calling this function.
+ * Curses must have been initialized prior to calling this function.
+ * @param sci The Scintilla window returned by `scintilla_new()`.
+ */
+void scintilla_refresh(void *sci);
+/**
+ * Deletes the given Scintilla window.
+ * Curses must have been initialized prior to calling this function.
+ * @param sci The Scintilla window returned by `scintilla_new()`.
+ */
+void scintilla_delete(void *sci);
+
+/**
+ * Returns the curses `COLOR_PAIR` for the given curses foreground and
+ * background `COLOR`s.
+ * This is used simply to enumerate every possible color combination.
+ * Note: only 256 combinations are possible due to curses portability.
+ * Note: This references the global curses variable `COLORS` and is
+ * not a constant expression.
+ * @param f The curses foreground `COLOR`.
+ * @param b The curses background `COLOR`.
+ * @return int number for defining a curses `COLOR_PAIR`.
+ */
+#define SCI_COLOR_PAIR(f, b) ((b) * ((COLORS < 16) ? 8 : 16) + (f) + 1)
+
+#define IMAGE_MAX 31
+
+#define SCM_PRESS 1
+#define SCM_DRAG 2
+#define SCM_RELEASE 3
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 14 - 0
maxguitextareascintilla.mod/scintilla/curses/THANKS.md

@@ -0,0 +1,14 @@
+# Thanks
+
+Thank you everyone for your contributions and feedback. They have helped improve
+Scintilla curses.
+
+## Code Contributors
+
+* Chad Voegele
+* Chris Emerson
+* Neil Hodgson
+* Paul Evans
+* Peter Kazmier
+* Robin Haberkorn
+* Valere Monseur

+ 17 - 0
maxguitextareascintilla.mod/scintilla/curses/jinx/Makefile

@@ -0,0 +1,17 @@
+# Copyright 2012-2018 Mitchell mitchell.att.foicica.com. See License.txt.
+
+CC = gcc
+CXX = g++
+INCLUDEDIRS = -I ../../include -I ../../src -I ../../lexlib -I ../
+CFLAGS = -DCURSES -DSCI_LEXER -Wall $(INCLUDEDIRS)
+CXXFLAGS = $(CFLAGS)
+ifdef LPEG_LEXER
+  CFLAGS += -DLPEG_LEXER -I ../src/lua
+endif
+
+scintilla = ../../bin/scintilla.a
+
+all: jinx
+jinx.o: jinx.c ; $(CC) $(CFLAGS) -c $<
+jinx: jinx.o $(scintilla) ; $(CXX) $^ -o $@ -lncursesw
+clean: ; rm -f jinx *.o

+ 118 - 0
maxguitextareascintilla.mod/scintilla/curses/jinx/jinx.c

@@ -0,0 +1,118 @@
+// Copyright 2012-2018 Mitchell mitchell.att.foicica.com. See License.txt.
+
+#include <locale.h>
+#include <sys/time.h>
+#include <curses.h>
+
+#include "Scintilla.h"
+#include "SciLexer.h"
+#include "ScintillaCurses.h"
+
+#define SSM(m, w, l) scintilla_send_message(sci, m, w, l)
+
+typedef void Scintilla;
+
+void scnotification(Scintilla *view, int msg, void *lParam, void *wParam) {
+  //struct SCNotification *scn = (struct SCNotification *)lParam;
+  //printw("SCNotification received: %i", scn->nmhdr.code);
+}
+
+int main(int argc, char **argv) {
+  setlocale(LC_CTYPE, ""); // for displaying UTF-8 characters properly
+  initscr(), raw(), cbreak(), noecho(), start_color();
+  Scintilla *sci = scintilla_new(scnotification);
+  curs_set(0); // Scintilla draws its own cursor
+
+  SSM(SCI_STYLESETFORE, STYLE_DEFAULT, 0xFFFFFF);
+  SSM(SCI_STYLESETBACK, STYLE_DEFAULT, 0);
+  SSM(SCI_STYLECLEARALL, 0, 0);
+#if !LPEG_LEXER
+  SSM(SCI_SETLEXER, SCLEX_CPP, 0);
+  SSM(SCI_SETKEYWORDS, 0, (sptr_t)"int char");
+  SSM(SCI_STYLESETFORE, SCE_C_COMMENT, 0x00FF00);
+  SSM(SCI_STYLESETFORE, SCE_C_COMMENTLINE, 0x00FF00);
+  SSM(SCI_STYLESETFORE, SCE_C_NUMBER, 0xFFFF00);
+  SSM(SCI_STYLESETFORE, SCE_C_WORD, 0xFF0000);
+  SSM(SCI_STYLESETFORE, SCE_C_STRING, 0xFF00FF);
+  SSM(SCI_STYLESETBOLD, SCE_C_OPERATOR, 1);
+#else
+  SSM(SCI_SETLEXER, SCLEX_LPEG, 0);
+  SSM(SCI_SETPROPERTY, (uptr_t)"lexer.lpeg.home", (sptr_t)"../../lexlua");
+  SSM(SCI_SETPROPERTY, (uptr_t)"lexer.lpeg.color.theme", (sptr_t)"curses");
+  SSM(SCI_PRIVATELEXERCALL, SCI_GETDIRECTFUNCTION,
+      SSM(SCI_GETDIRECTFUNCTION, 0, 0));
+  SSM(SCI_PRIVATELEXERCALL, SCI_SETDOCPOINTER, SSM(SCI_GETDIRECTPOINTER, 0, 0));
+  SSM(SCI_PRIVATELEXERCALL, SCI_SETLEXERLANGUAGE, (sptr_t)"ansi_c");
+#endif
+  SSM(SCI_INSERTTEXT, 0, (sptr_t)
+      "int main(int argc, char **argv) {\n"
+      "    // Start up the gnome\n"
+      "    gnome_init(\"stest\", \"1.0\", argc, argv);\n}");
+  SSM(SCI_SETPROPERTY, (uptr_t)"fold", (sptr_t)"1");
+  SSM(SCI_SETMARGINWIDTHN, 2, 1);
+  SSM(SCI_SETMARGINMASKN, 2, SC_MASK_FOLDERS);
+  SSM(SCI_SETMARGINSENSITIVEN, 2, 1);
+  SSM(SCI_SETAUTOMATICFOLD, SC_AUTOMATICFOLD_CLICK, 0);
+  SSM(SCI_SETFOCUS, 1, 0);
+  scintilla_refresh(sci);
+
+  printf("\033[?1000h"); // enable mouse press and release events
+  //printf("\033[?1002h"); // enable mouse press, drag, and release events
+  //printf("\033[?1003h"); // enable mouse move, press, drag, and release events
+  mousemask(ALL_MOUSE_EVENTS, NULL);
+  mouseinterval(0);
+
+  // Non-UTF8 input.
+  int c = 0;
+  MEVENT mouse;
+  WINDOW *win = scintilla_get_window(sci);
+  while ((c = wgetch(win)) != 'q') {
+    if (c != KEY_MOUSE) {
+      if (c == KEY_UP) c = SCK_UP;
+      else if (c == KEY_DOWN) c = SCK_DOWN;
+      else if (c == KEY_LEFT) c = SCK_LEFT;
+      else if (c == KEY_RIGHT) c = SCK_RIGHT;
+      scintilla_send_key(sci, c, FALSE, FALSE, FALSE);
+    } else if (getmouse(&mouse) == OK) {
+      int event = SCM_DRAG, button = 0;
+      if (mouse.bstate & BUTTON1_PRESSED)
+        event = SCM_PRESS, button = 1;
+      else if (mouse.bstate & BUTTON1_RELEASED)
+        event = SCM_RELEASE, button = 1;
+      struct timeval time = {0, 0};
+      gettimeofday(&time, NULL);
+      int millis = time.tv_sec * 1000 + time.tv_usec / 1000;
+      scintilla_send_mouse(sci, event, millis, button, mouse.y, mouse.x,
+                           mouse.bstate & BUTTON_SHIFT,
+                           mouse.bstate & BUTTON_CTRL,
+                           mouse.bstate & BUTTON_ALT);
+    }
+    scintilla_refresh(sci);
+  }
+  // UTF-8 input.
+  //SSM(SCI_SETCODEPAGE, SC_CP_UTF8, 0);
+  //wint_t c = {0};
+  //WINDOW *win = scintilla_get_window(sci);
+  //while (c != 'q') {
+  //  int status = wget_wch(win, &c);
+  //  if (status == ERR)
+  //    continue;
+  //  else if (status == KEY_CODE_YES) {
+  //    if (c == KEY_UP) c = SCK_UP;
+  //    else if (c == KEY_DOWN) c = SCK_DOWN;
+  //    else if (c == KEY_LEFT) c = SCK_LEFT;
+  //    else if (c == KEY_RIGHT) c = SCK_RIGHT;
+  //  }
+  //  scintilla_send_key(sci, c, FALSE, FALSE, FALSE);
+  //  scintilla_refresh(sci);
+  //}
+
+  printf("\033[?1000l"); // disable mouse press and release events
+  //printf("\033[?1002l"); // disable mouse press, drag, and release events
+  //printf("\033[?1003l"); // disable mouse move, press, drag, and release
+
+  scintilla_delete(sci);
+  endwin();
+
+  return 0;
+}

+ 1 - 1
maxguitextareascintilla.mod/scintilla/delbin.bat

@@ -1 +1 @@
-del /S /Q *.a *.aps *.bsc *.dll *.dsw *.exe *.idb *.ilc *.ild *.ilf *.ilk *.ils *.lib *.map *.ncb *.obj *.o *.opt *.pdb *.plg *.res *.sbr *.tds *.exp *.tlog >NUL:
+@del /S /Q *.a *.aps *.bsc *.dll *.dsw *.exe *.idb *.ilc *.ild *.ilf *.ilk *.ils *.lib *.map *.ncb *.obj *.o *.opt *.pdb *.plg *.res *.sbr *.tds *.exp *.tlog >NUL:

+ 0 - 1
maxguitextareascintilla.mod/scintilla/delcvs.bat

@@ -1 +0,0 @@
-del /S /Q .cvsignore

+ 2 - 2
maxguitextareascintilla.mod/scintilla/doc/Design.html

@@ -49,14 +49,14 @@
       library and with limited use of templates.
     </p>
     <p>
-       The currently supported platforms, Windows, GTK+/Linux and wxWindows are fairly similar in
+       The currently supported platforms, Windows, GTK+/Linux, Cocoa and wxWidgets are fairly similar in
       many ways.
       Each has windows, menus and bitmaps. These features generally work in similar ways so each
       has a way to move a window or draw a red line. Sometimes one platform requires a sequence of
       calls rather than a single call. At other times, the differences are more profound. Reading
       the Windows clipboard occurs synchronously but reading the GTK+ clipboard requires a request
       call that will be asynchronously answered with a message containing the clipboard data.
-      The wxWindows platform is available from the <a href="http://wxwindows.org/">wxWindows site</a>
+      The wxWidgets platform is available from the <a href="http://wxwidgets.org/">wxWidgets site</a>
     </p>
     <br />
     <h3>

BIN=BIN
maxguitextareascintilla.mod/scintilla/doc/Indicators.png


+ 2608 - 0
maxguitextareascintilla.mod/scintilla/doc/LPegLexer.html

@@ -0,0 +1,2608 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+    <title>Lua LPeg Lexers</title>
+
+    <style type="text/css">
+      <!--
+      /*<![CDATA[*/
+        CODE { font-weight: bold; font-family: Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace; }
+        A:visited { color: blue; }
+        A:hover { text-decoration: underline ! important; }
+        A.message { text-decoration: none; font-weight: bold; font-family: Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace; }
+        A.seealso { text-decoration: none; font-weight: bold; font-family: Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace; }
+        A.toc { text-decoration: none; }
+        A.jump { text-decoration: none; }
+        LI.message { text-decoration: none; font-weight: bold; font-family: Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace; }
+        H2 { background: #E0EAFF; }
+
+        table {
+          border: 0px;
+          border-collapse: collapse;
+        }
+
+        table.categories {
+          border: 0px;
+          border-collapse: collapse;
+        }
+        table.categories td {
+          padding: 4px 12px;
+        }
+
+        table.standard {
+          border-collapse: collapse;
+        }
+        table.standard th {
+          background: #404040;
+          color: #FFFFFF;
+          padding: 1px 5px 1px 5px;
+        }
+        table.standard tr:nth-child(odd) {background: #D7D7D7}
+        table.standard tr:nth-child(even) {background: #F0F0F0}
+        table.standard td {
+          padding: 1px 5px 1px 5px;
+        }
+
+        .S0 {
+          color: #808080;
+        }
+        .S2 {
+          font-family: 'Comic Sans MS';
+          color: #007F00;
+          font-size: 9pt;
+        }
+        .S3 {
+          font-family: 'Comic Sans MS';
+          color: #3F703F;
+          font-size: 9pt;
+        }
+        .S4 {
+          color: #007F7F;
+        }
+        .S5 {
+          font-weight: bold;
+          color: #00007F;
+        }
+        .S9 {
+          color: #7F7F00;
+        }
+        .S10 {
+          font-weight: bold;
+          color: #000000;
+        }
+        .S17 {
+          font-family: 'Comic Sans MS';
+          color: #3060A0;
+          font-size: 9pt;
+        }
+        DIV.highlighted {
+          background: #F7FCF7;
+          border: 1px solid #C0D7C0;
+          margin: 0.3em 3em;
+          padding: 0.3em 0.6em;
+          font-family: 'Verdana';
+          color: #000000;
+          font-size: 10pt;
+        }
+        .provisional {
+          background: #FFB000;
+              }
+        .parameter {
+          font-style:italic;
+              }
+      /*]]>*/
+      -->
+    </style>
+  </head>
+
+  <body bgcolor="#FFFFFF" text="#000000">
+    <table bgcolor="#000000" width="100%" cellspacing="0" cellpadding="0" border="0"
+    summary="Banner">
+      <tr>
+        <td><img src="SciTEIco.png" border="3" height="64" width="64" alt="Scintilla icon" /></td>
+
+        <td><a href="index.html"
+        style="color:white;text-decoration:none;font-size:200%">Scintilla</a></td>
+      </tr>
+    </table>
+
+    <h1>Lua LPeg Lexers</h1>
+
+    <p>Scintilla's LPeg lexer adds dynamic <a href="http://lua.org">Lua</a>
+    <a href="http://www.inf.puc-rio.br/~roberto/lpeg/">LPeg</a> lexers to
+    Scintilla. It is the quickest way to add new or customized syntax
+    highlighting and code folding for programming languages to any
+    Scintilla-based text editor or IDE.</p>
+
+    <h2>Features</h2>
+
+    <ul>
+    <li>Support for <a href="#LexerList">over 100 programming languages</a>.</li>
+    <li>Easy lexer embedding for multi-language lexers.</li>
+    <li>Universal color themes.</li>
+    <li>Comparable speed to native Scintilla lexers.</li>
+    </ul>
+
+    <h2>Enabling and Configuring the LPeg Lexer</h2>
+
+    <p>Scintilla is <em>not</em> compiled with the LPeg lexer enabled by
+    default (it is present, but empty). You need to manually enable it with the
+    <code>LPEG_LEXER</code> flag when building Scintilla and its lexers. You
+    also need to build and link the Lua source files contained in Scintilla's
+    <code>lua/src/</code> directory to <code>lexers/LexLPeg.cxx</code>. If your
+    application has its own copy of Lua, you can ignore Scintilla's copy and
+    link to yours.
+
+    <p>At this time, only the GTK, curses, and MinGW32 (for win32) platform
+    makefiles facilitate enabling the LPeg lexer. For example, when building
+    Scintilla, run <code>make LPEG_LEXER=1</code>. User contributions to
+    facilitate this for the other platforms is encouraged.</p>
+
+    <p>When Scintilla is compiled with the LPeg lexer enabled, and after
+    selecting it as the lexer to use via
+    <a class="message" href="ScintillaDoc.html#SCI_SETLEXER">SCI_SETLEXER</a> or
+    <a class="message" href="ScintillaDoc.html#SCI_SETLEXERLANGUAGE">SCI_SETLEXERLANGUAGE</a>,
+    the following property <em>must</em> be set via
+    <a class="message" href="ScintillaDoc.html#SCI_SETPROPERTY">SCI_SETPROPERTY</a>:</p>
+
+    <table class="standard" summary="Search flags">
+      <tbody>
+        <tr>
+          <td><code>lexer.lpeg.home</code></td>
+
+          <td>The directory containing the Lua lexers. This is the path
+          where you included Scintilla's <code>lexlua/</code> directory in
+          your application's installation location.</td>
+        </tr>
+      </tbody>
+    </table>
+
+    <p>The following properties are optional and may or may not be set:</p>
+
+    <table class="standard" summary="Search flags">
+      <tbody>
+        <tr>
+          <td><code>lexer.lpeg.color.theme</code></td>
+
+          <td>The color theme to use. Color themes are located in the
+          <code>lexlua/themes/</code> directory. Currently supported themes
+          are <code>light</code>, <code>dark</code>, <code>scite</code>, and
+          <code>curses</code>. Your application can define colors and styles
+          manually through Scintilla properties. The theme files have
+          examples.</td>
+        </tr>
+
+        <tr>
+          <td><code>fold</code></td>
+
+          <td>For Lua lexers that have a folder, folding is turned on if
+          <code>fold</code> is set to <code>1</code>. The default is
+          <code>0</code>.</td>
+        </tr>
+
+        <tr>
+          <td><code>fold.by.indentation</code</td>
+
+          <td>For Lua lexers that do not have a folder, if
+          <code>fold.by.indentation</code> is set to <code>1</code>, folding is
+          done based on indentation level (like Python). The default is
+          <code>0</code>.</td>
+        </tr>
+
+        <tr>
+          <td><code>fold.line.comments</code></td>
+
+          <td>If <code>fold.line.comments</code> is set to <code>1</code>,
+          multiple, consecutive line comments are folded, and only the top-level
+          comment is shown. There is a small performance penalty for large
+          source files when this option and folding are enabled. The default is
+          <code>0</code>.</td>
+        </tr>
+
+        <tr>
+          <td><code>fold.on.zero.sum.lines</code></td>
+
+          <td>If <code>fold.on.zero.sum.lines</code> is set to <code>1</code>,
+          lines that contain both an ending and starting fold point are marked
+          as fold points. For example, the C line <code>} else {</code> would be
+          marked as a fold point. The default is <code>0</code>.</td>
+        </tr>
+      </tbody>
+    </table>
+
+    <h2>Using the LPeg Lexer</h2>
+
+    <p>Your application communicates with the LPeg lexer using Scintilla's
+    <a class="message" href="ScintillaDoc.html#SCI_PRIVATELEXERCALL"><code>SCI_PRIVATELEXERCALL</code></a>
+    API. The operation constants recognized by the LPeg lexer are based on
+    Scintilla's existing named constants. Note that some of the names of the
+    operations do not make perfect sense. This is a tradeoff in order to reuse
+    Scintilla's existing constants.</p>
+
+    <p>In the descriptions that follow,
+    <code>SCI_PRIVATELEXERCALL(int operation, void *pointer)</code> means you
+    would call Scintilla like
+    <code>SendScintilla(sci, SCI_PRIVATELEXERCALL, operation, pointer);</code></p>
+
+    <h3>Usage Example</h3>
+
+    <p>The curses platform demo, jinx, has a C-source example for using the LPeg
+    lexer. Additionally, here is a pseudo-code example:</p>
+
+    <pre><code>
+    init_app() {
+      sci = scintilla_new()
+    }
+
+    create_doc() {
+      doc = SendScintilla(sci, SCI_CREATEDOCUMENT, 0, 0)
+      SendScintilla(sci, SCI_SETDOCPOINTER, 0, doc)
+      SendScintilla(sci, SCI_SETLEXERLANGUAGE, 0, "lpeg")
+      home = "/home/mitchell/app/lua_lexers"
+      SendScintilla(sci, SCI_SETPROPERTY, "lexer.lpeg.home", home)
+      SendScintilla(sci, SCI_SETPROPERTY, "lexer.lpeg.color.theme", "light")
+      fn = SendScintilla(sci, SCI_GETDIRECTFUNCTION, 0, 0)
+      SendScintilla(sci, SCI_PRIVATELEXERCALL, SCI_GETDIRECTFUNCTION, fn)
+      psci = SendScintilla(sci, SCI_GETDIRECTPOINTER, 0, 0)
+      SendScintilla(sci, SCI_PRIVATELEXERCALL, SCI_SETDOCPOINTER, psci)
+      SendScintilla(sci, SCI_PRIVATELEXERCALL, SCI_SETLEXERLANGUAGE, "lua")
+    }
+
+    set_lexer(lang) {
+      psci = SendScintilla(sci, SCI_GETDIRECTPOINTER, 0, 0)
+      SendScintilla(sci, SCI_PRIVATELEXERCALL, SCI_SETDOCPOINTER, psci)
+      SendScintilla(sci, SCI_PRIVATELEXERCALL, SCI_SETLEXERLANGUAGE, lang)
+    }
+    </code></pre>
+
+    <code><a class="message" href="#SCI_CHANGELEXERSTATE">SCI_PRIVATELEXERCALL(SCI_CHANGELEXERSTATE, lua_State *L)</a><br/>
+    <a class="message" href="#SCI_GETDIRECTFUNCTION">SCI_PRIVATELEXERCALL(SCI_GETDIRECTFUNCTION, int SciFnDirect)</a><br/>
+    <a class="message" href="#SCI_GETLEXERLANGUAGE">SCI_PRIVATELEXERCALL(SCI_GETLEXERLANGUAGE, char *languageName) &rarr; int</a><br/>
+    <a class="message" href="#SCI_GETSTATUS">SCI_PRIVATELEXERCALL(SCI_GETSTATUS, char *errorMessage) &rarr; int</a><br/>
+    <a class="message" href="#styleNum">SCI_PRIVATELEXERCALL(int styleNum, char *styleName) &rarr; int</a><br/>
+    <a class="message" href="#SCI_SETDOCPOINTER">SCI_PRIVATELEXERCALL(SCI_SETDOCPOINTER, int sci)</a><br/>
+    <a class="message" href="#SCI_SETLEXERLANGUAGE">SCI_PRIVATELEXERCALL(SCI_SETLEXERLANGUAGE, languageName)</a><br/>
+    </code>
+
+    <p><b id="SCI_CHANGELEXERSTATE">SCI_PRIVATELEXERCALL(SCI_CHANGELEXERSTATE, lua_State *L)</b><br/>
+    Tells the LPeg lexer to use <code>L</code> as its Lua state instead of
+    creating a separate state.</p>
+
+    <p><code>L</code> must have already opened the "base", "string", "table",
+    "package", and "lpeg" libraries. If <code>L</code> is a Lua 5.1 state, it
+    must have also opened the "io" library.</p>
+
+    <p>The LPeg lexer will create a single <code>lexer</code> package (that can
+    be used with Lua's <code>require</code> function), as well as a number of
+    other variables in the <code>LUA_REGISTRYINDEX</code> table with the "sci_"
+    prefix.</p>
+
+    <p>Rather than including the path to Scintilla's Lua lexers in the
+    <code>package.path</code> of the given Lua state, set the "lexer.lpeg.home"
+    property instead. The LPeg lexer uses that property to find and load
+    lexers.</p>
+
+    <p>Usage:</p>
+
+    <pre><code>
+    lua = luaL_newstate()
+    SendScintilla(sci, SCI_PRIVATELEXERCALL, SCI_CHANGELEXERSTATE, lua)
+    </code></pre>
+
+    <p><b id="SCI_GETDIRECTFUNCTION">SCI_PRIVATELEXERCALL(SCI_GETDIRECTFUNCTION, SciFnDirect)</b><br/>
+    Tells the LPeg lexer the address of <code>SciFnDirect</code>, the function
+    that handles Scintilla  messages.</p>
+
+    <p>Despite the name <code>SCI_GETDIRECTFUNCTION</code>, it only notifies the
+    LPeg lexer what the value of <code>SciFnDirect</code> obtained from
+    <a class="message" href="ScintillaDoc.html#SCI_GETDIRECTFUNCTION"><code>SCI_GETDIRECTFUNCTION</code></a>
+    is. It does not return anything. Use this if you would like to have the LPeg
+    lexer set all Lua lexer styles automatically. This is useful for maintaining
+    a consistent color theme. Do not use this if your application maintains its
+    own color theme.</p>
+
+    <p>If you use this call, it <em>must</em> be made <em>once</em> for each
+    Scintilla document that was created using Scintilla's
+    <a class="message" href="ScintillaDoc.html#SCI_CREATEDOCUMENT"><code>SCI_CREATEDOCUMENT</code></a>.
+    You must also use the
+    <a class="message" href="#SCI_SETDOCPOINTER"><code>SCI_SETDOCPOINTER</code></a> LPeg lexer
+    API call.</p>
+
+    <p>Usage:</p>
+
+    <pre><code>
+    fn = SendScintilla(sci, SCI_GETDIRECTFUNCTION, 0, 0)
+    SendScintilla(sci, SCI_PRIVATELEXERCALL, SCI_GETDIRECTFUNCTION, fn)
+    </code></pre>
+
+    <p>See also: <a class="message" href="#SCI_SETDOCPOINTER"><code>SCI_SETDOCPOINTER</code></a></p>
+
+    <p><b id="SCI_GETLEXERLANGUAGE">SCI_PRIVATELEXERCALL(SCI_GETLEXERLANGUAGE, char *languageName) &rarr; int</b><br/>
+    Returns the length of the string name of the current Lua lexer or stores the
+    name into the given buffer. If the buffer is long enough, the name is
+    terminated by a <code>0</code> character.</p>
+
+    <p>For parent lexers with embedded children or child lexers embedded into
+    parents, the name is in "lexer/current" format, where "lexer" is the actual
+    lexer's name and "current" is the parent or child lexer at the current caret
+    position. In order for this to work, you must have called
+    <a class="message" href="#SCI_GETDIRECTFUNCTION"><code>SCI_GETDIRECTFUNCTION</code></a>
+    and
+    <a class="message" href="#SCI_SETDOCPOINTER"><code>SCI_SETDOCPOINTER</code></a>.</p>
+
+    <p><b id="SCI_GETSTATUS">SCI_PRIVATELEXERCALL(SCI_GETSTATUS, char *errorMessage) &rarr; int</b><br/>
+    Returns the length of the error message of the LPeg lexer or Lua lexer error
+    that occurred (if any), or stores the error message into the given buffer.</p>
+
+    <p>If no error occurred, the returned message will be empty.</p>
+
+    <p>Since the LPeg lexer does not throw errors as they occur, errors can only
+    be handled passively. Note that the LPeg lexer does print all errors to
+    stderr.</p>
+
+    <p>Usage:</p>
+
+    <pre><code>
+    SendScintilla(sci, SCI_PRIVATELEXERCALL, SCI_GETSTATUS, errmsg)
+    if (strlen(errmsg) &gt; 0) { /* handle error */ }
+    </code></pre>
+
+    <p><b id="SCI_PRIVATELEXERCALL">SCI_PRIVATELEXERCALL(int styleNum, char *styleName) &rarr; int</b><br/>
+    Returns the length of the token name associated with the given style number
+    or stores the style name into the given buffer. If the buffer is long
+    enough, the string is terminated by a <code>0</code> character.</p>
+
+    <p>Usage:</p>
+
+    <pre><code>
+    style = SendScintilla(sci, SCI_GETSTYLEAT, pos, 0)
+    SendScintilla(sci, SCI_PRIVATELEXERCALL, style, token)
+    // token now contains the name of the style at pos
+    </code></pre>
+
+    <p><b id="SCI_SETDOCPOINTER">SCI_PRIVATELEXERCALL(SCI_SETDOCPOINTER, int sci)</b><br/>
+    Tells the LPeg lexer the address of the Scintilla window (obtained via
+    Scintilla's
+    <a class="message" href="ScintillaDoc.html#SCI_GETDIRECTPOINTER"><code>SCI_GETDIRECTPOINTER</code></a>)
+    currently in use.</p>
+
+    <p>Despite the name <code>SCI_SETDOCPOINTER</code>, it has no relationship
+    to Scintilla documents.</p>
+
+    <p>Use this call only if you are using the
+    <a class="message" href="#SCI_GETDIRECTFUNCTION"><code>SCI_GETDIRECTFUNCTION</code></a>
+    LPeg lexer API call. It <em>must</em> be made <em>before</em> each call to
+    the <a class="message" href="#SCI_SETLEXERLANGUAGE"><code>SCI_SETLEXERLANGUAGE</code></a>
+    LPeg lexer API call.</p>
+
+    <p>Usage:</p>
+
+    <pre><code>
+    SendScintilla(sci, SCI_PRIVATELEXERCALL, SCI_SETDOCPOINTER, sci)
+    </code></pre>
+
+    <p>See also: <a class="message" href="#SCI_GETDIRECTFUNCTION"><code>SCI_GETDIRECTFUNCTION</code></a>,
+    <a class="message" href="#SCI_SETLEXERLANGUAGE"><code>SCI_SETLEXERLANGUAGE</code></a></p>
+
+    <p><b id="SCI_SETLEXERLANGUAGE">SCI_PRIVATELEXERCALL(SCI_SETLEXERLANGUAGE, const char *languageName)</b><br/>
+    Sets the current Lua lexer to <code>languageName</code>.</p>
+
+    <p>If you are having the LPeg lexer set the Lua lexer styles automatically,
+    make sure you call the
+    <a class="message" href="#SCI_SETDOCPOINTER"><code>SCI_SETDOCPOINTER</code></a>
+    LPeg lexer API <em>first</em>.</p>
+
+    <p>Usage:</p>
+
+    <pre><code>
+    SendScintilla(sci, SCI_PRIVATELEXERCALL, SCI_SETLEXERLANGUAGE, "lua")
+    </code></pre>
+
+    <p>See also: <a class="message" href="#SCI_SETDOCPOINTER"><code>SCI_SETDOCPOINTER</code></a></p>
+
+    <h2 id="lexer">Writing Lua Lexers</h2>
+
+    <p>Lexers highlight the syntax of source code. Scintilla (the editing component
+    behind <a href="http://foicica.com/textadept">Textadept</a>) traditionally uses static, compiled C++
+    lexers which are notoriously difficult to create and/or extend. On the other
+    hand, <a href="http://lua.org">Lua</a> makes it easy to to rapidly create new lexers, extend existing
+    ones, and embed lexers within one another. Lua lexers tend to be more
+    readable than C++ lexers too.</p>
+
+    <p>Lexers are Parsing Expression Grammars, or PEGs, composed with the Lua
+    <a href="http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html">LPeg library</a>. The following table comes from the LPeg documentation and
+    summarizes all you need to know about constructing basic LPeg patterns. This
+    module provides convenience functions for creating and working with other
+    more advanced patterns and concepts.</p>
+
+    <table class="standard">
+    <thead>
+    <tr>
+    <th>Operator             </th>
+    <th> Description</th>
+    </tr>
+    </thead>
+    <tbody>
+    <tr>
+    <td><code>lpeg.P(string)</code>     </td>
+    <td> Matches <code>string</code> literally.</td>
+    </tr>
+    <tr>
+    <td><code>lpeg.P(</code><em><code>n</code></em><code>)</code>    </td>
+    <td> Matches exactly <em><code>n</code></em> characters.</td>
+    </tr>
+    <tr>
+    <td><code>lpeg.S(string)</code>     </td>
+    <td> Matches any character in set <code>string</code>.</td>
+    </tr>
+    <tr>
+    <td><code>lpeg.R("</code><em><code>xy</code></em><code>")</code> </td>
+    <td> Matches any character between range <code>x</code> and <code>y</code>.</td>
+    </tr>
+    <tr>
+    <td><code>patt^</code><em><code>n</code></em>         </td>
+    <td> Matches at least <em><code>n</code></em> repetitions of <code>patt</code>.</td>
+    </tr>
+    <tr>
+    <td><code>patt^-</code><em><code>n</code></em>        </td>
+    <td> Matches at most <em><code>n</code></em> repetitions of <code>patt</code>.</td>
+    </tr>
+    <tr>
+    <td><code>patt1 * patt2</code>      </td>
+    <td> Matches <code>patt1</code> followed by <code>patt2</code>.</td>
+    </tr>
+    <tr>
+    <td><code>patt1 + patt2</code>      </td>
+    <td> Matches <code>patt1</code> or <code>patt2</code> (ordered choice).</td>
+    </tr>
+    <tr>
+    <td><code>patt1 - patt2</code>      </td>
+    <td> Matches <code>patt1</code> if <code>patt2</code> does not match.</td>
+    </tr>
+    <tr>
+    <td><code>-patt</code>              </td>
+    <td> Equivalent to <code>("" - patt)</code>.</td>
+    </tr>
+    <tr>
+    <td><code>#patt</code>              </td>
+    <td> Matches <code>patt</code> but consumes no input.</td>
+    </tr>
+    </tbody>
+    </table>
+
+
+    <p>The first part of this document deals with rapidly constructing a simple
+    lexer. The next part deals with more advanced techniques, such as custom
+    coloring and embedding lexers within one another. Following that is a
+    discussion about code folding, or being able to tell Scintilla which code
+    blocks are "foldable" (temporarily hideable from view). After that are
+    instructions on how to use Lua lexers with the aforementioned Textadept
+    editor. Finally there are comments on lexer performance and limitations.</p>
+
+    <p><a id="lexer.Lexer.Basics"></a></p>
+
+    <h3>Lexer Basics</h3>
+
+    <p>The <em>lexlua/</em> directory contains all lexers, including your new one. Before
+    attempting to write one from scratch though, first determine if your
+    programming language is similar to any of the 100+ languages supported. If
+    so, you may be able to copy and modify that lexer, saving some time and
+    effort. The filename of your lexer should be the name of your programming
+    language in lower case followed by a <em>.lua</em> extension. For example, a new Lua
+    lexer has the name <em>lua.lua</em>.</p>
+
+    <p>Note: Try to refrain from using one-character language names like "c", "d",
+    or "r". For example, Lua lexers for those languages are named "ansi_c", "dmd", and "rstats",
+    respectively.</p>
+
+    <p><a id="lexer.New.Lexer.Template"></a></p>
+
+    <h4>New Lexer Template</h4>
+
+    <p>There is a <em>lexlua/template.txt</em> file that contains a simple template for a
+    new lexer. Feel free to use it, replacing the '?'s with the name of your
+    lexer. Consider this snippet from the template:</p>
+
+    <pre><code>
+    -- ? LPeg lexer.
+
+    local lexer = require('lexer')
+    local token, word_match = lexer.token, lexer.word_match
+    local P, R, S = lpeg.P, lpeg.R, lpeg.S
+
+    local lex = lexer.new('?')
+
+    -- Whitespace.
+    local ws = token(lexer.WHITESPACE, lexer.space^1)
+    lex:add_rule('whitespace', ws)
+
+    [...]
+
+    return lex
+    </code></pre>
+
+    <p>The first 3 lines of code simply define often used convenience variables. The
+    fourth and last lines <a href="#lexer.new">define</a> and return the lexer object
+    Scintilla uses; they are very important and must be part of every lexer. The
+    fifth line defines something called a "token", an essential building block of
+    lexers. You will learn about tokens shortly. The sixth line defines a lexer
+    grammar rule, which you will learn about later, as well as token styles. (Be
+    aware that it is common practice to combine these two lines for short rules.)
+    Note, however, the <code>local</code> prefix in front of variables, which is needed
+    so-as not to affect Lua's global environment. All in all, this is a minimal,
+    working lexer that you can build on.</p>
+
+    <p><a id="lexer.Tokens"></a></p>
+
+    <h4>Tokens</h4>
+
+    <p>Take a moment to think about your programming language's structure. What kind
+    of key elements does it have? In the template shown earlier, one predefined
+    element all languages have is whitespace. Your language probably also has
+    elements like comments, strings, and keywords. Lexers refer to these elements
+    as "tokens". Tokens are the fundamental "building blocks" of lexers. Lexers
+    break down source code into tokens for coloring, which results in the syntax
+    highlighting familiar to you. It is up to you how specific your lexer is when
+    it comes to tokens. Perhaps only distinguishing between keywords and
+    identifiers is necessary, or maybe recognizing constants and built-in
+    functions, methods, or libraries is desirable. The Lua lexer, for example,
+    defines 11 tokens: whitespace, keywords, built-in functions, constants,
+    built-in libraries, identifiers, strings, comments, numbers, labels, and
+    operators. Even though constants, built-in functions, and built-in libraries
+    are subsets of identifiers, Lua programmers find it helpful for the lexer to
+    distinguish between them all. It is perfectly acceptable to just recognize
+    keywords and identifiers.</p>
+
+    <p>In a lexer, tokens consist of a token name and an LPeg pattern that matches a
+    sequence of characters recognized as an instance of that token. Create tokens
+    using the <a href="#lexer.token"><code>lexer.token()</code></a> function. Let us examine the "whitespace" token
+    defined in the template shown earlier:</p>
+
+    <pre><code>
+    local ws = token(lexer.WHITESPACE, lexer.space^1)
+    </code></pre>
+
+    <p>At first glance, the first argument does not appear to be a string name and
+    the second argument does not appear to be an LPeg pattern. Perhaps you
+    expected something like:</p>
+
+    <pre><code>
+    local ws = token('whitespace', S('\t\v\f\n\r ')^1)
+    </code></pre>
+
+    <p>The <code>lexer</code> module actually provides a convenient list of common token names
+    and common LPeg patterns for you to use. Token names include
+    <a href="#lexer.DEFAULT"><code>lexer.DEFAULT</code></a>, <a href="#lexer.WHITESPACE"><code>lexer.WHITESPACE</code></a>, <a href="#lexer.COMMENT"><code>lexer.COMMENT</code></a>,
+    <a href="#lexer.STRING"><code>lexer.STRING</code></a>, <a href="#lexer.NUMBER"><code>lexer.NUMBER</code></a>, <a href="#lexer.KEYWORD"><code>lexer.KEYWORD</code></a>,
+    <a href="#lexer.IDENTIFIER"><code>lexer.IDENTIFIER</code></a>, <a href="#lexer.OPERATOR"><code>lexer.OPERATOR</code></a>, <a href="#lexer.ERROR"><code>lexer.ERROR</code></a>,
+    <a href="#lexer.PREPROCESSOR"><code>lexer.PREPROCESSOR</code></a>, <a href="#lexer.CONSTANT"><code>lexer.CONSTANT</code></a>, <a href="#lexer.VARIABLE"><code>lexer.VARIABLE</code></a>,
+    <a href="#lexer.FUNCTION"><code>lexer.FUNCTION</code></a>, <a href="#lexer.CLASS"><code>lexer.CLASS</code></a>, <a href="#lexer.TYPE"><code>lexer.TYPE</code></a>, <a href="#lexer.LABEL"><code>lexer.LABEL</code></a>,
+    <a href="#lexer.REGEX"><code>lexer.REGEX</code></a>, and <a href="#lexer.EMBEDDED"><code>lexer.EMBEDDED</code></a>. Patterns include
+    <a href="#lexer.any"><code>lexer.any</code></a>, <a href="#lexer.ascii"><code>lexer.ascii</code></a>, <a href="#lexer.extend"><code>lexer.extend</code></a>, <a href="#lexer.alpha"><code>lexer.alpha</code></a>,
+    <a href="#lexer.digit"><code>lexer.digit</code></a>, <a href="#lexer.alnum"><code>lexer.alnum</code></a>, <a href="#lexer.lower"><code>lexer.lower</code></a>, <a href="#lexer.upper"><code>lexer.upper</code></a>,
+    <a href="#lexer.xdigit"><code>lexer.xdigit</code></a>, <a href="#lexer.cntrl"><code>lexer.cntrl</code></a>, <a href="#lexer.graph"><code>lexer.graph</code></a>, <a href="#lexer.print"><code>lexer.print</code></a>,
+    <a href="#lexer.punct"><code>lexer.punct</code></a>, <a href="#lexer.space"><code>lexer.space</code></a>, <a href="#lexer.newline"><code>lexer.newline</code></a>,
+    <a href="#lexer.nonnewline"><code>lexer.nonnewline</code></a>, <a href="#lexer.nonnewline_esc"><code>lexer.nonnewline_esc</code></a>, <a href="#lexer.dec_num"><code>lexer.dec_num</code></a>,
+    <a href="#lexer.hex_num"><code>lexer.hex_num</code></a>, <a href="#lexer.oct_num"><code>lexer.oct_num</code></a>, <a href="#lexer.integer"><code>lexer.integer</code></a>,
+    <a href="#lexer.float"><code>lexer.float</code></a>, and <a href="#lexer.word"><code>lexer.word</code></a>. You may use your own token names if
+    none of the above fit your language, but an advantage to using predefined
+    token names is that your lexer's tokens will inherit the universal syntax
+    highlighting color theme used by your text editor.</p>
+
+    <p><a id="lexer.Example.Tokens"></a></p>
+
+    <h5>Example Tokens</h5>
+
+    <p>So, how might you define other tokens like keywords, comments, and strings?
+    Here are some examples.</p>
+
+    <p><strong>Keywords</strong></p>
+
+    <p>Instead of matching <em>n</em> keywords with <em>n</em> <code>P('keyword_</code><em><code>n</code></em><code>')</code> ordered
+    choices, use another convenience function: <a href="#lexer.word_match"><code>lexer.word_match()</code></a>. It is
+    much easier and more efficient to write word matches like:</p>
+
+    <pre><code>
+    local keyword = token(lexer.KEYWORD, lexer.word_match[[
+      keyword_1 keyword_2 ... keyword_n
+    ]])
+
+    local case_insensitive_keyword = token(lexer.KEYWORD, lexer.word_match([[
+      KEYWORD_1 keyword_2 ... KEYword_n
+    ]], true))
+
+    local hyphened_keyword = token(lexer.KEYWORD, lexer.word_match[[
+      keyword-1 keyword-2 ... keyword-n
+    ]])
+    </code></pre>
+
+    <p>In order to more easily separate or categorize keyword sets, you can use Lua
+    line comments within keyword strings. Such comments will be ignored. For
+    example:</p>
+
+    <pre><code>
+    local keyword = token(lexer.KEYWORD, lexer.word_match[[
+      -- Version 1 keywords.
+      keyword_11, keyword_12 ... keyword_1n
+      -- Version 2 keywords.
+      keyword_21, keyword_22 ... keyword_2n
+      ...
+      -- Version N keywords.
+      keyword_m1, keyword_m2 ... keyword_mn
+    ]])
+    </code></pre>
+
+    <p><strong>Comments</strong></p>
+
+    <p>Line-style comments with a prefix character(s) are easy to express with LPeg:</p>
+
+    <pre><code>
+    local shell_comment = token(lexer.COMMENT, '#' * lexer.nonnewline^0)
+    local c_line_comment = token(lexer.COMMENT,
+                                 '//' * lexer.nonnewline_esc^0)
+    </code></pre>
+
+    <p>The comments above start with a '#' or "//" and go to the end of the line.
+    The second comment recognizes the next line also as a comment if the current
+    line ends with a '\' escape character.</p>
+
+    <p>C-style "block" comments with a start and end delimiter are also easy to
+    express:</p>
+
+    <pre><code>
+    local c_comment = token(lexer.COMMENT,
+                            '/*' * (lexer.any - '*/')^0 * P('*/')^-1)
+    </code></pre>
+
+    <p>This comment starts with a "/*" sequence and contains anything up to and
+    including an ending "*/" sequence. The ending "*/" is optional so the lexer
+    can recognize unfinished comments as comments and highlight them properly.</p>
+
+    <p><strong>Strings</strong></p>
+
+    <p>It is tempting to think that a string is not much different from the block
+    comment shown above in that both have start and end delimiters:</p>
+
+    <pre><code>
+    local dq_str = '"' * (lexer.any - '"')^0 * P('"')^-1
+    local sq_str = "'" * (lexer.any - "'")^0 * P("'")^-1
+    local simple_string = token(lexer.STRING, dq_str + sq_str)
+    </code></pre>
+
+    <p>However, most programming languages allow escape sequences in strings such
+    that a sequence like "\&quot;" in a double-quoted string indicates that the
+    '&quot;' is not the end of the string. The above token incorrectly matches
+    such a string. Instead, use the <a href="#lexer.delimited_range"><code>lexer.delimited_range()</code></a> convenience
+    function.</p>
+
+    <pre><code>
+    local dq_str = lexer.delimited_range('"')
+    local sq_str = lexer.delimited_range("'")
+    local string = token(lexer.STRING, dq_str + sq_str)
+    </code></pre>
+
+    <p>In this case, the lexer treats '\' as an escape character in a string
+    sequence.</p>
+
+    <p><strong>Numbers</strong></p>
+
+    <p>Most programming languages have the same format for integer and float tokens,
+    so it might be as simple as using a couple of predefined LPeg patterns:</p>
+
+    <pre><code>
+    local number = token(lexer.NUMBER, lexer.float + lexer.integer)
+    </code></pre>
+
+    <p>However, some languages allow postfix characters on integers.</p>
+
+    <pre><code>
+    local integer = P('-')^-1 * (lexer.dec_num * S('lL')^-1)
+    local number = token(lexer.NUMBER, lexer.float + lexer.hex_num + integer)
+    </code></pre>
+
+    <p>Your language may need other tweaks, but it is up to you how fine-grained you
+    want your highlighting to be. After all, you are not writing a compiler or
+    interpreter!</p>
+
+    <p><a id="lexer.Rules"></a></p>
+
+    <h4>Rules</h4>
+
+    <p>Programming languages have grammars, which specify valid token structure. For
+    example, comments usually cannot appear within a string. Grammars consist of
+    rules, which are simply combinations of tokens. Recall from the lexer
+    template the <a href="#lexer.add_rule"><code>lexer.add_rule()</code></a> call, which adds a rule to the lexer's
+    grammar:</p>
+
+    <pre><code>
+    lex:add_rule('whitespace', ws)
+    </code></pre>
+
+    <p>Each rule has an associated name, but rule names are completely arbitrary and
+    serve only to identify and distinguish between different rules. Rule order is
+    important: if text does not match the first rule added to the grammar, the
+    lexer tries to match the second rule added, and so on. Right now this lexer
+    simply matches whitespace tokens under a rule named "whitespace".</p>
+
+    <p>To illustrate the importance of rule order, here is an example of a
+    simplified Lua lexer:</p>
+
+    <pre><code>
+    lex:add_rule('whitespace', token(lexer.WHITESPACE, ...))
+    lex:add_rule('keyword', token(lexer.KEYWORD, ...))
+    lex:add_rule('identifier', token(lexer.IDENTIFIER, ...))
+    lex:add_rule('string', token(lexer.STRING, ...))
+    lex:add_rule('comment', token(lexer.COMMENT, ...))
+    lex:add_rule('number', token(lexer.NUMBER, ...))
+    lex:add_rule('label', token(lexer.LABEL, ...))
+    lex:add_rule('operator', token(lexer.OPERATOR, ...))
+    </code></pre>
+
+    <p>Note how identifiers come after keywords. In Lua, as with most programming
+    languages, the characters allowed in keywords and identifiers are in the same
+    set (alphanumerics plus underscores). If the lexer added the "identifier"
+    rule before the "keyword" rule, all keywords would match identifiers and thus
+    incorrectly highlight as identifiers instead of keywords. The same idea
+    applies to function, constant, etc. tokens that you may want to distinguish
+    between: their rules should come before identifiers.</p>
+
+    <p>So what about text that does not match any rules? For example in Lua, the '!'
+    character is meaningless outside a string or comment. Normally the lexer
+    skips over such text. If instead you want to highlight these "syntax errors",
+    add an additional end rule:</p>
+
+    <pre><code>
+    lex:add_rule('whitespace', ws)
+    ...
+    lex:add_rule('error', token(lexer.ERROR, lexer.any))
+    </code></pre>
+
+    <p>This identifies and highlights any character not matched by an existing
+    rule as a <code>lexer.ERROR</code> token.</p>
+
+    <p>Even though the rules defined in the examples above contain a single token,
+    rules may consist of multiple tokens. For example, a rule for an HTML tag
+    could consist of a tag token followed by an arbitrary number of attribute
+    tokens, allowing the lexer to highlight all tokens separately. That rule
+    might look something like this:</p>
+
+    <pre><code>
+    lex:add_rule('tag', tag_start * (ws * attributes)^0 * tag_end^-1)
+    </code></pre>
+
+    <p>Note however that lexers with complex rules like these are more prone to lose
+    track of their state, especially if they span multiple lines.</p>
+
+    <p><a id="lexer.Summary"></a></p>
+
+    <h4>Summary</h4>
+
+    <p>Lexers primarily consist of tokens and grammar rules. At your disposal are a
+    number of convenience patterns and functions for rapidly creating a lexer. If
+    you choose to use predefined token names for your tokens, you do not have to
+    define how the lexer highlights them. The tokens will inherit the default
+    syntax highlighting color theme your editor uses.</p>
+
+    <p><a id="lexer.Advanced.Techniques"></a></p>
+
+    <h3>Advanced Techniques</h3>
+
+    <p><a id="lexer.Styles.and.Styling"></a></p>
+
+    <h4>Styles and Styling</h4>
+
+    <p>The most basic form of syntax highlighting is assigning different colors to
+    different tokens. Instead of highlighting with just colors, Scintilla allows
+    for more rich highlighting, or "styling", with different fonts, font sizes,
+    font attributes, and foreground and background colors, just to name a few.
+    The unit of this rich highlighting is called a "style". Styles are simply
+    strings of comma-separated property settings. By default, lexers associate
+    predefined token names like <code>lexer.WHITESPACE</code>, <code>lexer.COMMENT</code>,
+    <code>lexer.STRING</code>, etc. with particular styles as part of a universal color
+    theme. These predefined styles include <a href="#lexer.STYLE_CLASS"><code>lexer.STYLE_CLASS</code></a>,
+    <a href="#lexer.STYLE_COMMENT"><code>lexer.STYLE_COMMENT</code></a>, <a href="#lexer.STYLE_CONSTANT"><code>lexer.STYLE_CONSTANT</code></a>,
+    <a href="#lexer.STYLE_ERROR"><code>lexer.STYLE_ERROR</code></a>, <a href="#lexer.STYLE_EMBEDDED"><code>lexer.STYLE_EMBEDDED</code></a>,
+    <a href="#lexer.STYLE_FUNCTION"><code>lexer.STYLE_FUNCTION</code></a>, <a href="#lexer.STYLE_IDENTIFIER"><code>lexer.STYLE_IDENTIFIER</code></a>,
+    <a href="#lexer.STYLE_KEYWORD"><code>lexer.STYLE_KEYWORD</code></a>, <a href="#lexer.STYLE_LABEL"><code>lexer.STYLE_LABEL</code></a>, <a href="#lexer.STYLE_NUMBER"><code>lexer.STYLE_NUMBER</code></a>,
+    <a href="#lexer.STYLE_OPERATOR"><code>lexer.STYLE_OPERATOR</code></a>, <a href="#lexer.STYLE_PREPROCESSOR"><code>lexer.STYLE_PREPROCESSOR</code></a>,
+    <a href="#lexer.STYLE_REGEX"><code>lexer.STYLE_REGEX</code></a>, <a href="#lexer.STYLE_STRING"><code>lexer.STYLE_STRING</code></a>, <a href="#lexer.STYLE_TYPE"><code>lexer.STYLE_TYPE</code></a>,
+    <a href="#lexer.STYLE_VARIABLE"><code>lexer.STYLE_VARIABLE</code></a>, and <a href="#lexer.STYLE_WHITESPACE"><code>lexer.STYLE_WHITESPACE</code></a>. Like with
+    predefined token names and LPeg patterns, you may define your own styles. At
+    their core, styles are just strings, so you may create new ones and/or modify
+    existing ones. Each style consists of the following comma-separated settings:</p>
+
+    <table class="standard">
+    <thead>
+    <tr>
+    <th>Setting        </th>
+    <th> Description</th>
+    </tr>
+    </thead>
+    <tbody>
+    <tr>
+    <td>font:<em>name</em>    </td>
+    <td> The name of the font the style uses.</td>
+    </tr>
+    <tr>
+    <td>size:<em>int</em>     </td>
+    <td> The size of the font the style uses.</td>
+    </tr>
+    <tr>
+    <td>[not]bold      </td>
+    <td> Whether or not the font face is bold.</td>
+    </tr>
+    <tr>
+    <td>weight:<em>int</em>   </td>
+    <td> The weight or boldness of a font, between 1 and 999.</td>
+    </tr>
+    <tr>
+    <td>[not]italics   </td>
+    <td> Whether or not the font face is italic.</td>
+    </tr>
+    <tr>
+    <td>[not]underlined</td>
+    <td> Whether or not the font face is underlined.</td>
+    </tr>
+    <tr>
+    <td>fore:<em>color</em>   </td>
+    <td> The foreground color of the font face.</td>
+    </tr>
+    <tr>
+    <td>back:<em>color</em>   </td>
+    <td> The background color of the font face.</td>
+    </tr>
+    <tr>
+    <td>[not]eolfilled </td>
+    <td> Does the background color extend to the end of the line?</td>
+    </tr>
+    <tr>
+    <td>case:<em>char</em>    </td>
+    <td> The case of the font ('u': upper, 'l': lower, 'm': normal).</td>
+    </tr>
+    <tr>
+    <td>[not]visible   </td>
+    <td> Whether or not the text is visible.</td>
+    </tr>
+    <tr>
+    <td>[not]changeable</td>
+    <td> Whether the text is changeable or read-only.</td>
+    </tr>
+    </tbody>
+    </table>
+
+
+    <p>Specify font colors in either "#RRGGBB" format, "0xBBGGRR" format, or the
+    decimal equivalent of the latter. As with token names, LPeg patterns, and
+    styles, there is a set of predefined color names, but they vary depending on
+    the current color theme in use. Therefore, it is generally not a good idea to
+    manually define colors within styles in your lexer since they might not fit
+    into a user's chosen color theme. Try to refrain from even using predefined
+    colors in a style because that color may be theme-specific. Instead, the best
+    practice is to either use predefined styles or derive new color-agnostic
+    styles from predefined ones. For example, Lua "longstring" tokens use the
+    existing <code>lexer.STYLE_STRING</code> style instead of defining a new one.</p>
+
+    <p><a id="lexer.Example.Styles"></a></p>
+
+    <h5>Example Styles</h5>
+
+    <p>Defining styles is pretty straightforward. An empty style that inherits the
+    default theme settings is simply an empty string:</p>
+
+    <pre><code>
+    local style_nothing = ''
+    </code></pre>
+
+    <p>A similar style but with a bold font face looks like this:</p>
+
+    <pre><code>
+    local style_bold = 'bold'
+    </code></pre>
+
+    <p>If you want the same style, but also with an italic font face, define the new
+    style in terms of the old one:</p>
+
+    <pre><code>
+    local style_bold_italic = style_bold..',italics'
+    </code></pre>
+
+    <p>This allows you to derive new styles from predefined ones without having to
+    rewrite them. This operation leaves the old style unchanged. Thus if you
+    had a "static variable" token whose style you wanted to base off of
+    <code>lexer.STYLE_VARIABLE</code>, it would probably look like:</p>
+
+    <pre><code>
+    local style_static_var = lexer.STYLE_VARIABLE..',italics'
+    </code></pre>
+
+    <p>The color theme files in the <em>lexlua/themes/</em> folder give more examples of
+    style definitions.</p>
+
+    <p><a id="lexer.Token.Styles"></a></p>
+
+    <h4>Token Styles</h4>
+
+    <p>Lexers use the <a href="#lexer.add_style"><code>lexer.add_style()</code></a> function to assign styles to
+    particular tokens. Recall the token definition and from the lexer template:</p>
+
+    <pre><code>
+    local ws = token(lexer.WHITESPACE, lexer.space^1)
+    lex:add_rule('whitespace', ws)
+    </code></pre>
+
+    <p>Why is a style not assigned to the <code>lexer.WHITESPACE</code> token? As mentioned
+    earlier, lexers automatically associate tokens that use predefined token
+    names with a particular style. Only tokens with custom token names need
+    manual style associations. As an example, consider a custom whitespace token:</p>
+
+    <pre><code>
+    local ws = token('custom_whitespace', lexer.space^1)
+    </code></pre>
+
+    <p>Assigning a style to this token looks like:</p>
+
+    <pre><code>
+    lex:add_style('custom_whitespace', lexer.STYLE_WHITESPACE)
+    </code></pre>
+
+    <p>Do not confuse token names with rule names. They are completely different
+    entities. In the example above, the lexer associates the "custom_whitespace"
+    token with the existing style for <code>lexer.WHITESPACE</code> tokens. If instead you
+    prefer to color the background of whitespace a shade of grey, it might look
+    like:</p>
+
+    <pre><code>
+    local custom_style = lexer.STYLE_WHITESPACE..',back:$(color.grey)'
+    lex:add_style('custom_whitespace', custom_style)
+    </code></pre>
+
+    <p>Notice that the lexer peforms Scintilla-style "$()" property expansion.
+    You may also use "%()". Remember to refrain from assigning specific colors in
+    styles, but in this case, all user color themes probably define the
+    "color.grey" property.</p>
+
+    <p><a id="lexer.Line.Lexers"></a></p>
+
+    <h4>Line Lexers</h4>
+
+    <p>By default, lexers match the arbitrary chunks of text passed to them by
+    Scintilla. These chunks may be a full document, only the visible part of a
+    document, or even just portions of lines. Some lexers need to match whole
+    lines. For example, a lexer for the output of a file "diff" needs to know if
+    the line started with a '+' or '-' and then style the entire line
+    accordingly. To indicate that your lexer matches by line, create the lexer
+    with an extra parameter:</p>
+
+    <pre><code>
+    local lex = lexer.new('?', {lex_by_line = true})
+    </code></pre>
+
+    <p>Now the input text for the lexer is a single line at a time. Keep in mind
+    that line lexers do not have the ability to look ahead at subsequent lines.</p>
+
+    <p><a id="lexer.Embedded.Lexers"></a></p>
+
+    <h4>Embedded Lexers</h4>
+
+    <p>Lexers embed within one another very easily, requiring minimal effort. In the
+    following sections, the lexer being embedded is called the "child" lexer and
+    the lexer a child is being embedded in is called the "parent". For example,
+    consider an HTML lexer and a CSS lexer. Either lexer stands alone for styling
+    their respective HTML and CSS files. However, CSS can be embedded inside
+    HTML. In this specific case, the CSS lexer is the "child" lexer with the HTML
+    lexer being the "parent". Now consider an HTML lexer and a PHP lexer. This
+    sounds a lot like the case with CSS, but there is a subtle difference: PHP
+    <em>embeds itself into</em> HTML while CSS is <em>embedded in</em> HTML. This fundamental
+    difference results in two types of embedded lexers: a parent lexer that
+    embeds other child lexers in it (like HTML embedding CSS), and a child lexer
+    that embeds itself into a parent lexer (like PHP embedding itself in HTML).</p>
+
+    <p><a id="lexer.Parent.Lexer"></a></p>
+
+    <h5>Parent Lexer</h5>
+
+    <p>Before embedding a child lexer into a parent lexer, the parent lexer needs to
+    load the child lexer. This is done with the <a href="#lexer.load"><code>lexer.load()</code></a> function. For
+    example, loading the CSS lexer within the HTML lexer looks like:</p>
+
+    <pre><code>
+    local css = lexer.load('css')
+    </code></pre>
+
+    <p>The next part of the embedding process is telling the parent lexer when to
+    switch over to the child lexer and when to switch back. The lexer refers to
+    these indications as the "start rule" and "end rule", respectively, and are
+    just LPeg patterns. Continuing with the HTML/CSS example, the transition from
+    HTML to CSS is when the lexer encounters a "style" tag with a "type"
+    attribute whose value is "text/css":</p>
+
+    <pre><code>
+    local css_tag = P('&lt;style') * P(function(input, index)
+      if input:find('^[^&gt;]+type="text/css"', index) then
+        return index
+      end
+    end)
+    </code></pre>
+
+    <p>This pattern looks for the beginning of a "style" tag and searches its
+    attribute list for the text "<code>type="text/css"</code>". (In this simplified example,
+    the Lua pattern does not consider whitespace between the '=' nor does it
+    consider that using single quotes is valid.) If there is a match, the
+    functional pattern returns a value instead of <code>nil</code>. In this case, the value
+    returned does not matter because we ultimately want to style the "style" tag
+    as an HTML tag, so the actual start rule looks like this:</p>
+
+    <pre><code>
+    local css_start_rule = #css_tag * tag
+    </code></pre>
+
+    <p>Now that the parent knows when to switch to the child, it needs to know when
+    to switch back. In the case of HTML/CSS, the switch back occurs when the
+    lexer encounters an ending "style" tag, though the lexer should still style
+    the tag as an HTML tag:</p>
+
+    <pre><code>
+    local css_end_rule = #P('&lt;/style&gt;') * tag
+    </code></pre>
+
+    <p>Once the parent loads the child lexer and defines the child's start and end
+    rules, it embeds the child with the <a href="#lexer.embed"><code>lexer.embed()</code></a> function:</p>
+
+    <pre><code>
+    lex:embed(css, css_start_rule, css_end_rule)
+    </code></pre>
+
+    <p><a id="lexer.Child.Lexer"></a></p>
+
+    <h5>Child Lexer</h5>
+
+    <p>The process for instructing a child lexer to embed itself into a parent is
+    very similar to embedding a child into a parent: first, load the parent lexer
+    into the child lexer with the <a href="#lexer.load"><code>lexer.load()</code></a> function and then create
+    start and end rules for the child lexer. However, in this case, call
+    <a href="#lexer.embed"><code>lexer.embed()</code></a> with switched arguments. For example, in the PHP lexer:</p>
+
+    <pre><code>
+    local html = lexer.load('html')
+    local php_start_rule = token('php_tag', '&lt;?php ')
+    local php_end_rule = token('php_tag', '?&gt;')
+    lex:add_style('php_tag', lexer.STYLE_EMBEDDED)
+    html:embed(lex, php_start_rule, php_end_rule)
+    </code></pre>
+
+    <p><a id="lexer.Lexers.with.Complex.State"></a></p>
+
+    <h4>Lexers with Complex State</h4>
+
+    <p>A vast majority of lexers are not stateful and can operate on any chunk of
+    text in a document. However, there may be rare cases where a lexer does need
+    to keep track of some sort of persistent state. Rather than using <code>lpeg.P</code>
+    function patterns that set state variables, it is recommended to make use of
+    Scintilla's built-in, per-line state integers via <a href="#lexer.line_state"><code>lexer.line_state</code></a>. It
+    was designed to accommodate up to 32 bit flags for tracking state.
+    <a href="#lexer.line_from_position"><code>lexer.line_from_position()</code></a> will return the line for any position given
+    to an <code>lpeg.P</code> function pattern. (Any positions derived from that position
+    argument will also work.)</p>
+
+    <p>Writing stateful lexers is beyond the scope of this document.</p>
+
+    <p><a id="lexer.Code.Folding"></a></p>
+
+    <h3>Code Folding</h3>
+
+    <p>When reading source code, it is occasionally helpful to temporarily hide
+    blocks of code like functions, classes, comments, etc. This is the concept of
+    "folding". In many Scintilla-based editors, such as Textadept, little indicators
+    in the editor margins appear next to code that can be folded at places called
+    "fold points". When the user clicks an indicator, the editor hides the code
+    associated with the indicator until the user clicks the indicator again. The
+    lexer specifies these fold points and what code exactly to fold.</p>
+
+    <p>The fold points for most languages occur on keywords or character sequences.
+    Examples of fold keywords are "if" and "end" in Lua and examples of fold
+    character sequences are '{', '}', "/*", and "*/" in C for code block and
+    comment delimiters, respectively. However, these fold points cannot occur
+    just anywhere. For example, lexers should not recognize fold keywords that
+    appear within strings or comments. The <a href="#lexer.add_fold_point"><code>lexer.add_fold_point()</code></a> function
+    allows you to conveniently define fold points with such granularity. For
+    example, consider C:</p>
+
+    <pre><code>
+    lex:add_fold_point(lexer.OPERATOR, '{', '}')
+    lex:add_fold_point(lexer.COMMENT, '/*', '*/')
+    </code></pre>
+
+    <p>The first assignment states that any '{' or '}' that the lexer recognized as
+    an <code>lexer.OPERATOR</code> token is a fold point. Likewise, the second assignment
+    states that any "/*" or "*/" that the lexer recognizes as part of a
+    <code>lexer.COMMENT</code> token is a fold point. The lexer does not consider any
+    occurrences of these characters outside their defined tokens (such as in a
+    string) as fold points. How do you specify fold keywords? Here is an example
+    for Lua:</p>
+
+    <pre><code>
+    lex:add_fold_point(lexer.KEYWORD, 'if', 'end')
+    lex:add_fold_point(lexer.KEYWORD, 'do', 'end')
+    lex:add_fold_point(lexer.KEYWORD, 'function', 'end')
+    lex:add_fold_point(lexer.KEYWORD, 'repeat', 'until')
+    </code></pre>
+
+    <p>If your lexer has case-insensitive keywords as fold points, simply add a
+    <code>case_insensitive_fold_points = true</code> option to <a href="#lexer.new"><code>lexer.new()</code></a>, and
+    specify keywords in lower case.</p>
+
+    <p>If your lexer needs to do some additional processing in order to determine if
+    a token is a fold point, pass a function that returns an integer to
+    <code>lex:add_fold_point()</code>. Returning <code>1</code> indicates the token is a beginning fold
+    point and returning <code>-1</code> indicates the token is an ending fold point.
+    Returning <code>0</code> indicates the token is not a fold point. For example:</p>
+
+    <pre><code>
+    local function fold_strange_token(text, pos, line, s, symbol)
+      if ... then
+        return 1 -- beginning fold point
+      elseif ... then
+        return -1 -- ending fold point
+      end
+      return 0
+    end
+
+    lex:add_fold_point('strange_token', '|', fold_strange_token)
+    </code></pre>
+
+    <p>Any time the lexer encounters a '|' that is a "strange_token", it calls the
+    <code>fold_strange_token</code> function to determine if '|' is a fold point. The lexer
+    calls these functions with the following arguments: the text to identify fold
+    points in, the beginning position of the current line in the text to fold,
+    the current line's text, the position in the current line the fold point text
+    starts at, and the fold point text itself.</p>
+
+    <p><a id="lexer.Fold.by.Indentation"></a></p>
+
+    <h4>Fold by Indentation</h4>
+
+    <p>Some languages have significant whitespace and/or no delimiters that indicate
+    fold points. If your lexer falls into this category and you would like to
+    mark fold points based on changes in indentation, create the lexer with a
+    <code>fold_by_indentation = true</code> option:</p>
+
+    <pre><code>
+    local lex = lexer.new('?', {fold_by_indentation = true})
+    </code></pre>
+
+    <p><a id="lexer.Using.Lexers"></a></p>
+
+    <h3>Using Lexers</h3>
+
+    <p><a id="lexer.Textadept"></a></p>
+
+    <h4>Textadept</h4>
+
+    <p>Put your lexer in your <em>~/.textadept/lexers/</em> directory so you do not
+    overwrite it when upgrading Textadept. Also, lexers in this directory
+    override default lexers. Thus, Textadept loads a user <em>lua</em> lexer instead of
+    the default <em>lua</em> lexer. This is convenient for tweaking a default lexer to
+    your liking. Then add a <a href="https://foicica.com/textadept/api.html#textadept.file_types">file type</a> for your lexer if necessary.</p>
+
+    <p><a id="lexer.Migrating.Legacy.Lexers"></a></p>
+
+    <h3>Migrating Legacy Lexers</h3>
+
+    <p>Legacy lexers are of the form:</p>
+
+    <pre><code>
+    local l = require('lexer')
+    local token, word_match = l.token, l.word_match
+    local P, R, S = lpeg.P, lpeg.R, lpeg.S
+
+    local M = {_NAME = '?'}
+
+    [... token and pattern definitions ...]
+
+    M._rules = {
+      {'rule', pattern},
+      [...]
+    }
+
+    M._tokenstyles = {
+      'token' = 'style',
+      [...]
+    }
+
+    M._foldsymbols = {
+      _patterns = {...},
+      ['token'] = {['start'] = 1, ['end'] = -1},
+      [...]
+    }
+
+    return M
+    </code></pre>
+
+    <p>While such legacy lexers will be handled just fine without any
+    changes, it is recommended that you migrate yours. The migration process is
+    fairly straightforward:</p>
+
+    <ol>
+    <li>Replace all instances of <code>l</code> with <code>lexer</code>, as it's better practice and
+    results in less confusion.</li>
+    <li>Replace <code>local M = {_NAME = '?'}</code> with <code>local lex = lexer.new('?')</code>, where
+    <code>?</code> is the name of your legacy lexer. At the end of the lexer, change
+    <code>return M</code> to <code>return lex</code>.</li>
+    <li>Instead of defining rules towards the end of your lexer, define your rules
+    as you define your tokens and patterns using
+    <a href="#lexer.add_rule"><code>lex:add_rule()</code></a>.</li>
+    <li>Similarly, any custom token names should have their styles immediately
+    defined using <a href="#lexer.add_style"><code>lex:add_style()</code></a>.</li>
+    <li>Convert any table arguments passed to <a href="#lexer.word_match"><code>lexer.word_match()</code></a> to a
+    space-separated string of words.</li>
+    <li>Replace any calls to <code>lexer.embed(M, child, ...)</code> and
+    <code>lexer.embed(parent, M, ...)</code> with
+    <a href="#lexer.embed"><code>lex:embed</code></a><code>(child, ...)</code> and <code>parent:embed(lex, ...)</code>,
+    respectively.</li>
+    <li>Define fold points with simple calls to
+    <a href="#lexer.add_fold_point"><code>lex:add_fold_point()</code></a>. No need to mess with Lua
+    patterns anymore.</li>
+    <li>Any legacy lexer options such as <code>M._FOLDBYINDENTATION</code>, <code>M._LEXBYLINE</code>,
+    <code>M._lexer</code>, etc. should be added as table options to <a href="#lexer.new"><code>lexer.new()</code></a>.</li>
+    <li>Any external lexer rule fetching and/or modifications via <code>lexer._RULES</code>
+    should be changed to use <a href="#lexer.get_rule"><code>lexer.get_rule()</code></a> and
+    <a href="#lexer.modify_rule"><code>lexer.modify_rule()</code></a>.</li>
+    </ol>
+
+
+    <p>As an example, consider the following sample legacy lexer:</p>
+
+    <pre><code>
+    local l = require('lexer')
+    local token, word_match = l.token, l.word_match
+    local P, R, S = lpeg.P, lpeg.R, lpeg.S
+
+    local M = {_NAME = 'legacy'}
+
+    local ws = token(l.WHITESPACE, l.space^1)
+    local comment = token(l.COMMENT, '#' * l.nonnewline^0)
+    local string = token(l.STRING, l.delimited_range('"'))
+    local number = token(l.NUMBER, l.float + l.integer)
+    local keyword = token(l.KEYWORD, word_match{'foo', 'bar', 'baz'})
+    local custom = token('custom', P('quux'))
+    local identifier = token(l.IDENTIFIER, l.word)
+    local operator = token(l.OPERATOR, S('+-*/%^=&lt;&gt;,.()[]{}'))
+
+    M._rules = {
+      {'whitespace', ws},
+      {'keyword', keyword},
+      {'custom', custom},
+      {'identifier', identifier},
+      {'string', string},
+      {'comment', comment},
+      {'number', number},
+      {'operator', operator}
+    }
+
+    M._tokenstyles = {
+      'custom' = l.STYLE_KEYWORD..',bold'
+    }
+
+    M._foldsymbols = {
+      _patterns = {'[{}]'},
+      [l.OPERATOR] = {['{'] = 1, ['}'] = -1}
+    }
+
+    return M
+    </code></pre>
+
+    <p>Following the migration steps would yield:</p>
+
+    <pre><code>
+    local lexer = require('lexer')
+    local token, word_match = lexer.token, lexer.word_match
+    local P, R, S = lpeg.P, lpeg.R, lpeg.S
+
+    local lex = lexer.new('legacy')
+
+    lex:add_rule('whitespace', token(lexer.WHITESPACE, lexer.space^1))
+    lex:add_rule('keyword', token(lexer.KEYWORD, word_match[[foo bar baz]]))
+    lex:add_rule('custom', token('custom', P('quux')))
+    lex:add_style('custom', lexer.STYLE_KEYWORD..',bold')
+    lex:add_rule('identifier', token(lexer.IDENTIFIER, lexer.word))
+    lex:add_rule('string', token(lexer.STRING, lexer.delimited_range('"')))
+    lex:add_rule('comment', token(lexer.COMMENT, '#' * lexer.nonnewline^0))
+    lex:add_rule('number', token(lexer.NUMBER, lexer.float + lexer.integer))
+    lex:add_rule('operator', token(lexer.OPERATOR, S('+-*/%^=&lt;&gt;,.()[]{}')))
+
+    lex:add_fold_point(lexer.OPERATOR, '{', '}')
+
+    return lex
+    </code></pre>
+
+    <p><a id="lexer.Considerations"></a></p>
+
+    <h3>Considerations</h3>
+
+    <p><a id="lexer.Performance"></a></p>
+
+    <h4>Performance</h4>
+
+    <p>There might be some slight overhead when initializing a lexer, but loading a
+    file from disk into Scintilla is usually more expensive. On modern computer
+    systems, I see no difference in speed between Lua lexers and Scintilla's C++
+    ones. Optimize lexers for speed by re-arranging <code>lexer.add_rule()</code> calls so
+    that the most common rules match first. Do keep in mind that order matters
+    for similar rules.</p>
+
+    <p>In some cases, folding may be far more expensive than lexing, particularly
+    in lexers with a lot of potential fold points. If your lexer is exhibiting
+    signs of slowness, try disabling folding your text editor first. If that
+    speeds things up, you can try reducing the number of fold points you added,
+    overriding <code>lexer.fold()</code> with your own implementation, or simply eliminating
+    folding support from your lexer.</p>
+
+    <p><a id="lexer.Limitations"></a></p>
+
+    <h4>Limitations</h4>
+
+    <p>Embedded preprocessor languages like PHP cannot completely embed in their
+    parent languages in that the parent's tokens do not support start and end
+    rules. This mostly goes unnoticed, but code like</p>
+
+    <pre><code>
+    &lt;div id="&lt;?php echo $id; ?&gt;"&gt;
+    </code></pre>
+
+    <p>will not style correctly.</p>
+
+    <p><a id="lexer.Troubleshooting"></a></p>
+
+    <h4>Troubleshooting</h4>
+
+    <p>Errors in lexers can be tricky to debug. Lexers print Lua errors to
+    <code>io.stderr</code> and <code>_G.print()</code> statements to <code>io.stdout</code>. Running your editor
+    from a terminal is the easiest way to see errors as they occur.</p>
+
+    <p><a id="lexer.Risks"></a></p>
+
+    <h4>Risks</h4>
+
+    <p>Poorly written lexers have the ability to crash Scintilla (and thus its
+    containing application), so unsaved data might be lost. However, I have only
+    observed these crashes in early lexer development, when syntax errors or
+    pattern errors are present. Once the lexer actually starts styling text
+    (either correctly or incorrectly, it does not matter), I have not observed
+    any crashes.</p>
+
+    <p><a id="lexer.Acknowledgements"></a></p>
+
+    <h4>Acknowledgements</h4>
+
+    <p>Thanks to Peter Odding for his <a href="http://lua-users.org/lists/lua-l/2007-04/msg00116.html">lexer post</a> on the Lua mailing list
+    that inspired me, and thanks to Roberto Ierusalimschy for LPeg.</p>
+
+    <h2>Lua <code>lexer</code> module API fields</h2>
+
+    <p><a id="lexer.CLASS"></a></p>
+
+    <h3><code>lexer.CLASS</code> (string)</h3>
+
+    <p>The token name for class tokens.</p>
+
+    <p><a id="lexer.COMMENT"></a></p>
+
+    <h3><code>lexer.COMMENT</code> (string)</h3>
+
+    <p>The token name for comment tokens.</p>
+
+    <p><a id="lexer.CONSTANT"></a></p>
+
+    <h3><code>lexer.CONSTANT</code> (string)</h3>
+
+    <p>The token name for constant tokens.</p>
+
+    <p><a id="lexer.DEFAULT"></a></p>
+
+    <h3><code>lexer.DEFAULT</code> (string)</h3>
+
+    <p>The token name for default tokens.</p>
+
+    <p><a id="lexer.ERROR"></a></p>
+
+    <h3><code>lexer.ERROR</code> (string)</h3>
+
+    <p>The token name for error tokens.</p>
+
+    <p><a id="lexer.FOLD_BASE"></a></p>
+
+    <h3><code>lexer.FOLD_BASE</code> (number)</h3>
+
+    <p>The initial (root) fold level.</p>
+
+    <p><a id="lexer.FOLD_BLANK"></a></p>
+
+    <h3><code>lexer.FOLD_BLANK</code> (number)</h3>
+
+    <p>Flag indicating that the line is blank.</p>
+
+    <p><a id="lexer.FOLD_HEADER"></a></p>
+
+    <h3><code>lexer.FOLD_HEADER</code> (number)</h3>
+
+    <p>Flag indicating the line is fold point.</p>
+
+    <p><a id="lexer.FUNCTION"></a></p>
+
+    <h3><code>lexer.FUNCTION</code> (string)</h3>
+
+    <p>The token name for function tokens.</p>
+
+    <p><a id="lexer.IDENTIFIER"></a></p>
+
+    <h3><code>lexer.IDENTIFIER</code> (string)</h3>
+
+    <p>The token name for identifier tokens.</p>
+
+    <p><a id="lexer.KEYWORD"></a></p>
+
+    <h3><code>lexer.KEYWORD</code> (string)</h3>
+
+    <p>The token name for keyword tokens.</p>
+
+    <p><a id="lexer.LABEL"></a></p>
+
+    <h3><code>lexer.LABEL</code> (string)</h3>
+
+    <p>The token name for label tokens.</p>
+
+    <p><a id="lexer.NUMBER"></a></p>
+
+    <h3><code>lexer.NUMBER</code> (string)</h3>
+
+    <p>The token name for number tokens.</p>
+
+    <p><a id="lexer.OPERATOR"></a></p>
+
+    <h3><code>lexer.OPERATOR</code> (string)</h3>
+
+    <p>The token name for operator tokens.</p>
+
+    <p><a id="lexer.PREPROCESSOR"></a></p>
+
+    <h3><code>lexer.PREPROCESSOR</code> (string)</h3>
+
+    <p>The token name for preprocessor tokens.</p>
+
+    <p><a id="lexer.REGEX"></a></p>
+
+    <h3><code>lexer.REGEX</code> (string)</h3>
+
+    <p>The token name for regex tokens.</p>
+
+    <p><a id="lexer.STRING"></a></p>
+
+    <h3><code>lexer.STRING</code> (string)</h3>
+
+    <p>The token name for string tokens.</p>
+
+    <p><a id="lexer.STYLE_BRACEBAD"></a></p>
+
+    <h3><code>lexer.STYLE_BRACEBAD</code> (string)</h3>
+
+    <p>The style used for unmatched brace characters.</p>
+
+    <p><a id="lexer.STYLE_BRACELIGHT"></a></p>
+
+    <h3><code>lexer.STYLE_BRACELIGHT</code> (string)</h3>
+
+    <p>The style used for highlighted brace characters.</p>
+
+    <p><a id="lexer.STYLE_CALLTIP"></a></p>
+
+    <h3><code>lexer.STYLE_CALLTIP</code> (string)</h3>
+
+    <p>The style used by call tips if <a href="#buffer.call_tip_use_style"><code>buffer.call_tip_use_style</code></a> is set.
+      Only the font name, size, and color attributes are used.</p>
+
+    <p><a id="lexer.STYLE_CLASS"></a></p>
+
+    <h3><code>lexer.STYLE_CLASS</code> (string)</h3>
+
+    <p>The style typically used for class definitions.</p>
+
+    <p><a id="lexer.STYLE_COMMENT"></a></p>
+
+    <h3><code>lexer.STYLE_COMMENT</code> (string)</h3>
+
+    <p>The style typically used for code comments.</p>
+
+    <p><a id="lexer.STYLE_CONSTANT"></a></p>
+
+    <h3><code>lexer.STYLE_CONSTANT</code> (string)</h3>
+
+    <p>The style typically used for constants.</p>
+
+    <p><a id="lexer.STYLE_CONTROLCHAR"></a></p>
+
+    <h3><code>lexer.STYLE_CONTROLCHAR</code> (string)</h3>
+
+    <p>The style used for control characters.
+      Color attributes are ignored.</p>
+
+    <p><a id="lexer.STYLE_DEFAULT"></a></p>
+
+    <h3><code>lexer.STYLE_DEFAULT</code> (string)</h3>
+
+    <p>The style all styles are based off of.</p>
+
+    <p><a id="lexer.STYLE_EMBEDDED"></a></p>
+
+    <h3><code>lexer.STYLE_EMBEDDED</code> (string)</h3>
+
+    <p>The style typically used for embedded code.</p>
+
+    <p><a id="lexer.STYLE_ERROR"></a></p>
+
+    <h3><code>lexer.STYLE_ERROR</code> (string)</h3>
+
+    <p>The style typically used for erroneous syntax.</p>
+
+    <p><a id="lexer.STYLE_FOLDDISPLAYTEXT"></a></p>
+
+    <h3><code>lexer.STYLE_FOLDDISPLAYTEXT</code> (string)</h3>
+
+    <p>The style used for fold display text.</p>
+
+    <p><a id="lexer.STYLE_FUNCTION"></a></p>
+
+    <h3><code>lexer.STYLE_FUNCTION</code> (string)</h3>
+
+    <p>The style typically used for function definitions.</p>
+
+    <p><a id="lexer.STYLE_IDENTIFIER"></a></p>
+
+    <h3><code>lexer.STYLE_IDENTIFIER</code> (string)</h3>
+
+    <p>The style typically used for identifier words.</p>
+
+    <p><a id="lexer.STYLE_INDENTGUIDE"></a></p>
+
+    <h3><code>lexer.STYLE_INDENTGUIDE</code> (string)</h3>
+
+    <p>The style used for indentation guides.</p>
+
+    <p><a id="lexer.STYLE_KEYWORD"></a></p>
+
+    <h3><code>lexer.STYLE_KEYWORD</code> (string)</h3>
+
+    <p>The style typically used for language keywords.</p>
+
+    <p><a id="lexer.STYLE_LABEL"></a></p>
+
+    <h3><code>lexer.STYLE_LABEL</code> (string)</h3>
+
+    <p>The style typically used for labels.</p>
+
+    <p><a id="lexer.STYLE_LINENUMBER"></a></p>
+
+    <h3><code>lexer.STYLE_LINENUMBER</code> (string)</h3>
+
+    <p>The style used for all margins except fold margins.</p>
+
+    <p><a id="lexer.STYLE_NUMBER"></a></p>
+
+    <h3><code>lexer.STYLE_NUMBER</code> (string)</h3>
+
+    <p>The style typically used for numbers.</p>
+
+    <p><a id="lexer.STYLE_OPERATOR"></a></p>
+
+    <h3><code>lexer.STYLE_OPERATOR</code> (string)</h3>
+
+    <p>The style typically used for operators.</p>
+
+    <p><a id="lexer.STYLE_PREPROCESSOR"></a></p>
+
+    <h3><code>lexer.STYLE_PREPROCESSOR</code> (string)</h3>
+
+    <p>The style typically used for preprocessor statements.</p>
+
+    <p><a id="lexer.STYLE_REGEX"></a></p>
+
+    <h3><code>lexer.STYLE_REGEX</code> (string)</h3>
+
+    <p>The style typically used for regular expression strings.</p>
+
+    <p><a id="lexer.STYLE_STRING"></a></p>
+
+    <h3><code>lexer.STYLE_STRING</code> (string)</h3>
+
+    <p>The style typically used for strings.</p>
+
+    <p><a id="lexer.STYLE_TYPE"></a></p>
+
+    <h3><code>lexer.STYLE_TYPE</code> (string)</h3>
+
+    <p>The style typically used for static types.</p>
+
+    <p><a id="lexer.STYLE_VARIABLE"></a></p>
+
+    <h3><code>lexer.STYLE_VARIABLE</code> (string)</h3>
+
+    <p>The style typically used for variables.</p>
+
+    <p><a id="lexer.STYLE_WHITESPACE"></a></p>
+
+    <h3><code>lexer.STYLE_WHITESPACE</code> (string)</h3>
+
+    <p>The style typically used for whitespace.</p>
+
+    <p><a id="lexer.TYPE"></a></p>
+
+    <h3><code>lexer.TYPE</code> (string)</h3>
+
+    <p>The token name for type tokens.</p>
+
+    <p><a id="lexer.VARIABLE"></a></p>
+
+    <h3><code>lexer.VARIABLE</code> (string)</h3>
+
+    <p>The token name for variable tokens.</p>
+
+    <p><a id="lexer.WHITESPACE"></a></p>
+
+    <h3><code>lexer.WHITESPACE</code> (string)</h3>
+
+    <p>The token name for whitespace tokens.</p>
+
+    <p><a id="lexer.alnum"></a></p>
+
+    <h3><code>lexer.alnum</code> (pattern)</h3>
+
+    <p>A pattern that matches any alphanumeric character ('A'-'Z', 'a'-'z',
+        '0'-'9').</p>
+
+    <p><a id="lexer.alpha"></a></p>
+
+    <h3><code>lexer.alpha</code> (pattern)</h3>
+
+    <p>A pattern that matches any alphabetic character ('A'-'Z', 'a'-'z').</p>
+
+    <p><a id="lexer.any"></a></p>
+
+    <h3><code>lexer.any</code> (pattern)</h3>
+
+    <p>A pattern that matches any single character.</p>
+
+    <p><a id="lexer.ascii"></a></p>
+
+    <h3><code>lexer.ascii</code> (pattern)</h3>
+
+    <p>A pattern that matches any ASCII character (codes 0 to 127).</p>
+
+    <p><a id="lexer.cntrl"></a></p>
+
+    <h3><code>lexer.cntrl</code> (pattern)</h3>
+
+    <p>A pattern that matches any control character (ASCII codes 0 to 31).</p>
+
+    <p><a id="lexer.dec_num"></a></p>
+
+    <h3><code>lexer.dec_num</code> (pattern)</h3>
+
+    <p>A pattern that matches a decimal number.</p>
+
+    <p><a id="lexer.digit"></a></p>
+
+    <h3><code>lexer.digit</code> (pattern)</h3>
+
+    <p>A pattern that matches any digit ('0'-'9').</p>
+
+    <p><a id="lexer.extend"></a></p>
+
+    <h3><code>lexer.extend</code> (pattern)</h3>
+
+    <p>A pattern that matches any ASCII extended character (codes 0 to 255).</p>
+
+    <p><a id="lexer.float"></a></p>
+
+    <h3><code>lexer.float</code> (pattern)</h3>
+
+    <p>A pattern that matches a floating point number.</p>
+
+    <p><a id="lexer.fold_level"></a></p>
+
+    <h3><code>lexer.fold_level</code> (table, Read-only)</h3>
+
+    <p>Table of fold level bit-masks for line numbers starting from zero.
+      Fold level masks are composed of an integer level combined with any of the
+      following bits:</p>
+
+    <ul>
+    <li><code>lexer.FOLD_BASE</code>
+    The initial fold level.</li>
+    <li><code>lexer.FOLD_BLANK</code>
+    The line is blank.</li>
+    <li><code>lexer.FOLD_HEADER</code>
+    The line is a header, or fold point.</li>
+    </ul>
+
+
+    <p><a id="lexer.graph"></a></p>
+
+    <h3><code>lexer.graph</code> (pattern)</h3>
+
+    <p>A pattern that matches any graphical character ('!' to '~').</p>
+
+    <p><a id="lexer.hex_num"></a></p>
+
+    <h3><code>lexer.hex_num</code> (pattern)</h3>
+
+    <p>A pattern that matches a hexadecimal number.</p>
+
+    <p><a id="lexer.indent_amount"></a></p>
+
+    <h3><code>lexer.indent_amount</code> (table, Read-only)</h3>
+
+    <p>Table of indentation amounts in character columns, for line numbers
+      starting from zero.</p>
+
+    <p><a id="lexer.integer"></a></p>
+
+    <h3><code>lexer.integer</code> (pattern)</h3>
+
+    <p>A pattern that matches either a decimal, hexadecimal, or octal number.</p>
+
+    <p><a id="lexer.line_state"></a></p>
+
+    <h3><code>lexer.line_state</code> (table)</h3>
+
+    <p>Table of integer line states for line numbers starting from zero.
+      Line states can be used by lexers for keeping track of persistent states.</p>
+
+    <p><a id="lexer.lower"></a></p>
+
+    <h3><code>lexer.lower</code> (pattern)</h3>
+
+    <p>A pattern that matches any lower case character ('a'-'z').</p>
+
+    <p><a id="lexer.newline"></a></p>
+
+    <h3><code>lexer.newline</code> (pattern)</h3>
+
+    <p>A pattern that matches any set of end of line characters.</p>
+
+    <p><a id="lexer.nonnewline"></a></p>
+
+    <h3><code>lexer.nonnewline</code> (pattern)</h3>
+
+    <p>A pattern that matches any single, non-newline character.</p>
+
+    <p><a id="lexer.nonnewline_esc"></a></p>
+
+    <h3><code>lexer.nonnewline_esc</code> (pattern)</h3>
+
+    <p>A pattern that matches any single, non-newline character or any set of end
+      of line characters escaped with '\'.</p>
+
+    <p><a id="lexer.oct_num"></a></p>
+
+    <h3><code>lexer.oct_num</code> (pattern)</h3>
+
+    <p>A pattern that matches an octal number.</p>
+
+    <p><a id="lexer.path"></a></p>
+
+    <h3><code>lexer.path</code> (string)</h3>
+
+    <p>The path used to search for a lexer to load.
+      Identical in format to Lua's <code>package.path</code> string.
+      The default value is <code>package.path</code>.</p>
+
+    <p><a id="lexer.print"></a></p>
+
+    <h3><code>lexer.print</code> (pattern)</h3>
+
+    <p>A pattern that matches any printable character (' ' to '~').</p>
+
+    <p><a id="lexer.property"></a></p>
+
+    <h3><code>lexer.property</code> (table)</h3>
+
+    <p>Map of key-value string pairs.</p>
+
+    <p><a id="lexer.property_expanded"></a></p>
+
+    <h3><code>lexer.property_expanded</code> (table, Read-only)</h3>
+
+    <p>Map of key-value string pairs with <code>$()</code> and <code>%()</code> variable replacement
+      performed in values.</p>
+
+    <p><a id="lexer.property_int"></a></p>
+
+    <h3><code>lexer.property_int</code> (table, Read-only)</h3>
+
+    <p>Map of key-value pairs with values interpreted as numbers, or <code>0</code> if not
+      found.</p>
+
+    <p><a id="lexer.punct"></a></p>
+
+    <h3><code>lexer.punct</code> (pattern)</h3>
+
+    <p>A pattern that matches any punctuation character ('!' to '/', ':' to '@',
+      '[' to ''', '{' to '~').</p>
+
+    <p><a id="lexer.space"></a></p>
+
+    <h3><code>lexer.space</code> (pattern)</h3>
+
+    <p>A pattern that matches any whitespace character ('\t', '\v', '\f', '\n',
+      '\r', space).</p>
+
+    <p><a id="lexer.style_at"></a></p>
+
+    <h3><code>lexer.style_at</code> (table, Read-only)</h3>
+
+    <p>Table of style names at positions in the buffer starting from 1.</p>
+
+    <p><a id="lexer.upper"></a></p>
+
+    <h3><code>lexer.upper</code> (pattern)</h3>
+
+    <p>A pattern that matches any upper case character ('A'-'Z').</p>
+
+    <p><a id="lexer.word"></a></p>
+
+    <h3><code>lexer.word</code> (pattern)</h3>
+
+    <p>A pattern that matches a typical word. Words begin with a letter or
+      underscore and consist of alphanumeric and underscore characters.</p>
+
+    <p><a id="lexer.xdigit"></a></p>
+
+    <h3><code>lexer.xdigit</code> (pattern)</h3>
+
+    <p>A pattern that matches any hexadecimal digit ('0'-'9', 'A'-'F', 'a'-'f').</p>
+
+    <h2>Lua <code>lexer</code> module API functions</h2>
+
+    <p><a id="lexer.add_fold_point"></a></p>
+
+    <h3><code>lexer.add_fold_point</code> (lexer, token_name, start_symbol, end_symbol)</h3>
+
+    <p>Adds to lexer <em>lexer</em> a fold point whose beginning and end tokens are string
+    <em>token_name</em> tokens with string content <em>start_symbol</em> and <em>end_symbol</em>,
+    respectively.
+    In the event that <em>start_symbol</em> may or may not be a fold point depending on
+    context, and that additional processing is required, <em>end_symbol</em> may be a
+    function that ultimately returns <code>1</code> (indicating a beginning fold point),
+    <code>-1</code> (indicating an ending fold point), or <code>0</code> (indicating no fold point).
+    That function is passed the following arguments:</p>
+
+    <ul>
+    <li><code>text</code>: The text being processed for fold points.</li>
+    <li><code>pos</code>: The position in <em>text</em> of the beginning of the line currently
+    being processed.</li>
+    <li><code>line</code>: The text of the line currently being processed.</li>
+    <li><code>s</code>: The position of <em>start_symbol</em> in <em>line</em>.</li>
+    <li><code>symbol</code>: <em>start_symbol</em> itself.</li>
+    </ul>
+
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>lexer</code>: The lexer to add a fold point to.</li>
+    <li><code>token_name</code>: The token name of text that indicates a fold point.</li>
+    <li><code>start_symbol</code>: The text that indicates the beginning of a fold point.</li>
+    <li><code>end_symbol</code>: Either the text that indicates the end of a fold point, or
+    a function that returns whether or not <em>start_symbol</em> is a beginning fold
+    point (1), an ending fold point (-1), or not a fold point at all (0).</li>
+    </ul>
+
+
+    <p>Usage:</p>
+
+    <ul>
+    <li><code>lex:add_fold_point(lexer.OPERATOR, '{', '}')</code></li>
+    <li><code>lex:add_fold_point(lexer.KEYWORD, 'if', 'end')</code></li>
+    <li><code>lex:add_fold_point(lexer.COMMENT, '#', lexer.fold_line_comments('#'))</code></li>
+    <li><code>lex:add_fold_point('custom', function(text, pos, line, s, symbol)
+    ... end)</code></li>
+    </ul>
+
+
+    <p><a id="lexer.add_rule"></a></p>
+
+    <h3><code>lexer.add_rule</code> (lexer, id, rule)</h3>
+
+    <p>Adds pattern <em>rule</em> identified by string <em>id</em> to the ordered list of rules
+    for lexer <em>lexer</em>.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>lexer</code>: The lexer to add the given rule to.</li>
+    <li><code>id</code>: The id associated with this rule. It does not have to be the same
+    as the name passed to <code>token()</code>.</li>
+    <li><code>rule</code>: The LPeg pattern of the rule.</li>
+    </ul>
+
+
+    <p>See also:</p>
+
+    <ul>
+    <li><a href="#lexer.modify_rule"><code>lexer.modify_rule</code></a></li>
+    </ul>
+
+
+    <p><a id="lexer.add_style"></a></p>
+
+    <h3><code>lexer.add_style</code> (lexer, token_name, style)</h3>
+
+    <p>Associates string <em>token_name</em> in lexer <em>lexer</em> with Scintilla style string
+    <em>style</em>.
+    Style strings are comma-separated property settings. Available property
+    settings are:</p>
+
+    <ul>
+    <li><code>font:name</code>: Font name.</li>
+    <li><code>size:int</code>: Font size.</li>
+    <li><code>bold</code> or <code>notbold</code>: Whether or not the font face is bold.</li>
+    <li><code>weight:int</code>: Font weight (between 1 and 999).</li>
+    <li><code>italics</code> or <code>notitalics</code>: Whether or not the font face is italic.</li>
+    <li><code>underlined</code> or <code>notunderlined</code>: Whether or not the font face is
+    underlined.</li>
+    <li><code>fore:color</code>: Font face foreground color in "#RRGGBB" or 0xBBGGRR format.</li>
+    <li><code>back:color</code>: Font face background color in "#RRGGBB" or 0xBBGGRR format.</li>
+    <li><code>eolfilled</code> or <code>noteolfilled</code>: Whether or not the background color
+    extends to the end of the line.</li>
+    <li><code>case:char</code>: Font case ('u' for uppercase, 'l' for lowercase, and 'm' for
+    mixed case).</li>
+    <li><code>visible</code> or <code>notvisible</code>: Whether or not the text is visible.</li>
+    <li><code>changeable</code> or <code>notchangeable</code>: Whether or not the text is changeable or
+    read-only.</li>
+    </ul>
+
+
+    <p>Property settings may also contain "$(property.name)" expansions for
+    properties defined in Scintilla, theme files, etc.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>lexer</code>: The lexer to add a style to.</li>
+    <li><code>token_name</code>: The name of the token to associated with the style.</li>
+    <li><code>style</code>: A style string for Scintilla.</li>
+    </ul>
+
+
+    <p>Usage:</p>
+
+    <ul>
+    <li><code>lex:add_style('longstring', lexer.STYLE_STRING)</code></li>
+    <li><code>lex:add_style('deprecated_function', lexer.STYLE_FUNCTION..',italics')</code></li>
+    <li><code>lex:add_style('visible_ws',
+    lexer.STYLE_WHITESPACE..',back:$(color.grey)')</code></li>
+    </ul>
+
+
+    <p><a id="lexer.delimited_range"></a></p>
+
+    <h3><code>lexer.delimited_range</code> (chars, single_line, no_escape, balanced)</h3>
+
+    <p>Creates and returns a pattern that matches a range of text bounded by
+    <em>chars</em> characters.
+    This is a convenience function for matching more complicated delimited ranges
+    like strings with escape characters and balanced parentheses. <em>single_line</em>
+    indicates whether or not the range must be on a single line, <em>no_escape</em>
+    indicates whether or not to ignore '\' as an escape character, and <em>balanced</em>
+    indicates whether or not to handle balanced ranges like parentheses and
+    requires <em>chars</em> to be composed of two characters.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>chars</code>: The character(s) that bound the matched range.</li>
+    <li><code>single_line</code>: Optional flag indicating whether or not the range must be
+    on a single line.</li>
+    <li><code>no_escape</code>: Optional flag indicating whether or not the range end
+    character may be escaped by a '\' character.</li>
+    <li><code>balanced</code>: Optional flag indicating whether or not to match a balanced
+    range, like the "%b" Lua pattern. This flag only applies if <em>chars</em>
+    consists of two different characters (e.g. "()").</li>
+    </ul>
+
+
+    <p>Usage:</p>
+
+    <ul>
+    <li><code>local dq_str_escapes = lexer.delimited_range('"')</code></li>
+    <li><code>local dq_str_noescapes = lexer.delimited_range('"', false, true)</code></li>
+    <li><code>local unbalanced_parens = lexer.delimited_range('()')</code></li>
+    <li><code>local balanced_parens = lexer.delimited_range('()', false, false,
+    true)</code></li>
+    </ul>
+
+
+    <p>Return:</p>
+
+    <ul>
+    <li>pattern</li>
+    </ul>
+
+
+    <p>See also:</p>
+
+    <ul>
+    <li><a href="#lexer.nested_pair"><code>lexer.nested_pair</code></a></li>
+    </ul>
+
+
+    <p><a id="lexer.embed"></a></p>
+
+    <h3><code>lexer.embed</code> (lexer, child, start_rule, end_rule)</h3>
+
+    <p>Embeds child lexer <em>child</em> in parent lexer <em>lexer</em> using patterns
+    <em>start_rule</em> and <em>end_rule</em>, which signal the beginning and end of the
+    embedded lexer, respectively.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>lexer</code>: The parent lexer.</li>
+    <li><code>child</code>: The child lexer.</li>
+    <li><code>start_rule</code>: The pattern that signals the beginning of the embedded
+    lexer.</li>
+    <li><code>end_rule</code>: The pattern that signals the end of the embedded lexer.</li>
+    </ul>
+
+
+    <p>Usage:</p>
+
+    <ul>
+    <li><code>html:embed(css, css_start_rule, css_end_rule)</code></li>
+    <li><code>html:embed(lex, php_start_rule, php_end_rule) -- from php lexer</code></li>
+    </ul>
+
+
+    <p><a id="lexer.fold"></a></p>
+
+    <h3><code>lexer.fold</code> (lexer, text, start_pos, start_line, start_level)</h3>
+
+    <p>Determines fold points in a chunk of text <em>text</em> using lexer <em>lexer</em>,
+    returning a table of fold levels associated with line numbers.
+    <em>text</em> starts at position <em>start_pos</em> on line number <em>start_line</em> with a
+    beginning fold level of <em>start_level</em> in the buffer.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>lexer</code>: The lexer to fold text with.</li>
+    <li><code>text</code>: The text in the buffer to fold.</li>
+    <li><code>start_pos</code>: The position in the buffer <em>text</em> starts at, starting at
+    zero.</li>
+    <li><code>start_line</code>: The line number <em>text</em> starts on.</li>
+    <li><code>start_level</code>: The fold level <em>text</em> starts on.</li>
+    </ul>
+
+
+    <p>Return:</p>
+
+    <ul>
+    <li>table of fold levels associated with line numbers.</li>
+    </ul>
+
+
+    <p><a id="lexer.fold_line_comments"></a></p>
+
+    <h3><code>lexer.fold_line_comments</code> (prefix)</h3>
+
+    <p>Returns a fold function (to be passed to <code>lexer.add_fold_point()</code>) that folds
+    consecutive line comments that start with string <em>prefix</em>.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>prefix</code>: The prefix string defining a line comment.</li>
+    </ul>
+
+
+    <p>Usage:</p>
+
+    <ul>
+    <li><code>lex:add_fold_point(lexer.COMMENT, '--',
+    lexer.fold_line_comments('--'))</code></li>
+    <li><code>lex:add_fold_point(lexer.COMMENT, '//',
+    lexer.fold_line_comments('//'))</code></li>
+    </ul>
+
+
+    <p><a id="lexer.get_rule"></a></p>
+
+    <h3><code>lexer.get_rule</code> (lexer, id)</h3>
+
+    <p>Returns the rule identified by string <em>id</em>.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>lexer</code>: The lexer to fetch a rule from.</li>
+    <li><code>id</code>: The id of the rule to fetch.</li>
+    </ul>
+
+
+    <p>Return:</p>
+
+    <ul>
+    <li>pattern</li>
+    </ul>
+
+
+    <p><a id="lexer.last_char_includes"></a></p>
+
+    <h3><code>lexer.last_char_includes</code> (s)</h3>
+
+    <p>Creates and returns a pattern that verifies that string set <em>s</em> contains the
+    first non-whitespace character behind the current match position.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>s</code>: String character set like one passed to <code>lpeg.S()</code>.</li>
+    </ul>
+
+
+    <p>Usage:</p>
+
+    <ul>
+    <li><code>local regex = lexer.last_char_includes('+-*!%^&amp;|=,([{') *
+    lexer.delimited_range('/')</code></li>
+    </ul>
+
+
+    <p>Return:</p>
+
+    <ul>
+    <li>pattern</li>
+    </ul>
+
+
+    <p><a id="lexer.lex"></a></p>
+
+    <h3><code>lexer.lex</code> (lexer, text, init_style)</h3>
+
+    <p>Lexes a chunk of text <em>text</em> (that has an initial style number of
+    <em>init_style</em>) using lexer <em>lexer</em>, returning a table of token names and
+    positions.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>lexer</code>: The lexer to lex text with.</li>
+    <li><code>text</code>: The text in the buffer to lex.</li>
+    <li><code>init_style</code>: The current style. Multiple-language lexers use this to
+    determine which language to start lexing in.</li>
+    </ul>
+
+
+    <p>Return:</p>
+
+    <ul>
+    <li>table of token names and positions.</li>
+    </ul>
+
+
+    <p><a id="lexer.line_from_position"></a></p>
+
+    <h3><code>lexer.line_from_position</code> (pos)</h3>
+
+    <p>Returns the line number of the line that contains position <em>pos</em>, which
+    starts from 1.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>pos</code>: The position to get the line number of.</li>
+    </ul>
+
+
+    <p>Return:</p>
+
+    <ul>
+    <li>number</li>
+    </ul>
+
+
+    <p><a id="lexer.load"></a></p>
+
+    <h3><code>lexer.load</code> (name, alt_name, cache)</h3>
+
+    <p>Initializes or loads and returns the lexer of string name <em>name</em>.
+    Scintilla calls this function in order to load a lexer. Parent lexers also
+    call this function in order to load child lexers and vice-versa. The user
+    calls this function in order to load a lexer when using this module as a Lua
+    library.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>name</code>: The name of the lexing language.</li>
+    <li><code>alt_name</code>: The alternate name of the lexing language. This is useful for
+    embedding the same child lexer with multiple sets of start and end tokens.</li>
+    <li><code>cache</code>: Flag indicating whether or not to load lexers from the cache.
+    This should only be <code>true</code> when initially loading a lexer (e.g. not from
+    within another lexer for embedding purposes).
+    The default value is <code>false</code>.</li>
+    </ul>
+
+
+    <p>Return:</p>
+
+    <ul>
+    <li>lexer object</li>
+    </ul>
+
+
+    <p><a id="lexer.modify_rule"></a></p>
+
+    <h3><code>lexer.modify_rule</code> (lexer, id, rule)</h3>
+
+    <p>Replaces in lexer <em>lexer</em> the existing rule identified by string <em>id</em> with
+    pattern <em>rule</em>.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>lexer</code>: The lexer to modify.</li>
+    <li><code>id</code>: The id associated with this rule.</li>
+    <li><code>rule</code>: The LPeg pattern of the rule.</li>
+    </ul>
+
+
+    <p><a id="lexer.nested_pair"></a></p>
+
+    <h3><code>lexer.nested_pair</code> (start_chars, end_chars)</h3>
+
+    <p>Returns a pattern that matches a balanced range of text that starts with
+    string <em>start_chars</em> and ends with string <em>end_chars</em>.
+    With single-character delimiters, this function is identical to
+    <code>delimited_range(start_chars..end_chars, false, true, true)</code>.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>start_chars</code>: The string starting a nested sequence.</li>
+    <li><code>end_chars</code>: The string ending a nested sequence.</li>
+    </ul>
+
+
+    <p>Usage:</p>
+
+    <ul>
+    <li><code>local nested_comment = lexer.nested_pair('/*', '*/')</code></li>
+    </ul>
+
+
+    <p>Return:</p>
+
+    <ul>
+    <li>pattern</li>
+    </ul>
+
+
+    <p>See also:</p>
+
+    <ul>
+    <li><a href="#lexer.delimited_range"><code>lexer.delimited_range</code></a></li>
+    </ul>
+
+
+    <p><a id="lexer.new"></a></p>
+
+    <h3><code>lexer.new</code> (name, opts)</h3>
+
+    <p>Creates a returns a new lexer with the given name.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>name</code>: The lexer's name.</li>
+    <li><code>opts</code>: Table of lexer options. Options currently supported:
+
+    <ul>
+    <li><code>lex_by_line</code>: Whether or not the lexer only processes whole lines of
+    text (instead of arbitrary chunks of text) at a time.
+    Line lexers cannot look ahead to subsequent lines.
+    The default value is <code>false</code>.</li>
+    <li><code>fold_by_indentation</code>: Whether or not the lexer does not define any fold
+    points and that fold points should be calculated based on changes in line
+    indentation.
+    The default value is <code>false</code>.</li>
+    <li><code>case_insensitive_fold_points</code>: Whether or not fold points added via
+    <code>lexer.add_fold_point()</code> ignore case.
+    The default value is <code>false</code>.</li>
+    <li><code>inherit</code>: Lexer to inherit from.
+    The default value is <code>nil</code>.</li>
+    </ul>
+    </li>
+    </ul>
+
+
+    <p>Usage:</p>
+
+    <ul>
+    <li><code>lexer.new('rhtml', {inherit = lexer.load('html')})</code></li>
+    </ul>
+
+
+    <p><a id="lexer.starts_line"></a></p>
+
+    <h3><code>lexer.starts_line</code> (patt)</h3>
+
+    <p>Creates and returns a pattern that matches pattern <em>patt</em> only at the
+    beginning of a line.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>patt</code>: The LPeg pattern to match on the beginning of a line.</li>
+    </ul>
+
+
+    <p>Usage:</p>
+
+    <ul>
+    <li><code>local preproc = token(lexer.PREPROCESSOR, lexer.starts_line('#') *
+    lexer.nonnewline^0)</code></li>
+    </ul>
+
+
+    <p>Return:</p>
+
+    <ul>
+    <li>pattern</li>
+    </ul>
+
+
+    <p><a id="lexer.token"></a></p>
+
+    <h3><code>lexer.token</code> (name, patt)</h3>
+
+    <p>Creates and returns a token pattern with token name <em>name</em> and pattern
+    <em>patt</em>.
+    If <em>name</em> is not a predefined token name, its style must be defined via
+    <code>lexer.add_style()</code>.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>name</code>: The name of token. If this name is not a predefined token name,
+    then a style needs to be assiciated with it via <code>lexer.add_style()</code>.</li>
+    <li><code>patt</code>: The LPeg pattern associated with the token.</li>
+    </ul>
+
+
+    <p>Usage:</p>
+
+    <ul>
+    <li><code>local ws = token(lexer.WHITESPACE, lexer.space^1)</code></li>
+    <li><code>local annotation = token('annotation', '@' * lexer.word)</code></li>
+    </ul>
+
+
+    <p>Return:</p>
+
+    <ul>
+    <li>pattern</li>
+    </ul>
+
+
+    <p><a id="lexer.word_match"></a></p>
+
+    <h3><code>lexer.word_match</code> (words, case_insensitive, word_chars)</h3>
+
+    <p>Creates and returns a pattern that matches any single word in string <em>words</em>.
+    <em>case_insensitive</em> indicates whether or not to ignore case when matching
+    words.
+    This is a convenience function for simplifying a set of ordered choice word
+    patterns.
+    If <em>words</em> is a multi-line string, it may contain Lua line comments (<code>--</code>)
+    that will ultimately be ignored.</p>
+
+    <p>Fields:</p>
+
+    <ul>
+    <li><code>words</code>: A string list of words separated by spaces.</li>
+    <li><code>case_insensitive</code>: Optional boolean flag indicating whether or not the
+    word match is case-insensitive. The default value is <code>false</code>.</li>
+    <li><code>word_chars</code>: Unused legacy parameter.</li>
+    </ul>
+
+
+    <p>Usage:</p>
+
+    <ul>
+    <li><code>local keyword = token(lexer.KEYWORD, word_match[[foo bar baz]])</code></li>
+    <li><code>local keyword = token(lexer.KEYWORD, word_match([[foo-bar foo-baz
+    bar-foo bar-baz baz-foo baz-bar]], true))</code></li>
+    </ul>
+
+
+    <p>Return:</p>
+
+    <ul>
+    <li>pattern</li>
+    </ul>
+
+    <h2 id="LexerList">Supported Languages</h2>
+
+    <p>Scintilla has Lua lexers for all of the languages below. Languages
+    denoted by a <code>*</code> have native
+    <a href="#lexer.Code.Folding">folders</a>. For languages without
+    native folding support, folding based on indentation can be used if
+    <code>fold.by.indentation</code> is enabled.</p>
+
+    <ol>
+    <li>Actionscript<code>*</code></li>
+    <li>Ada</li>
+    <li>ANTLR<code>*</code></li>
+    <li>APDL<code>*</code></li>
+    <li>APL</li>
+    <li>Applescript</li>
+    <li>ASM<code>*</code> (NASM)</li>
+    <li>ASP<code>*</code></li>
+    <li>AutoIt</li>
+    <li>AWK<code>*</code></li>
+    <li>Batch<code>*</code></li>
+    <li>BibTeX<code>*</code></li>
+    <li>Boo</li>
+    <li>C<code>*</code></li>
+    <li>C++<code>*</code></li>
+    <li>C#<code>*</code></li>
+    <li>ChucK</li>
+    <li>CMake<code>*</code></li>
+    <li>Coffeescript</li>
+    <li>ConTeXt<code>*</code></li>
+    <li>CSS<code>*</code></li>
+    <li>CUDA<code>*</code></li>
+    <li>D<code>*</code></li>
+    <li>Dart<code>*</code></li>
+    <li>Desktop Entry</li>
+    <li>Diff</li>
+    <li>Django<code>*</code></li>
+    <li>Dockerfile</li>
+    <li>Dot<code>*</code></li>
+    <li>Eiffel<code>*</code></li>
+    <li>Elixir</li>
+    <li>Erlang<code>*</code></li>
+    <li>F#</li>
+    <li>Faust</li>
+    <li>Fish<code>*</code></li>
+    <li>Forth</li>
+    <li>Fortran</li>
+    <li>GAP<code>*</code></li>
+    <li>gettext</li>
+    <li>Gherkin</li>
+    <li>GLSL<code>*</code></li>
+    <li>Gnuplot</li>
+    <li>Go<code>*</code></li>
+    <li>Groovy<code>*</code></li>
+    <li>Gtkrc<code>*</code></li>
+    <li>Haskell</li>
+    <li>HTML<code>*</code></li>
+    <li>Icon<code>*</code></li>
+    <li>IDL</li>
+    <li>Inform</li>
+    <li>ini</li>
+    <li>Io<code>*</code></li>
+    <li>Java<code>*</code></li>
+    <li>Javascript<code>*</code></li>
+    <li>JSON<code>*</code></li>
+    <li>JSP<code>*</code></li>
+    <li>LaTeX<code>*</code></li>
+    <li>Ledger</li>
+    <li>LESS<code>*</code></li>
+    <li>LilyPond</li>
+    <li>Lisp<code>*</code></li>
+    <li>Literate Coffeescript</li>
+    <li>Logtalk</li>
+    <li>Lua<code>*</code></li>
+    <li>Makefile</li>
+    <li>Man Page</li>
+    <li>Markdown</li>
+    <li>MATLAB<code>*</code></li>
+    <li>MoonScript</li>
+    <li>Myrddin</li>
+    <li>Nemerle<code>*</code></li>
+    <li>Nim</li>
+    <li>NSIS</li>
+    <li>Objective-C<code>*</code></li>
+    <li>OCaml</li>
+    <li>Pascal</li>
+    <li>Perl<code>*</code></li>
+    <li>PHP<code>*</code></li>
+    <li>PICO-8<code>*</code></li>
+    <li>Pike<code>*</code></li>
+    <li>PKGBUILD<code>*</code></li>
+    <li>Postscript</li>
+    <li>PowerShell<code>*</code></li>
+    <li>Prolog</li>
+    <li>Properties</li>
+    <li>Pure</li>
+    <li>Python</li>
+    <li>R</li>
+    <li>rc<code>*</code></li>
+    <li>REBOL<code>*</code></li>
+    <li>Rexx<code>*</code></li>
+    <li>ReStructuredText<code>*</code></li>
+    <li>RHTML<code>*</code></li>
+    <li>Ruby<code>*</code></li>
+    <li>Ruby on Rails<code>*</code></li>
+    <li>Rust<code>*</code></li>
+    <li>Sass<code>*</code></li>
+    <li>Scala<code>*</code></li>
+    <li>Scheme<code>*</code></li>
+    <li>Shell<code>*</code></li>
+    <li>Smalltalk<code>*</code></li>
+    <li>Standard ML</li>
+    <li>SNOBOL4</li>
+    <li>SQL</li>
+    <li>TaskPaper</li>
+    <li>Tcl<code>*</code></li>
+    <li>TeX<code>*</code></li>
+    <li>Texinfo<code>*</code></li>
+    <li>TOML</li>
+    <li>Vala<code>*</code></li>
+    <li>VBScript</li>
+    <li>vCard<code>*</code></li>
+    <li>Verilog<code>*</code></li>
+    <li>VHDL</li>
+    <li>Visual Basic</li>
+    <li>Windows Script File<code>*</code></li>
+    <li>XML<code>*</code></li>
+    <li>Xtend<code>*</code></li>
+    <li>YAML</li>
+    </ol>
+
+    <h2>Code Contributors</h2>
+
+    <ul>
+    <li>Alejandro Baez</li>
+    <li>Alex Saraci</li>
+    <li>Brian Schott</li>
+    <li>Carl Sturtivant</li>
+    <li>Chris Emerson</li>
+    <li>Christian Hesse</li>
+    <li>David B. Lamkins</li>
+    <li>Heck Fy</li>
+    <li>Jason Schindler</li>
+    <li>Jeff Stone</li>
+    <li>Joseph Eib</li>
+    <li>Joshua Krämer</li>
+    <li>Klaus Borges</li>
+    <li>Larry Hynes</li>
+    <li>M Rawash</li>
+    <li>Marc André Tanner</li>
+    <li>Markus F.X.J. Oberhumer</li>
+    <li>Martin Morawetz</li>
+    <li>Michael Forney</li>
+    <li>Michael T. Richter</li>
+    <li>Michel Martens</li>
+    <li>Murray Calavera</li>
+    <li>Neil Hodgson</li>
+    <li>Olivier Guibé</li>
+    <li>Peter Odding</li>
+    <li>Piotr Orzechowski</li>
+    <li>Richard Philips</li>
+    <li>Robert Gieseke</li>
+    <li>Roberto Ierusalimschy</li>
+    <li>S. Gilles</li>
+    <li>Stéphane Rivière</li>
+    <li>Tymur Gubayev</li>
+    <li>Wolfgang Seeberg</li>
+    </ul>
+
+  </body>
+</html>

+ 37 - 2
maxguitextareascintilla.mod/scintilla/doc/SciCoding.html

@@ -124,6 +124,8 @@
 	compilers on diverse platforms with high performance and low resource usage.
 	Scintilla has stricter portability requirements to SciTE as it may be ported to
 	low capability platforms.
+	Scintilla code must build with C++03 which can be checked with "g++ --std=gnu++03".
+	SciTE can use C++11 features that are widely available from g++ 4.6, MSVC 2012 and clang 3.4 compilers.
 	</p>
 	<p>
 	To achieve portability, only a subset of C++ features are used.
@@ -131,14 +133,21 @@
 	C++, exceptions may not be thrown out of Scintilla and all exceptions should be caught
 	before returning from Scintilla.
 	Run-time type information adds to memory use so is turned off.
-	A 'Scintilla' name spaces is optionally used based on the SCI_NAMESPACE
-	definition. This helps with name clashes on OS X.
+	A 'Scintilla' name space is used. This helps with name clashes on OS X.
 	</p>
 	<p>
 	The goto statement is not used because of bad memories from my first job
 	maintaining FORTRAN programs. The union feature is not used as it can lead to
 	non-type-safe value access.
 	</p>
+	<p>
+	The SCI_METHOD preprocessor definition should be used when implementing
+	interfaces which include it like ILexer and only there.
+	</p>
+	<p>
+	Headers should always be included in the same order as given by the
+	scripts/HeaderOrder.txt file.
+	</p>
     <h3>
        Casting
     </h3>
@@ -255,5 +264,31 @@
 	<p>Ensure there are no warnings under the compiler you use. Warnings from other compilers
 	will be noted on the feature request.</p>
 	<p>sc.ch is an int: do not pass this around as a char.</p>
+	<p>The ctype functions like isalnum and isdigit only work on ASCII (0..127) and may cause
+	undefined behaviour including crashes if used on other values. Check with IsASCII before calling is*.</p>
+	<p>Functions, structs and classes in lexers should be in an unnamed namespace (see LexCPP)
+	or be marked "static" so they will not leak into other lexers.</p>
+	<p>If you copy from an existing lexer, remove any code that is not needed since it makes it
+	more difficult to maintain and review.</p>
+	<p>When modifying an existing lexer, try to maintain as much compatibility as possible.
+	Do not renumber lexical styles as current client code may be built against the earlier values.</p>
+    <h4>
+       Properties
+    </h4>
+	<p>
+	Properties provided by a new lexer should follow the naming conventions
+	and should include a comment suitable for showing to end users.
+	The convention is for properties that control styling to be named
+	lexer.&lt;lexername&gt;.* and those that control folding to be named
+	fold.&lt;lexername&gt;.*.
+	Examples are "lexer.python.literals.binary" and "fold.haskell.imports".
+	</p>
+	<p>
+	The properties "fold" and "fold.comment" are generic and can be used by
+	any lexer.
+	</p>
+	<p>
+	See LexPython for examples of properties in an object lexer and LexHTML for a functional lexer.
+	</p>
   </body>
 </html>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 253 - 207
maxguitextareascintilla.mod/scintilla/doc/ScintillaDoc.html


+ 5 - 5
maxguitextareascintilla.mod/scintilla/doc/ScintillaDownload.html

@@ -26,9 +26,9 @@
     <table bgcolor="#CCCCCC" width="100%" cellspacing="0" cellpadding="8" border="0">
       <tr>
         <td>
-          <font size="4"> <a href="http://www.scintilla.org/scintilla367.zip">
+          <font size="4"> <a href="https://www.scintilla.org/scintilla3101.zip">
 	Windows</a>&nbsp;&nbsp;
-	<a href="http://www.scintilla.org/scintilla367.tgz">
+	<a href="https://www.scintilla.org/scintilla3101.tgz">
           GTK+/Linux</a>&nbsp;&nbsp;
 	</font>
         </td>
@@ -42,7 +42,7 @@
       containing very few restrictions.
     </p>
     <h3>
-       Release 3.6.7
+       Release 3.10.1
     </h3>
     <h4>
        Source Code
@@ -50,8 +50,8 @@
        The source code package contains all of the source code for Scintilla but no binary
 	executable code and is available in
        <ul>
-       <li><a href="http://www.scintilla.org/scintilla367.zip">zip format</a> (1500K) commonly used on Windows</li>
-       <li><a href="http://www.scintilla.org/scintilla367.tgz">tgz format</a> (1400K) commonly used on Linux and compatible operating systems</li>
+       <li><a href="https://www.scintilla.org/scintilla3101.zip">zip format</a> (1600K) commonly used on Windows</li>
+       <li><a href="https://www.scintilla.org/scintilla3101.tgz">tgz format</a> (1400K) commonly used on Linux and compatible operating systems</li>
        </ul>
        Instructions for building on both Windows and Linux are included in the readme file.
     <h4>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 918 - 17
maxguitextareascintilla.mod/scintilla/doc/ScintillaHistory.html


+ 10 - 6
maxguitextareascintilla.mod/scintilla/doc/ScintillaRelated.html

@@ -29,10 +29,6 @@
     <h3>
        Ports and Bindings of Scintilla
     </h3>
-    <p>
-	<a href="http://foicica.com/scinterm/">Scinterm</a>
-	is an implementation of Scintilla for the ncurses platform.
-    </p>
     <p>
 	<a href="http://www.morphos-team.net/releasenotes/3.0">Scintilla.mcc</a>
 	is a port to MorphOS.
@@ -127,6 +123,14 @@
     <h3>
        Projects using Scintilla
     </h3>
+    <p>
+	<a href="https://github.com/martinrotter/textilosaurus">Textilosaurus</a>
+	is simple cross-platform UTF-8 text editor based on Qt and Scintilla.
+    </p>
+    <p>
+	<a href="http://stefanstools.sourceforge.net/BowPad.html">BowPad</a>
+	is a small and fast text editor with a modern ribbon user interface (Windows7 or later).
+    </p>
     <p>
 	<a href="http://studio.zerobrane.com">ZeroBrane Studio Lua IDE</a>
 	is a lightweight Lua IDE with code completion, syntax highlighting, live
@@ -171,8 +175,8 @@
 	is a wxWidgets-based Perl IDE.
     </p>
     <p>
-	<a href="http://manoscoder.gr/CoderStudio/CoderStudio.asp">CoderStudio</a>
-	is an IDE for Assembly programming similar to Visual Studio 6.0.
+	<a href="http://www.manoscoder.gr/wintools/viewtopic.php?f=20&t=84">CoderStudio</a>
+	is an IDE for plain C and Assembly programming similar to Visual Studio.
     </p>
     <p>
 	<a href="http://www.sparxsystems.com/products/ea/index.html">Enterprise Architect</a>

+ 2 - 2
maxguitextareascintilla.mod/scintilla/doc/ScintillaToDo.html

@@ -30,8 +30,8 @@
        Feedback
     </h3>
     <p>
-	Issues can be reported on the <a href="http://sourceforge.net/p/scintilla/bugs/">Bug Tracker</a>
-	and features requested on	the <a href="http://sourceforge.net/p/scintilla/feature-requests/">Feature Request Tracker</a>.
+	Issues can be reported on the <a href="https://sourceforge.net/p/scintilla/bugs/">Bug Tracker</a>
+	and features requested on the <a href="https://sourceforge.net/p/scintilla/feature-requests/">Feature Request Tracker</a>.
     </p>
     <h3>
        Scintilla Bugs

+ 204 - 0
maxguitextareascintilla.mod/scintilla/doc/StyleMetadata.html

@@ -0,0 +1,204 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+        <head>
+                <meta name="generator" content="HTML Tidy, see www.w3.org" />
+                <meta name="generator" content="SciTE" />
+                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+                <meta name="viewport" content="width=device-width, initial-scale=1" />
+                <title>
+                        Scintilla Style Metadata
+                </title>
+                <style type="text/css">
+<!--
+/*<![CDATA[*/
+	CODE { font-weight: bold; font-family: Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace; }
+/*]]>*/
+-->
+                </style>
+        </head>
+<body bgcolor="#FFFFFF" text="#000000">
+        <table bgcolor="#000000" width="100%" cellspacing="0" cellpadding="0" border="0">
+                <tr>
+                <td>
+                <img src="SciTEIco.png" border="3" height="64" width="64" alt="Scintilla icon" />
+                </td>
+                <td>
+                <a href="index.html" style="color:white;text-decoration:none"><font size="5">Scintilla</font></a>
+                </td>
+                </tr>
+        </table>
+        <h2>
+                Language Types
+        </h2>
+        <p>
+                Scintilla contains lexers for various types of languages:
+                <ul>
+                        <li>Programming languages like C++, Java, and Python.</li>
+                        <li>Assembler languages are low-level programming languages which may additionally include instructions and registers.</li>
+                        <li>Markup languages like HTML, TeX, and Markdown.</li>
+                        <li>Data languages like EDIFACT and YAML.</li>
+                </ul>
+        </p>
+        <p>
+                Some languages can be used in different ways. JavaScript is a programming language but also
+                the basis of JSON data files. Similarly,
+                <a href="https://en.wikipedia.org/wiki/S-expression">Lisp s expressions</a> can be used for both source code and data.
+        </p>
+        <p>
+                Each language type has common elements such as identifiers in programming languages.
+                These common elements should be identified so that languages can be displayed with common
+                styles for these elements.
+                Style tags are used for this purpose in Scintilla.
+        </p>
+        <h2>
+                Style Tags
+        </h2>
+        <p>
+                Every style has a list of tags where a tag is a lower-case word containing only the common ASCII letters 'a'-'z'
+                such as "comment" or "operator".
+        </p>
+        <p>
+                Tags are ordered from most important to least important.
+        </p>
+        <p>
+                While applications may assign visual attributes for tag lists in many different ways, one reasonable technique is to
+                apply tag-specific attributes in reverse order so that earlier and more important tags override less important tags.
+                For example, the tag list <code>"error comment documentation keyword"</code> with
+                a set of tag attributes <br />
+                <code>{ comment=fore:green,back:very-light-green,font:Serif documentation=fore:light-green error=strikethrough keyword=bold }</code><br />
+                could be rendered as <br />
+                <code>bold,fore:light-green,back:very-light-green,font:Serif,strikethrough</code>.
+        </p>
+        <p>
+                Alternative renderings could check for multi-tag combinations like
+                <code>{ comment.documentation=fore:light-green comment.line=dark-green comment=green }.</code>
+        </p>
+        <p>
+                Commonly, a tag list will contain an optional embedded language; optional statuses; a base type; and a set of type modifiers:<br />
+                <code>embedded-language? status* base-type modifiers*</code>
+        </p>
+        <h3>Embedded language</h3>
+        <p>
+                The embedded language may be a source <code>(client | server)</code> followed by a language name
+                <code>(javascript | php | python | basic)</code>.
+                This may be extended in the future with other programming languages and style-definition languages like CSS.
+        </p>
+        <h3>Status</h3>
+        <p>
+                The statuses may be <code>(error | unused | predefined | inactive)</code>.<br />
+                The <code>error</code> status is used for lexical statuses that indicate errors in the source code such as unterminated quoted strings.<br />
+                The <code>unused</code> status may indicate a gap in the lexical states, possibly because an old lexical class is no longer used or an upcoming lexical class may fill that position.<br />
+                The <code>predefined</code> status indicates a style in the range 32.39 that is used for non-lexical purposes in Scintilla.<br />
+                The <code>inactive</code> status is used for text that is not currently interpreted such as C++ code that is contained within a '#if 0' preprocessor block.
+        </p>
+        <h3>Basic Types</h3>
+        <p>
+                The basic types for programming languages are <code>(default | operator | keyword | identifier | literal | comment | preprocessor | label)</code>.<br />
+                The <code>default</code> type is commonly used for spaces and tabs between tokens although it may cover other characters in some languages.
+        </p>
+        <p>
+                Assembler languages add <code>(instruction | register)</code>. to the basic types from programming languages.<br />
+        </p>
+        <p>
+                The basic types for markup languages are <code>(default | tag | attribute | comment | preprocessor)</code>.<br />
+        </p>
+        <p>
+                The basic types for data languages are <code>(default | key | data | comment)</code>.<br />
+        </p>
+        <h3>Comments</h3>
+        <p>
+                Programming languages may differentiate between line and stream comments and treat documentation comments as distinct from other comments.
+                Documentation comments may be marked up with documentation keywords.<br />
+                The additional attributes commonly used are <code>(line | documentation | keyword | taskmarker)</code>.
+        </p>
+        <h3>Literals</h3>
+        <p>
+                Programming and assembler languages contain a rich set of literals including numbers like <code>7</code> and <code>3.89e23</code>; <code>"string\n"</code>; and <code>nullptr</code>
+                and differentiating between these is often wanted.<br />
+                The common literal types are <code>(numeric | boolean | string | regex | date | time | uuid | nil | compound)</code>.<br />
+                Numeric literal types are subdivided into <code>(integer | real)</code>.<br />
+                String literal types may add (perhaps multiple) further attributes from <code> (heredoc | character | escapesequence | interpolated | multiline | raw)</code>.<br />
+        </p>
+        <p>
+                An escape sequence within an interpolated heredoc may thus be <code>literal string heredoc escapesequence</code>.
+        </p>
+        <h3>
+                List of known tags
+        </h3>
+        <table>
+                <tr><td><code>attribute</code></td><td>Markup attribute</td></tr>
+                <tr><td><code>basic</code></td><td>Embedded Basic</td></tr>
+                <tr><td><code>boolean</code></td><td>True or false literal</td></tr>
+                <tr><td><code>character</code></td><td>Single character literal as opposed to a string literal</td></tr>
+                <tr><td><code>client</code></td><td>Script executed on client</td></tr>
+                <tr><td><code>comment</code></td><td>The standard comment type in a language: may be stream or line</td></tr>
+                <tr><td><code>compound</code></td><td>Literal containing multiple subliterals such as a tuple or complex number</td></tr>
+                <tr><td><code>data</code></td><td>A value in a data file</td></tr>
+                <tr><td><code>date</code></td><td>Literal representing a data such as '19/November/1975'</td></tr>
+                <tr><td><code>default</code></td><td>Starting state commonly also used for white space</td></tr>
+                <tr><td><code>documentation</code></td><td>Comment that can be extracted into documentation</td></tr>
+                <tr><td><code>error</code></td><td>State indicating an invalid or erroneous element</td></tr>
+                <tr><td><code>escapesequence</code></td><td>Parts of a string that are not literal such as '\t' for tab in C</td></tr>
+                <tr><td><code>heredoc</code></td><td>Lengthy text literal marked by a word at both ends</td></tr>
+                <tr><td><code>identifier</code></td><td>Name that identifies an object or class of object</td></tr>
+                <tr><td><code>inactive</code></td><td>Code that is not currently interpreted</td></tr>
+                <tr><td><code>instruction</code></td><td>Mnemonic in assembler languages like 'addc'</td></tr>
+                <tr><td><code>integer</code></td><td>Numeric literal with no fraction or exponent like '738'</td></tr>
+                <tr><td><code>interpolated</code></td><td>String that can contain expressions</td></tr>
+                <tr><td><code>javascript</code></td><td>Embedded Javascript</td></tr>
+                <tr><td><code>key</code></td><td>Element which allows finding associated data</td></tr>
+                <tr><td><code>keyword</code></td><td>Reserved word with special meaning like 'while'</td></tr>
+                <tr><td><code>label</code></td><td>Destination for jumps in programming and assembler languages</td></tr>
+                <tr><td><code>line</code></td><td>Differentiates between stream comments and line comments in languages that have both</td></tr>
+                <tr><td><code>literal</code></td><td>Fixed value in source code</td></tr>
+                <tr><td><code>multiline</code></td><td>Differentiates between single line and multiline elements, commonly strings</td></tr>
+                <tr><td><code>nil</code></td><td>Literal for the null pointer such as nullptr in C++ or NULL in C</td></tr>
+                <tr><td><code>numeric</code></td><td>Literal number like '16'</td></tr>
+                <tr><td><code>operator</code></td><td>Punctuation character such as '&amp;' or '['</td></tr>
+                <tr><td><code>php</code></td><td>Embedded PHP</td></tr>
+                <tr><td><code>predefined</code></td><td>Style in the range 32.39 that is used for non-lexical purposes</td></tr>
+                <tr><td><code>preprocessor</code></td><td>Element that is recognized in an early stage of translation</td></tr>
+                <tr><td><code>python</code></td><td>Embedded Python</td></tr>
+                <tr><td><code>raw</code></td><td>String type that avoids interpretation: may be used for regular expressions in languages without a specific regex type</td></tr>
+                <tr><td><code>real</code></td><td>Numeric literal which may have a fraction or exponent like '3.84e-15'</td></tr>
+                <tr><td><code>regex</code></td><td>Regular expression literal like '^[a-z]+'</td></tr>
+                <tr><td><code>register</code></td><td>CPU register in assembler languages</td></tr>
+                <tr><td><code>server</code></td><td>Script executed on server</td></tr>
+                <tr><td><code>string</code></td><td>Sequence of characters</td></tr>
+                <tr><td><code>tag</code></td><td>Markup tag like '&lt;br /&gt;'</td></tr>
+                <tr><td><code>taskmarker</code></td><td>Word in comment that marks future work like 'FIXME'</td></tr>
+                <tr><td><code>time</code></td><td>Literal representing a time such as '9:34:31'</td></tr>
+                <tr><td><code>unused</code></td><td>Style that is not currently used</td></tr>
+                <tr><td><code>uuid</code></td><td>Universally unique identifier often used in interface definition files which may look like '{098f2470-bae0-11cd-b579-08002b30bfeb}'</td></tr>
+        </table>
+        <h2>
+                Extension
+        </h2>
+        <p>
+                Each element in this scheme may be extended in the future. This may be done by revising this document to provide a common approach to new features.
+                Individual lexers may also choose to expose unique language features through new tags.
+        </p>
+        <h2>
+                Translation
+        </h2>
+        <p>
+                Tags could be exposed directly in user interfaces or configuration languages.
+                However, an application may also translate these to match its naming schema.
+                Capitalization and punctuation could be different (like <code>Here-Doc</code> instead of <code>heredoc</code>),
+                terminology changed ("constant" instead of "literal"),
+                or human language changed from English to Chinese or Spanish.
+        </p>
+        <p>
+                Starting from a common set of tags makes these modifications tractable.
+        </p>
+        <h2>
+                Open issues
+        </h2>
+        <p>
+                The C++ lexer (for example) has inactive states and dynamically allocated substyles.
+                These should be exposed through the metadata mechanism but are not currently.
+        </p>
+</body>
+</html>

+ 43 - 35
maxguitextareascintilla.mod/scintilla/doc/index.html

@@ -9,7 +9,7 @@
     <meta name="keywords" content="Scintilla, SciTE, Editing Component, Text Editor" />
     <meta name="Description"
     content="www.scintilla.org is the home of the Scintilla editing component and SciTE text editor application." />
-    <meta name="Date.Modified" content="20160904" />
+    <meta name="Date.Modified" content="20180212" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <style type="text/css">
         #versionlist {
@@ -38,7 +38,7 @@
     <script type="text/javascript">
    	function IsRemote() {
 		var loc = '' + window.location;
-		return loc.indexOf('http:') != -1;
+		return (loc.indexOf('http:')) != -1 || (loc.indexOf('https:') != -1);
    	}
     </script>
      <title>
@@ -56,8 +56,8 @@
           GTK+, and OS X</font>
         </td>
         <td width="40%" align="right">
-          <font color="#FFCC99" size="3"> Release version 3.6.7<br />
-           Site last modified September 4 2016</font>
+          <font color="#FFCC99" size="3"> Release version 3.10.1<br />
+           Site last modified February 12 2018</font>
         </td>
         <td width="20%">
           &nbsp;
@@ -66,27 +66,30 @@
     </table>
     <table bgcolor="#000000" width="100%" cellspacing="0" cellpadding="0" border="0">
       <tr>
-        <td width="100%" style="background: url(http://www.scintilla.org/SciBreak.jpg) no-repeat;height:150px;">
+        <td width="100%" style="background: url(https://www.scintilla.org/SciBreak.jpg) no-repeat;height:150px;">
           &nbsp;
         </td>
       </tr>
     </table>
     <ul id="versionlist">
-      <li>Version 3.6.7 changes SC_CHARSET_DEFAULT on Windows to mean European code page 1252 unless a code page is set.
-      <li>Version 3.6.6 enables C++11 &lt;regex&gt; by default.
-      <li>Version 3.6.5 adds a JSON lexer and removes the font cache on GTK+.
-      Type definitions Sci_Position, Sci_PositionU, and Sci_PositionCR allow client
-      code to prepare for a future change allowing larger than 2 GB documents.</li>
+      <li>Version 3.7.5 adds a Reverse Selected Lines command.
+      MSVC 2013 is no longer supported.</li>
+      <li>Version 3.7.4 restores performance on GTK+.
+      C++11 now required to build and Windows NT 4 is no longer supported.</li>
+      <li>Version 3.7.3 fixes problems with GTK+ on Wayland.</li>
+      <li>Version 3.7.2 fixes some crashes on GTK+ and Cocoa, commonly at destruction.</li>
+      <li>Version 3.7.1 supports accessibility on GTK+ and Cocoa.
+      The Scintilla namespace is not exposed in Scintilla.h and some deprecated APIs were removed.</li>
     </ul>
     <ul id="menu">
-      <li id="remote1"><a href="http://www.scintilla.org/SciTEImage.html">Screenshot</a></li>
-      <li id="remote2"><a href="http://www.scintilla.org/ScintillaDownload.html">Download</a></li>
-      <li><a href="http://www.scintilla.org/ScintillaDoc.html">Documentation</a></li>
-      <li><a href="http://www.scintilla.org/ScintillaToDo.html">Bugs</a></li>
-      <li id="remote3"><a href="http://www.scintilla.org/SciTE.html">SciTE</a></li>
-      <li><a href="http://www.scintilla.org/ScintillaHistory.html">History</a></li>
-      <li><a href="http://www.scintilla.org/ScintillaRelated.html">Related</a></li>
-      <li id="remote4"><a href="http://www.scintilla.org/Privacy.html">Privacy</a></li>
+      <li id="remote1"><a href="https://www.scintilla.org/SciTEImage.html">Screenshot</a></li>
+      <li id="remote2"><a href="https://www.scintilla.org/ScintillaDownload.html">Download</a></li>
+      <li><a href="https://www.scintilla.org/ScintillaDoc.html">Documentation</a></li>
+      <li><a href="https://www.scintilla.org/ScintillaToDo.html">Bugs</a></li>
+      <li id="remote3"><a href="https://www.scintilla.org/SciTE.html">SciTE</a></li>
+      <li><a href="https://www.scintilla.org/ScintillaHistory.html">History</a></li>
+      <li><a href="https://www.scintilla.org/ScintillaRelated.html">Related</a></li>
+      <li id="remote4"><a href="https://www.scintilla.org/Privacy.html">Privacy</a></li>
     </ul>
 <script type="text/javascript" language="JavaScript"><!--
 if (!IsRemote()) { //if NOT remote...
@@ -97,8 +100,8 @@ if (!IsRemote()) { //if NOT remote...
 }
 //--></script>
     <p>
-       <a href="http://www.scintilla.org/ScintillaDoc.html">Scintilla</a> is a free source code editing component.
-       It comes with complete source code and a <a href="http://www.scintilla.org/License.txt">license</a> that
+       <a href="https://www.scintilla.org/ScintillaDoc.html">Scintilla</a> is a free source code editing component.
+       It comes with complete source code and a <a href="https://www.scintilla.org/License.txt">license</a> that
        permits use in any free project or commercial product.
     </p>
     <p>
@@ -111,7 +114,8 @@ if (!IsRemote()) { //if NOT remote...
        colours and multiple fonts.
     </p>
     <p>
-       <a href="http://www.scintilla.org/SciTE.html">SciTE</a> is a SCIntilla based Text Editor. Originally built to
+    <p>
+       <a href="https://www.scintilla.org/SciTE.html">SciTE</a> is a SCIntilla based Text Editor. Originally built to
       demonstrate Scintilla, it has grown to be a generally useful editor with facilities for
       building and running programs. It is best used for jobs with simple configurations - I use it
       for building test and demonstration programs as well as SciTE and Scintilla, themselves.
@@ -126,28 +130,32 @@ if (!IsRemote()) { //if NOT remote...
     </p>
     <p>
        Scintilla and SciTE are currently available for Intel Win32, OS X, and Linux compatible operating
-      systems with GTK+. They have been run on Windows XP, Windows 7, OS X 10.6+, and on Ubuntu 10.10
-      with GTK+ 2.20. <a href="http://www.scintilla.org/SciTEImage.html">Here is a screenshot of
+      systems with GTK+. They have been run on Windows XP, Windows 7, OS X 10.7+, and on Ubuntu 14.04
+      with GTK+ 2.24. <a href="https://www.scintilla.org/SciTEImage.html">Here is a screenshot of
       SciTE.</a><br />
     </p>
     <p>
-       You can <a href="http://www.scintilla.org/ScintillaDownload.html">download Scintilla.</a>
+       You can <a href="https://www.scintilla.org/ScintillaDownload.html">download Scintilla.</a>
     </p>
     <p>
        The source code can be downloaded via Mercurial at the Source Forge
-	<a href="http://sourceforge.net/projects/scintilla/">Scintilla project page</a>.
+	<a href="https://sourceforge.net/projects/scintilla/">Scintilla project page</a>.
+    </p>
+    <p>
+       <a href="https://www.scintilla.org/ScintillaRelated.html">Related sites.</a>
     </p>
     <p>
-       <a href="http://www.scintilla.org/ScintillaRelated.html">Related sites.</a>
+       <a href="https://www.scintilla.org/ScintillaToDo.html">Bugs and To Do list.</a>
     </p>
     <p>
-       <a href="http://www.scintilla.org/ScintillaToDo.html">Bugs and To Do list.</a>
+       <a href="https://www.scintilla.org/ScintillaHistory.html">History and contribution credits.</a>
     </p>
     <p>
-       <a href="http://www.scintilla.org/ScintillaHistory.html">History and contribution credits.</a>
+       <a href="https://www.scintilla.org/Icons.html">Icons that can be used with Scintilla.</a>
     </p>
     <p>
-       <a href="http://www.scintilla.org/Icons.html">Icons that can be used with Scintilla.</a>
+       The <a href="https://scintilla.sourceforge.io/LongTermDownload.html">LongTerm3</a>
+       branch of Scintilla avoids using features from C++14 or later in order to support older systems.
     </p>
     <p>
       Questions and comments about Scintilla should be directed to the
@@ -163,21 +171,21 @@ if (!IsRemote()) { //if NOT remote...
       may receive no response.
       <br />
     </p>
-There is a <a href="http://sourceforge.net/projects/scintilla/">Scintilla project page</a>
+There is a <a href="https://sourceforge.net/projects/scintilla/">Scintilla project page</a>
 hosted on
 <script type="text/javascript" language="JavaScript">
 <!--
 if (IsRemote()) {
-    document.write('<a href="http://sourceforge.net/projects/scintilla/">');
-    document.write('<img src="http://sflogo.sourceforge.net/sflogo.php?group_id=2439&amp;type=8" width="80" height="15" alt="Get Scintilla at SourceForge.net. Fast, secure and Free Open Source software downloads" /></a> ');
+    document.write('<a href="https://sourceforge.net/projects/scintilla/">');
+    document.write('<img src="https://sflogo.sourceforge.net/sflogo.php?group_id=2439&amp;type=8" width="80" height="15" alt="Get Scintilla at SourceForge.net. Fast, secure and Free Open Source software downloads" /></a> ');
 } else {
-    document.write('<a href="http://sourceforge.net/projects/scintilla/">SourceForge<\/a>');
+    document.write('<a href="https://sourceforge.net/projects/scintilla/">SourceForge<\/a>');
 }
 //-->
 </script>
 <noscript>
-<a href="http://sourceforge.net/projects/scintilla/">
-<img src="http://sflogo.sourceforge.net/sflogo.php?group_id=2439&amp;type=8" width="80" height="15" alt="Get Scintilla at SourceForge.net. Fast, secure and Free Open Source software downloads" /></a>
+<a href="https://sourceforge.net/projects/scintilla/">
+<img src="https://sflogo.sourceforge.net/sflogo.php?group_id=2439&amp;type=8" width="80" height="15" alt="Get Scintilla at SourceForge.net. Fast, secure and Free Open Source software downloads" /></a>
 </noscript>
   </body>
 </html>

+ 0 - 4
maxguitextareascintilla.mod/scintilla/gtk/Converter.h

@@ -6,9 +6,7 @@
 #ifndef CONVERTER_H
 #define CONVERTER_H
 
-#ifdef SCI_NAMESPACE
 namespace Scintilla {
-#endif
 
 const GIConv iconvhBad = (GIConv)(-1);
 const gsize sizeFailure = static_cast<gsize>(-1);
@@ -67,8 +65,6 @@ public:
 	}
 };
 
-#ifdef SCI_NAMESPACE
 }
-#endif
 
 #endif

+ 221 - 302
maxguitextareascintilla.mod/scintilla/gtk/PlatGTK.cxx

@@ -3,15 +3,16 @@
 // Copyright 1998-2004 by Neil Hodgson <[email protected]>
 // The License.txt file describes the conditions under which this software may be distributed.
 
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <math.h>
+#include <cstddef>
+#include <cstdlib>
+#include <cstring>
+#include <cstdio>
+#include <cmath>
 
 #include <string>
 #include <vector>
 #include <map>
+#include <memory>
 #include <sstream>
 
 #include <glib.h>
@@ -28,11 +29,6 @@
 #include "XPM.h"
 #include "UniConversion.h"
 
-#if defined(__clang__)
-// Clang 3.0 incorrectly displays  sentinel warnings. Fixed by clang 3.1.
-#pragma GCC diagnostic ignored "-Wsentinel"
-#endif
-
 #include "Converter.h"
 
 static const double kPi = 3.14159265358979323846;
@@ -49,21 +45,7 @@ static double doubleFromPangoUnits(int pu) {
 }
 
 static cairo_surface_t *CreateSimilarSurface(GdkWindow *window, cairo_content_t content, int width, int height) {
-#if GTK_CHECK_VERSION(2,22,0)
 	return gdk_window_create_similar_surface(window, content, width, height);
-#else
-	cairo_surface_t *window_surface, *surface;
-
-	g_return_val_if_fail(GDK_IS_WINDOW(window), NULL);
-
-	window_surface = GDK_DRAWABLE_GET_CLASS(window)->ref_cairo_surface(window);
-
-	surface = cairo_surface_create_similar(window_surface, content, width, height);
-
-	cairo_surface_destroy(window_surface);
-
-	return surface;
-#endif
 }
 
 static GdkWindow *WindowFromWidget(GtkWidget *w) {
@@ -75,9 +57,7 @@ static GdkWindow *WindowFromWidget(GtkWidget *w) {
 #pragma warning(disable: 4505)
 #endif
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 enum encodingType { singleByte, UTF8, dbcs};
 
@@ -125,13 +105,7 @@ static GtkWidget *PWidget(WindowID wid) {
 	return static_cast<GtkWidget *>(wid);
 }
 
-Point Point::FromLong(long lpoint) {
-	return Point(
-	           Platform::LowShortFromLong(lpoint),
-	           Platform::HighShortFromLong(lpoint));
-}
-
-Font::Font() : fid(0) {}
+Font::Font() noexcept : fid(0) {}
 
 Font::~Font() {}
 
@@ -147,9 +121,7 @@ void Font::Release() {
 }
 
 // Required on OS X
-#ifdef SCI_NAMESPACE
 namespace Scintilla {
-#endif
 
 // SurfaceID is a cairo_t*
 class SurfaceImpl : public Surface {
@@ -167,53 +139,51 @@ class SurfaceImpl : public Surface {
 	void SetConverter(int characterSet_);
 public:
 	SurfaceImpl();
-	virtual ~SurfaceImpl();
-
-	void Init(WindowID wid);
-	void Init(SurfaceID sid, WindowID wid);
-	void InitPixMap(int width, int height, Surface *surface_, WindowID wid);
-
-	void Release();
-	bool Initialised();
-	void PenColour(ColourDesired fore);
-	int LogPixelsY();
-	int DeviceHeightFont(int points);
-	void MoveTo(int x_, int y_);
-	void LineTo(int x_, int y_);
-	void Polygon(Point *pts, int npts, ColourDesired fore, ColourDesired back);
-	void RectangleDraw(PRectangle rc, ColourDesired fore, ColourDesired back);
-	void FillRectangle(PRectangle rc, ColourDesired back);
-	void FillRectangle(PRectangle rc, Surface &surfacePattern);
-	void RoundedRectangle(PRectangle rc, ColourDesired fore, ColourDesired back);
+	~SurfaceImpl() override;
+
+	void Init(WindowID wid) override;
+	void Init(SurfaceID sid, WindowID wid) override;
+	void InitPixMap(int width, int height, Surface *surface_, WindowID wid) override;
+
+	void Clear();
+	void Release() override;
+	bool Initialised() override;
+	void PenColour(ColourDesired fore) override;
+	int LogPixelsY() override;
+	int DeviceHeightFont(int points) override;
+	void MoveTo(int x_, int y_) override;
+	void LineTo(int x_, int y_) override;
+	void Polygon(Point *pts, size_t npts, ColourDesired fore, ColourDesired back) override;
+	void RectangleDraw(PRectangle rc, ColourDesired fore, ColourDesired back) override;
+	void FillRectangle(PRectangle rc, ColourDesired back) override;
+	void FillRectangle(PRectangle rc, Surface &surfacePattern) override;
+	void RoundedRectangle(PRectangle rc, ColourDesired fore, ColourDesired back) override;
 	void AlphaRectangle(PRectangle rc, int cornerSize, ColourDesired fill, int alphaFill,
-		ColourDesired outline, int alphaOutline, int flags);
-	void DrawRGBAImage(PRectangle rc, int width, int height, const unsigned char *pixelsImage);
-	void Ellipse(PRectangle rc, ColourDesired fore, ColourDesired back);
-	void Copy(PRectangle rc, Point from, Surface &surfaceSource);
+		ColourDesired outline, int alphaOutline, int flags) override;
+	void GradientRectangle(PRectangle rc, const std::vector<ColourStop> &stops, GradientOptions options) override;
+	void DrawRGBAImage(PRectangle rc, int width, int height, const unsigned char *pixelsImage) override;
+	void Ellipse(PRectangle rc, ColourDesired fore, ColourDesired back) override;
+	void Copy(PRectangle rc, Point from, Surface &surfaceSource) override;
 
 	void DrawTextBase(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore);
-	void DrawTextNoClip(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore, ColourDesired back);
-	void DrawTextClipped(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore, ColourDesired back);
-	void DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore);
-	void MeasureWidths(Font &font_, const char *s, int len, XYPOSITION *positions);
-	XYPOSITION WidthText(Font &font_, const char *s, int len);
-	XYPOSITION WidthChar(Font &font_, char ch);
-	XYPOSITION Ascent(Font &font_);
-	XYPOSITION Descent(Font &font_);
-	XYPOSITION InternalLeading(Font &font_);
-	XYPOSITION ExternalLeading(Font &font_);
-	XYPOSITION Height(Font &font_);
-	XYPOSITION AverageCharWidth(Font &font_);
-
-	void SetClip(PRectangle rc);
-	void FlushCachedState();
-
-	void SetUnicodeMode(bool unicodeMode_);
-	void SetDBCSMode(int codePage);
+	void DrawTextNoClip(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore, ColourDesired back) override;
+	void DrawTextClipped(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore, ColourDesired back) override;
+	void DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore) override;
+	void MeasureWidths(Font &font_, const char *s, int len, XYPOSITION *positions) override;
+	XYPOSITION WidthText(Font &font_, const char *s, int len) override;
+	XYPOSITION Ascent(Font &font_) override;
+	XYPOSITION Descent(Font &font_) override;
+	XYPOSITION InternalLeading(Font &font_) override;
+	XYPOSITION Height(Font &font_) override;
+	XYPOSITION AverageCharWidth(Font &font_) override;
+
+	void SetClip(PRectangle rc) override;
+	void FlushCachedState() override;
+
+	void SetUnicodeMode(bool unicodeMode_) override;
+	void SetDBCSMode(int codePage) override;
 };
-#ifdef SCI_NAMESPACE
 }
-#endif
 
 const char *CharacterSetID(int characterSet) {
 	switch (characterSet) {
@@ -281,10 +251,10 @@ x(0), y(0), inited(false), createdGC(false)
 }
 
 SurfaceImpl::~SurfaceImpl() {
-	Release();
+	Clear();
 }
 
-void SurfaceImpl::Release() {
+void SurfaceImpl::Clear() {
 	et = singleByte;
 	if (createdGC) {
 		createdGC = false;
@@ -308,8 +278,11 @@ void SurfaceImpl::Release() {
 	createdGC = false;
 }
 
+void SurfaceImpl::Release() {
+	Clear();
+}
+
 bool SurfaceImpl::Initialised() {
-#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 8, 0)
 	if (inited && context) {
 		if (cairo_status(context) == CAIRO_STATUS_SUCCESS) {
 			// Even when status is success, the target surface may have been
@@ -326,7 +299,6 @@ bool SurfaceImpl::Initialised() {
 		}
 		return cairo_status(context) == CAIRO_STATUS_SUCCESS;
 	}
-#endif
 	return inited;
 }
 
@@ -389,7 +361,7 @@ void SurfaceImpl::InitPixMap(int width, int height, Surface *surface_, WindowID
 
 void SurfaceImpl::PenColour(ColourDesired fore) {
 	if (context) {
-		ColourDesired cdFore(fore.AsLong());
+		ColourDesired cdFore(fore.AsInteger());
 		cairo_set_source_rgb(context,
 			cdFore.GetRed() / 255.0,
 			cdFore.GetGreen() / 255.0,
@@ -431,10 +403,10 @@ void SurfaceImpl::LineTo(int x_, int y_) {
 		if ((xDiff == 0) || (yDiff == 0)) {
 			// Horizontal or vertical lines can be more precisely drawn as a filled rectangle
 			int xEnd = x_ - xDelta;
-			int left = Platform::Minimum(x, xEnd);
+			int left = std::min(x, xEnd);
 			int width = abs(x - xEnd) + 1;
 			int yEnd = y_ - yDelta;
-			int top = Platform::Minimum(y, yEnd);
+			int top = std::min(y, yEnd);
 			int height = abs(y - yEnd) + 1;
 			cairo_rectangle(context, left, top, width, height);
 			cairo_fill(context);
@@ -453,12 +425,12 @@ void SurfaceImpl::LineTo(int x_, int y_) {
 	y = y_;
 }
 
-void SurfaceImpl::Polygon(Point *pts, int npts, ColourDesired fore,
+void SurfaceImpl::Polygon(Point *pts, size_t npts, ColourDesired fore,
                           ColourDesired back) {
 	PLATFORM_ASSERT(context);
 	PenColour(back);
 	cairo_move_to(context, pts[0].x + 0.5, pts[0].y + 0.5);
-	for (int i = 1; i < npts; i++) {
+	for (size_t i = 1; i < npts; i++) {
 		cairo_line_to(context, pts[i].x + 0.5, pts[i].y + 0.5);
 	}
 	cairo_close_path(context);
@@ -536,12 +508,7 @@ void SurfaceImpl::RoundedRectangle(PRectangle rc, ColourDesired fore, ColourDesi
 static void PathRoundRectangle(cairo_t *context, double left, double top, double width, double height, int radius) {
 	double degrees = kPi / 180.0;
 
-#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 2, 0)
 	cairo_new_sub_path(context);
-#else
-	// First arc is in the top-right corner and starts from a point on the top line
-	cairo_move_to(context, left + width - radius, top);
-#endif
 	cairo_arc(context, left + width - radius, top + radius, radius, -90 * degrees, 0 * degrees);
 	cairo_arc(context, left + width - radius, top + height - radius, radius, 0 * degrees, 90 * degrees);
 	cairo_arc(context, left + radius, top + height - radius, radius, 90 * degrees, 180 * degrees);
@@ -550,9 +517,9 @@ static void PathRoundRectangle(cairo_t *context, double left, double top, double
 }
 
 void SurfaceImpl::AlphaRectangle(PRectangle rc, int cornerSize, ColourDesired fill, int alphaFill,
-		ColourDesired outline, int alphaOutline, int flags) {
+		ColourDesired outline, int alphaOutline, int /*flags*/) {
 	if (context && rc.Width() > 0) {
-		ColourDesired cdFill(fill.AsLong());
+		ColourDesired cdFill(fill.AsInteger());
 		cairo_set_source_rgba(context,
 			cdFill.GetRed() / 255.0,
 			cdFill.GetGreen() / 255.0,
@@ -564,7 +531,7 @@ void SurfaceImpl::AlphaRectangle(PRectangle rc, int cornerSize, ColourDesired fi
 			cairo_rectangle(context, rc.left + 1.0, rc.top + 1.0, rc.right - rc.left - 2.0, rc.bottom - rc.top - 2.0);
 		cairo_fill(context);
 
-		ColourDesired cdOutline(outline.AsLong());
+		ColourDesired cdOutline(outline.AsInteger());
 		cairo_set_source_rgba(context,
 			cdOutline.GetRed() / 255.0,
 			cdOutline.GetGreen() / 255.0,
@@ -578,6 +545,32 @@ void SurfaceImpl::AlphaRectangle(PRectangle rc, int cornerSize, ColourDesired fi
 	}
 }
 
+void SurfaceImpl::GradientRectangle(PRectangle rc, const std::vector<ColourStop> &stops, GradientOptions options) {
+	if (context) {
+		cairo_pattern_t *pattern;
+		switch (options) {
+		case GradientOptions::leftToRight:
+			pattern = cairo_pattern_create_linear(rc.left, rc.top, rc.right, rc.top);
+			break;
+		case GradientOptions::topToBottom:
+		default:
+			pattern = cairo_pattern_create_linear(rc.left, rc.top, rc.left, rc.bottom);
+			break;
+		}
+		for (const ColourStop &stop : stops) {
+			cairo_pattern_add_color_stop_rgba(pattern, stop.position,
+				stop.colour.GetRedComponent(),
+				stop.colour.GetGreenComponent(),
+				stop.colour.GetBlueComponent(),
+				stop.colour.GetAlphaComponent());
+		}
+		cairo_rectangle(context, rc.left, rc.top, rc.Width(), rc.Height());
+		cairo_set_source(context, pattern);
+		cairo_fill(context);
+		cairo_pattern_destroy(pattern);
+	}
+}
+
 void SurfaceImpl::DrawRGBAImage(PRectangle rc, int width, int height, const unsigned char *pixelsImage) {
 	PLATFORM_ASSERT(context);
 	if (rc.Width() > width)
@@ -587,11 +580,7 @@ void SurfaceImpl::DrawRGBAImage(PRectangle rc, int width, int height, const unsi
 		rc.top += (rc.Height() - height) / 2;
 	rc.bottom = rc.top + height;
 
-#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1,6,0)
 	int stride = cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, width);
-#else
-	int stride = width * 4;
-#endif
 	int ucs = stride * height;
 	std::vector<unsigned char> image(ucs);
 	for (int iy=0; iy<height; iy++) {
@@ -617,7 +606,7 @@ void SurfaceImpl::Ellipse(PRectangle rc, ColourDesired fore, ColourDesired back)
 	PLATFORM_ASSERT(context);
 	PenColour(back);
 	cairo_arc(context, (rc.left + rc.right) / 2, (rc.top + rc.bottom) / 2,
-		Platform::Minimum(rc.Width(), rc.Height()) / 2, 0, 2*kPi);
+		std::min(rc.Width(), rc.Height()) / 2, 0, 2*kPi);
 	cairo_fill_preserve(context);
 	PenColour(fore);
 	cairo_stroke(context);
@@ -705,11 +694,7 @@ void SurfaceImpl::DrawTextBase(PRectangle rc, Font &font_, XYPOSITION ybase, con
 			}
 			pango_layout_set_font_description(layout, PFont(font_)->pfd);
 			pango_cairo_update_layout(context, layout);
-#ifdef PANGO_VERSION
 			PangoLayoutLine *pll = pango_layout_get_line_readonly(layout,0);
-#else
-			PangoLayoutLine *pll = pango_layout_get_line(layout,0);
-#endif
 			cairo_move_to(context, xText, ybase);
 			pango_cairo_show_layout_line(context, pll);
 		}
@@ -822,7 +807,7 @@ void SurfaceImpl::MeasureWidths(Font &font_, const char *s, int len, XYPOSITION
 									positions[i++] = iti.position - (places - place) * iti.distance / places;
 									positionsCalculated++;
 								}
-								clusterStart += UTF8CharLength(static_cast<unsigned char>(utfForm.c_str()[clusterStart]));
+								clusterStart += UTF8BytesOfLead[static_cast<unsigned char>(utfForm.c_str()[clusterStart])];
 								place++;
 							}
 						}
@@ -896,11 +881,7 @@ XYPOSITION SurfaceImpl::WidthText(Font &font_, const char *s, int len) {
 				}
 				pango_layout_set_text(layout, utfForm.c_str(), utfForm.length());
 			}
-#ifdef PANGO_VERSION
 			PangoLayoutLine *pangoLine = pango_layout_get_line_readonly(layout,0);
-#else
-			PangoLayoutLine *pangoLine = pango_layout_get_line(layout,0);
-#endif
 			pango_layout_line_get_extents(pangoLine, NULL, &pos);
 			return doubleFromPangoUnits(pos.width);
 		}
@@ -910,17 +891,6 @@ XYPOSITION SurfaceImpl::WidthText(Font &font_, const char *s, int len) {
 	}
 }
 
-XYPOSITION SurfaceImpl::WidthChar(Font &font_, char ch) {
-	if (font_.GetID()) {
-		if (PFont(font_)->pfd) {
-			return WidthText(font_, &ch, 1);
-		}
-		return 1;
-	} else {
-		return 1;
-	}
-}
-
 // Ascent and descent determined by Pango font metrics.
 
 XYPOSITION SurfaceImpl::Ascent(Font &font_) {
@@ -957,16 +927,12 @@ XYPOSITION SurfaceImpl::InternalLeading(Font &) {
 	return 0;
 }
 
-XYPOSITION SurfaceImpl::ExternalLeading(Font &) {
-	return 0;
-}
-
 XYPOSITION SurfaceImpl::Height(Font &font_) {
 	return Ascent(font_) + Descent(font_);
 }
 
 XYPOSITION SurfaceImpl::AverageCharWidth(Font &font_) {
-	return WidthChar(font_, 'n');
+	return WidthText(font_, "n", 1);
 }
 
 void SurfaceImpl::SetClip(PRectangle rc) {
@@ -1010,11 +976,7 @@ void Window::Destroy() {
 	}
 }
 
-bool Window::HasFocus() {
-	return gtk_widget_has_focus(GTK_WIDGET(wid));
-}
-
-PRectangle Window::GetPosition() {
+PRectangle Window::GetPosition() const {
 	// Before any size allocated pretend its 1000 wide so not scrolled
 	PRectangle rc(0, 0, 1000, 1000);
 	if (wid) {
@@ -1039,35 +1001,53 @@ void Window::SetPosition(PRectangle rc) {
 	gtk_widget_size_allocate(PWidget(wid), &alloc);
 }
 
-void Window::SetPositionRelative(PRectangle rc, Window relativeTo) {
+namespace {
+
+GdkRectangle MonitorRectangleForWidget(GtkWidget *wid) {
+	GdkWindow *wnd = WindowFromWidget(wid);
+	GdkRectangle rcScreen = GdkRectangle();
+#if GTK_CHECK_VERSION(3,22,0)
+	GdkDisplay *pdisplay = gtk_widget_get_display(wid);
+	GdkMonitor *monitor = gdk_display_get_monitor_at_window(pdisplay, wnd);
+	gdk_monitor_get_geometry(monitor, &rcScreen);
+#else
+	GdkScreen* screen = gtk_widget_get_screen(wid);
+	gint monitor_num = gdk_screen_get_monitor_at_window(screen, wnd);
+	gdk_screen_get_monitor_geometry(screen, monitor_num, &rcScreen);
+#endif
+	return rcScreen;
+}
+
+}
+
+void Window::SetPositionRelative(PRectangle rc, const Window *relativeTo) {
 	int ox = 0;
 	int oy = 0;
-	gdk_window_get_origin(WindowFromWidget(PWidget(relativeTo.wid)), &ox, &oy);
+	GdkWindow *wndRelativeTo = WindowFromWidget(PWidget(relativeTo->wid));
+	gdk_window_get_origin(wndRelativeTo, &ox, &oy);
 	ox += rc.left;
-	if (ox < 0)
-		ox = 0;
 	oy += rc.top;
-	if (oy < 0)
-		oy = 0;
+
+	GdkRectangle rcMonitor = MonitorRectangleForWidget(PWidget(relativeTo->wid));
 
 	/* do some corrections to fit into screen */
 	int sizex = rc.right - rc.left;
 	int sizey = rc.bottom - rc.top;
-	int screenWidth = gdk_screen_width();
-	int screenHeight = gdk_screen_height();
-	if (sizex > screenWidth)
-		ox = 0; /* the best we can do */
-	else if (ox + sizex > screenWidth)
-		ox = screenWidth - sizex;
-	if (oy + sizey > screenHeight)
-		oy = screenHeight - sizey;
+	if (sizex > rcMonitor.width || ox < rcMonitor.x)
+		ox = rcMonitor.x; /* the best we can do */
+	else if (ox + sizex > rcMonitor.x + rcMonitor.width)
+		ox = rcMonitor.x + rcMonitor.width - sizex;
+	if (sizey > rcMonitor.height || oy < rcMonitor.y)
+		oy = rcMonitor.y;
+	else if (oy + sizey > rcMonitor.y + rcMonitor.height)
+		oy = rcMonitor.y + rcMonitor.height - sizey;
 
 	gtk_window_move(GTK_WINDOW(PWidget(wid)), ox, oy);
 
 	gtk_window_resize(GTK_WINDOW(wid), sizex, sizey);
 }
 
-PRectangle Window::GetClientPosition() {
+PRectangle Window::GetClientPosition() const {
 	// On GTK+, the client position is the window position
 	return GetPosition();
 }
@@ -1139,10 +1119,6 @@ void Window::SetCursor(Cursor curs) {
 #endif
 }
 
-void Window::SetTitle(const char *s) {
-	gtk_window_set_title(GTK_WINDOW(wid), s);
-}
-
 /* Returns rectangle of monitor pt is on, both rect and pt are in Window's
    gdk window coordinates */
 PRectangle Window::GetMonitorRect(Point pt) {
@@ -1150,13 +1126,19 @@ PRectangle Window::GetMonitorRect(Point pt) {
 
 	gdk_window_get_origin(WindowFromWidget(PWidget(wid)), &x_offset, &y_offset);
 
-	GdkScreen* screen;
-	gint monitor_num;
 	GdkRectangle rect;
 
-	screen = gtk_widget_get_screen(PWidget(wid));
-	monitor_num = gdk_screen_get_monitor_at_point(screen, pt.x + x_offset, pt.y + y_offset);
+#if GTK_CHECK_VERSION(3,22,0)
+	GdkDisplay *pdisplay = gtk_widget_get_display(PWidget(wid));
+	GdkMonitor *monitor = gdk_display_get_monitor_at_point(pdisplay,
+		pt.x + x_offset, pt.y + y_offset);
+	gdk_monitor_get_geometry(monitor, &rect);
+#else
+	GdkScreen* screen = gtk_widget_get_screen(PWidget(wid));
+	gint monitor_num = gdk_screen_get_monitor_at_point(screen,
+		pt.x + x_offset, pt.y + y_offset);
 	gdk_screen_get_monitor_geometry(screen, monitor_num, &rect);
+#endif
 	rect.x -= x_offset;
 	rect.y -= y_offset;
 	return PRectangle(rect.x, rect.y, rect.x + rect.width, rect.y + rect.height);
@@ -1176,7 +1158,7 @@ static void list_image_free(gpointer, gpointer value, gpointer) {
 	g_free(list_image);
 }
 
-ListBox::ListBox() {
+ListBox::ListBox() noexcept {
 }
 
 ListBox::~ListBox() {
@@ -1204,8 +1186,7 @@ class ListBoxX : public ListBox {
 	GtkCssProvider *cssProvider;
 #endif
 public:
-	CallBackAction doubleClickAction;
-	void *doubleClickActionData;
+	IListBoxDelegate *delegate;
 
 	ListBoxX() : widCached(0), frame(0), list(0), scroller(0), pixhash(NULL), pixbuf_renderer(0),
 		renderer(0),
@@ -1214,9 +1195,9 @@ public:
 #if GTK_CHECK_VERSION(3,0,0)
 		cssProvider(NULL),
 #endif
-		doubleClickAction(NULL), doubleClickActionData(NULL) {
+		delegate(nullptr) {
 	}
-	virtual ~ListBoxX() {
+	~ListBoxX() override {
 		if (pixhash) {
 			g_hash_table_foreach((GHashTable *) pixhash, list_image_free, NULL);
 			g_hash_table_destroy((GHashTable *) pixhash);
@@ -1232,30 +1213,27 @@ public:
 		}
 #endif
 	}
-	virtual void SetFont(Font &font);
-	virtual void Create(Window &parent, int ctrlID, Point location_, int lineHeight_, bool unicodeMode_, int technology_);
-	virtual void SetAverageCharWidth(int width);
-	virtual void SetVisibleRows(int rows);
-	virtual int GetVisibleRows() const;
+	void SetFont(Font &font) override;
+	void Create(Window &parent, int ctrlID, Point location_, int lineHeight_, bool unicodeMode_, int technology_) override;
+	void SetAverageCharWidth(int width) override;
+	void SetVisibleRows(int rows) override;
+	int GetVisibleRows() const override;
 	int GetRowHeight();
-	virtual PRectangle GetDesiredRect();
-	virtual int CaretFromEdge();
-	virtual void Clear();
-	virtual void Append(char *s, int type = -1);
-	virtual int Length();
-	virtual void Select(int n);
-	virtual int GetSelection();
-	virtual int Find(const char *prefix);
-	virtual void GetValue(int n, char *value, int len);
+	PRectangle GetDesiredRect() override;
+	int CaretFromEdge() override;
+	void Clear() override;
+	void Append(char *s, int type = -1) override;
+	int Length() override;
+	void Select(int n) override;
+	int GetSelection() override;
+	int Find(const char *prefix) override;
+	void GetValue(int n, char *value, int len) override;
 	void RegisterRGBA(int type, RGBAImage *image);
-	virtual void RegisterImage(int type, const char *xpm_data);
-	virtual void RegisterRGBAImage(int type, int width, int height, const unsigned char *pixelsImage);
-	virtual void ClearRegisteredImages();
-	virtual void SetDoubleClickAction(CallBackAction action, void *data) {
-		doubleClickAction = action;
-		doubleClickActionData = data;
-	}
-	virtual void SetList(const char *listText, char separator, char typesep);
+	void RegisterImage(int type, const char *xpm_data) override;
+	void RegisterRGBAImage(int type, int width, int height, const unsigned char *pixelsImage) override;
+	void ClearRegisteredImages() override;
+	void SetDelegate(IListBoxDelegate *lbDelegate) override;
+	void SetList(const char *listText, char separator, char typesep) override;
 };
 
 ListBox *ListBox::Allocate() {
@@ -1282,7 +1260,7 @@ static int treeViewGetRowHeight(GtkTreeView *view) {
 		"vertical-separator", &vertical_separator,
 		"expander-size", &expander_size, NULL);
 	row_height += vertical_separator;
-	row_height = Platform::Maximum(row_height, expander_size);
+	row_height = std::max(row_height, expander_size);
 	return row_height;
 #endif
 }
@@ -1345,8 +1323,9 @@ static void small_scroller_init(SmallScroller *){}
 static gboolean ButtonPress(GtkWidget *, GdkEventButton* ev, gpointer p) {
 	try {
 		ListBoxX* lb = static_cast<ListBoxX*>(p);
-		if (ev->type == GDK_2BUTTON_PRESS && lb->doubleClickAction != NULL) {
-			lb->doubleClickAction(lb->doubleClickActionData);
+		if (ev->type == GDK_2BUTTON_PRESS && lb->delegate) {
+			ListBoxEvent event(ListBoxEvent::EventType::doubleClick);
+			lb->delegate->ListNotify(&event);
 			return TRUE;
 		}
 
@@ -1356,6 +1335,20 @@ static gboolean ButtonPress(GtkWidget *, GdkEventButton* ev, gpointer p) {
 	return FALSE;
 }
 
+static gboolean ButtonRelease(GtkWidget *, GdkEventButton* ev, gpointer p) {
+	try {
+		ListBoxX* lb = static_cast<ListBoxX*>(p);
+		if (ev->type != GDK_2BUTTON_PRESS && lb->delegate) {
+			ListBoxEvent event(ListBoxEvent::EventType::selectionChange);
+			lb->delegate->ListNotify(&event);
+			return TRUE;
+		}
+	} catch (...) {
+		// No pointer back to Scintilla to save status
+	}
+	return FALSE;
+}
+
 /* Change the active color to the selected color so the listbox uses the color
 scheme that it would use if it had the focus. */
 static void StyleSet(GtkWidget *w, GtkStyle*, void*) {
@@ -1406,7 +1399,7 @@ static void StyleSet(GtkWidget *w, GtkStyle*, void*) {
 #endif
 }
 
-void ListBoxX::Create(Window &, int, Point, int, bool, int) {
+void ListBoxX::Create(Window &parent, int, Point, int, bool, int) {
 	if (widCached != 0) {
 		wid = widCached;
 		return;
@@ -1480,28 +1473,42 @@ void ListBoxX::Create(Window &, int, Point, int, bool, int) {
 	gtk_widget_show(widget);
 	g_signal_connect(G_OBJECT(widget), "button_press_event",
 	                   G_CALLBACK(ButtonPress), this);
+	g_signal_connect(G_OBJECT(widget), "button_release_event",
+	                   G_CALLBACK(ButtonRelease), this);
+
+	GtkWidget *top = gtk_widget_get_toplevel(static_cast<GtkWidget *>(parent.GetID()));
+	gtk_window_set_transient_for(GTK_WINDOW(static_cast<GtkWidget *>(wid)),
+		GTK_WINDOW(top));
 }
 
-void ListBoxX::SetFont(Font &scint_font) {
+void ListBoxX::SetFont(Font &font) {
 	// Only do for Pango font as there have been crashes for GDK fonts
-	if (Created() && PFont(scint_font)->pfd) {
+	if (Created() && PFont(font)->pfd) {
 		// Current font is Pango font
 #if GTK_CHECK_VERSION(3,0,0)
 		if (cssProvider) {
-			PangoFontDescription *pfd = PFont(scint_font)->pfd;
+			PangoFontDescription *pfd = PFont(font)->pfd;
 			std::ostringstream ssFontSetting;
 			ssFontSetting << "GtkTreeView, treeview { ";
 			ssFontSetting << "font-family: " << pango_font_description_get_family(pfd) <<  "; ";
 			ssFontSetting << "font-size:";
 			ssFontSetting << static_cast<double>(pango_font_description_get_size(pfd)) / PANGO_SCALE;
-			ssFontSetting << "px; ";
+			// On GTK < 3.21.0 the units are incorrectly parsed, so a font size in points
+			// need to use the "px" unit.  Normally we only get fonts in points here, so
+			// don't bother to handle the case the font is actually in pixels on < 3.21.0.
+			if (gtk_check_version(3, 21, 0) != NULL || // on < 3.21.0
+			    pango_font_description_get_size_is_absolute(pfd)) {
+				ssFontSetting << "px; ";
+			} else {
+				ssFontSetting << "pt; ";
+			}
 			ssFontSetting << "font-weight:"<< pango_font_description_get_weight(pfd) << "; ";
 			ssFontSetting << "}";
 			gtk_css_provider_load_from_data(GTK_CSS_PROVIDER(cssProvider),
 				ssFontSetting.str().c_str(), -1, NULL);
 		}
 #else
-		gtk_widget_modify_font(PWidget(list), PFont(scint_font)->pfd);
+		gtk_widget_modify_font(PWidget(list), PFont(font)->pfd);
 #endif
 		gtk_cell_renderer_text_set_fixed_height_from_font(GTK_CELL_RENDERER_TEXT(renderer), -1);
 		gtk_cell_renderer_text_set_fixed_height_from_font(GTK_CELL_RENDERER_TEXT(renderer), 1);
@@ -1743,6 +1750,11 @@ void ListBoxX::Select(int n) {
 	} else {
 		gtk_tree_selection_unselect_all(selection);
 	}
+
+	if (delegate) {
+		ListBoxEvent event(ListBoxEvent::EventType::selectionChange);
+		delegate->ListNotify(&event);
+	}
 }
 
 int ListBoxX::GetSelection() {
@@ -1839,6 +1851,10 @@ void ListBoxX::ClearRegisteredImages() {
 	images.Clear();
 }
 
+void ListBoxX::SetDelegate(IListBoxDelegate *lbDelegate) {
+	delegate = lbDelegate;
+}
+
 void ListBoxX::SetList(const char *listText, char separator, char typesep) {
 	Clear();
 	int count = strlen(listText) + 1;
@@ -1865,7 +1881,7 @@ void ListBoxX::SetList(const char *listText, char separator, char typesep) {
 	}
 }
 
-Menu::Menu() : mid(0) {}
+Menu::Menu() noexcept : mid(0) {}
 
 void Menu::CreatePopUp() {
 	Destroy();
@@ -1879,39 +1895,38 @@ void Menu::Destroy() {
 	mid = 0;
 }
 
+#if !GTK_CHECK_VERSION(3,22,0)
 static void MenuPositionFunc(GtkMenu *, gint *x, gint *y, gboolean *, gpointer userData) {
 	sptr_t intFromPointer = GPOINTER_TO_INT(userData);
 	*x = intFromPointer & 0xffff;
 	*y = intFromPointer >> 16;
 }
+#endif
 
-void Menu::Show(Point pt, Window &) {
-	int screenHeight = gdk_screen_height();
-	int screenWidth = gdk_screen_width();
+void Menu::Show(Point pt, Window &w) {
 	GtkMenu *widget = static_cast<GtkMenu *>(mid);
 	gtk_widget_show_all(GTK_WIDGET(widget));
+#if GTK_CHECK_VERSION(3,22,0)
+	// Rely on GTK+ to do the right thing with positioning
+	gtk_menu_popup_at_pointer(widget, NULL);
+#else
+	GdkRectangle rcMonitor = MonitorRectangleForWidget(PWidget(w.GetID()));
 	GtkRequisition requisition;
 #if GTK_CHECK_VERSION(3,0,0)
 	gtk_widget_get_preferred_size(GTK_WIDGET(widget), NULL, &requisition);
 #else
 	gtk_widget_size_request(GTK_WIDGET(widget), &requisition);
 #endif
-	if ((pt.x + requisition.width) > screenWidth) {
-		pt.x = screenWidth - requisition.width;
+	if ((pt.x + requisition.width) > rcMonitor.x + rcMonitor.width) {
+		pt.x = rcMonitor.x + rcMonitor.width - requisition.width;
 	}
-	if ((pt.y + requisition.height) > screenHeight) {
-		pt.y = screenHeight - requisition.height;
+	if ((pt.y + requisition.height) > rcMonitor.y + rcMonitor.height) {
+		pt.y = rcMonitor.y + rcMonitor.height - requisition.height;
 	}
 	gtk_menu_popup(widget, NULL, NULL, MenuPositionFunc,
 		GINT_TO_POINTER((static_cast<int>(pt.y) << 16) | static_cast<int>(pt.x)), 0,
 		gtk_get_current_event_time());
-}
-
-ElapsedTime::ElapsedTime() {
-	GTimeVal curTime;
-	g_get_current_time(&curTime);
-	bigBit = curTime.tv_sec;
-	littleBit = curTime.tv_usec;
+#endif
 }
 
 class DynamicLibraryImpl : public DynamicLibrary {
@@ -1922,13 +1937,13 @@ public:
 		m = g_module_open(modulePath, G_MODULE_BIND_LAZY);
 	}
 
-	virtual ~DynamicLibraryImpl() {
+	~DynamicLibraryImpl() override {
 		if (m != NULL)
 			g_module_close(m);
 	}
 
 	// Use g_module_symbol to get a pointer to the relevant function.
-	virtual Function FindFunction(const char *name) {
+	Function FindFunction(const char *name) override {
 		if (m != NULL) {
 			gpointer fn_address = NULL;
 			gboolean status = g_module_symbol(m, name, &fn_address);
@@ -1941,7 +1956,7 @@ public:
 		}
 	}
 
-	virtual bool IsValid() {
+	bool IsValid() override {
 		return m != NULL;
 	}
 };
@@ -1950,21 +1965,6 @@ DynamicLibrary *DynamicLibrary::Load(const char *modulePath) {
 	return static_cast<DynamicLibrary *>( new DynamicLibraryImpl(modulePath) );
 }
 
-double ElapsedTime::Duration(bool reset) {
-	GTimeVal curTime;
-	g_get_current_time(&curTime);
-	long endBigBit = curTime.tv_sec;
-	long endLittleBit = curTime.tv_usec;
-	double result = 1000000.0 * (endBigBit - bigBit);
-	result += endLittleBit - littleBit;
-	result /= 1000000.0;
-	if (reset) {
-		bigBit = endBigBit;
-		littleBit = endLittleBit;
-	}
-	return result;
-}
-
 ColourDesired Platform::Chrome() {
 	return ColourDesired(0xe0, 0xe0, 0xe0);
 }
@@ -1993,83 +1993,10 @@ unsigned int Platform::DoubleClickTime() {
 	return 500; 	// Half a second
 }
 
-bool Platform::MouseButtonBounce() {
-	return true;
-}
-
 void Platform::DebugDisplay(const char *s) {
 	fprintf(stderr, "%s", s);
 }
 
-bool Platform::IsKeyDown(int) {
-	// TODO: discover state of keys in GTK+/X
-	return false;
-}
-
-long Platform::SendScintilla(
-    WindowID w, unsigned int msg, unsigned long wParam, long lParam) {
-	return scintilla_send_message(SCINTILLA(w), msg, wParam, lParam);
-}
-
-long Platform::SendScintillaPointer(
-    WindowID w, unsigned int msg, unsigned long wParam, void *lParam) {
-	return scintilla_send_message(SCINTILLA(w), msg, wParam,
-	                              reinterpret_cast<sptr_t>(lParam));
-}
-
-bool Platform::IsDBCSLeadByte(int codePage, char ch) {
-	// Byte ranges found in Wikipedia articles with relevant search strings in each case
-	unsigned char uch = static_cast<unsigned char>(ch);
-	switch (codePage) {
-		case 932:
-			// Shift_jis
-			return ((uch >= 0x81) && (uch <= 0x9F)) ||
-				((uch >= 0xE0) && (uch <= 0xFC));
-				// Lead bytes F0 to FC may be a Microsoft addition.
-		case 936:
-			// GBK
-			return (uch >= 0x81) && (uch <= 0xFE);
-		case 950:
-			// Big5
-			return (uch >= 0x81) && (uch <= 0xFE);
-		// Korean EUC-KR may be code page 949.
-	}
-	return false;
-}
-
-int Platform::DBCSCharLength(int codePage, const char *s) {
-	if (codePage == 932 || codePage == 936 || codePage == 950) {
-		return IsDBCSLeadByte(codePage, s[0]) ? 2 : 1;
-	} else {
-		int bytes = mblen(s, MB_CUR_MAX);
-		if (bytes >= 1)
-			return bytes;
-		else
-			return 1;
-	}
-}
-
-int Platform::DBCSCharMaxLength() {
-	return MB_CUR_MAX;
-	//return 2;
-}
-
-// These are utility functions not really tied to a platform
-
-int Platform::Minimum(int a, int b) {
-	if (a < b)
-		return a;
-	else
-		return b;
-}
-
-int Platform::Maximum(int a, int b) {
-	if (a > b)
-		return a;
-	else
-		return b;
-}
-
 //#define TRACE
 
 #ifdef TRACE
@@ -2102,14 +2029,6 @@ void Platform::Assert(const char *c, const char *file, int line) {
 	abort();
 }
 
-int Platform::Clamp(int val, int minVal, int maxVal) {
-	if (val > maxVal)
-		val = maxVal;
-	if (val < minVal)
-		val = minVal;
-	return val;
-}
-
 void Platform_Initialise() {
 }
 

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 194 - 356
maxguitextareascintilla.mod/scintilla/gtk/ScintillaGTK.cxx


+ 290 - 0
maxguitextareascintilla.mod/scintilla/gtk/ScintillaGTK.h

@@ -0,0 +1,290 @@
+// Scintilla source code edit control
+// ScintillaGTK.h - GTK+ specific subclass of ScintillaBase
+// Copyright 1998-2004 by Neil Hodgson <[email protected]>
+// The License.txt file describes the conditions under which this software may be distributed.
+
+#ifndef SCINTILLAGTK_H
+#define SCINTILLAGTK_H
+
+namespace Scintilla {
+
+class ScintillaGTKAccessible;
+
+#define OBJECT_CLASS GObjectClass
+
+class ScintillaGTK : public ScintillaBase {
+	friend class ScintillaGTKAccessible;
+
+	_ScintillaObject *sci;
+	Window wText;
+	Window scrollbarv;
+	Window scrollbarh;
+	GtkAdjustment *adjustmentv;
+	GtkAdjustment *adjustmenth;
+	Window wSelection;
+	int verticalScrollBarWidth;
+	int horizontalScrollBarHeight;
+
+	SelectionText primary;
+
+	GdkEvent *evbtn;
+	guint buttonMouse;
+	bool capturedMouse;
+	bool dragWasDropped;
+	int lastKey;
+	int rectangularSelectionModifier;
+
+	GtkWidgetClass *parentClass;
+
+	static GdkAtom atomClipboard;
+	static GdkAtom atomUTF8;
+	static GdkAtom atomString;
+	static GdkAtom atomUriList;
+	static GdkAtom atomDROPFILES_DND;
+	GdkAtom atomSought;
+
+#if PLAT_GTK_WIN32
+	CLIPFORMAT cfColumnSelect;
+#endif
+
+	Window wPreedit;
+	Window wPreeditDraw;
+	GtkIMContext *im_context;
+	PangoScript lastNonCommonScript;
+
+	// Wheel mouse support
+	unsigned int linesPerScroll;
+	GTimeVal lastWheelMouseTime;
+	gint lastWheelMouseDirection;
+	gint wheelMouseIntensity;
+	gdouble smoothScrollY;
+	gdouble smoothScrollX;
+
+#if GTK_CHECK_VERSION(3,0,0)
+	cairo_rectangle_list_t *rgnUpdate;
+#else
+	GdkRegion *rgnUpdate;
+#endif
+	bool repaintFullWindow;
+
+	guint styleIdleID;
+	int accessibilityEnabled;
+	AtkObject *accessible;
+
+public:
+	explicit ScintillaGTK(_ScintillaObject *sci_);
+	// Deleted so ScintillaGTK objects can not be copied.
+	ScintillaGTK(const ScintillaGTK &) = delete;
+	ScintillaGTK(ScintillaGTK &&) = delete;
+	ScintillaGTK &operator=(const ScintillaGTK &) = delete;
+	ScintillaGTK &operator=(ScintillaGTK &&) = delete;
+	virtual ~ScintillaGTK();
+	static ScintillaGTK *FromWidget(GtkWidget *widget);
+	static void ClassInit(OBJECT_CLASS* object_class, GtkWidgetClass *widget_class, GtkContainerClass *container_class);
+private:
+	void Init();
+	void Finalise() override;
+	bool AbandonPaint() override;
+	void DisplayCursor(Window::Cursor c) override;
+	bool DragThreshold(Point ptStart, Point ptNow) override;
+	void StartDrag() override;
+	Sci::Position TargetAsUTF8(char *text) const;
+	Sci::Position EncodedFromUTF8(const char *utf8, char *encoded) const;
+	bool ValidCodePage(int codePage) const override;
+public: 	// Public for scintilla_send_message
+	sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override;
+private:
+	sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override;
+	struct TimeThunk {
+		TickReason reason;
+		ScintillaGTK *scintilla;
+		guint timer;
+		TimeThunk() : reason(tickCaret), scintilla(NULL), timer(0) {}
+	};
+	TimeThunk timers[tickDwell+1];
+	bool FineTickerRunning(TickReason reason) override;
+	void FineTickerStart(TickReason reason, int millis, int tolerance) override;
+	void FineTickerCancel(TickReason reason) override;
+	bool SetIdle(bool on) override;
+	void SetMouseCapture(bool on) override;
+	bool HaveMouseCapture() override;
+	bool PaintContains(PRectangle rc) override;
+	void FullPaint();
+	PRectangle GetClientRectangle() const override;
+	void ScrollText(Sci::Line linesToMove) override;
+	void SetVerticalScrollPos() override;
+	void SetHorizontalScrollPos() override;
+	bool ModifyScrollBars(Sci::Line nMax, Sci::Line nPage) override;
+	void ReconfigureScrollBars() override;
+	void NotifyChange() override;
+	void NotifyFocus(bool focus) override;
+	void NotifyParent(SCNotification scn) override;
+	void NotifyKey(int key, int modifiers);
+	void NotifyURIDropped(const char *list);
+	const char *CharacterSetID() const;
+	CaseFolder *CaseFolderForEncoding() override;
+	std::string CaseMapString(const std::string &s, int caseMapping) override;
+	int KeyDefault(int key, int modifiers) override;
+	void CopyToClipboard(const SelectionText &selectedText) override;
+	void Copy() override;
+	void Paste() override;
+	void CreateCallTipWindow(PRectangle rc) override;
+	void AddToPopUp(const char *label, int cmd = 0, bool enabled = true) override;
+	bool OwnPrimarySelection();
+	void ClaimSelection() override;
+	void GetGtkSelectionText(GtkSelectionData *selectionData, SelectionText &selText);
+	void ReceivedSelection(GtkSelectionData *selection_data);
+	void ReceivedDrop(GtkSelectionData *selection_data);
+	static void GetSelection(GtkSelectionData *selection_data, guint info, SelectionText *text);
+	void StoreOnClipboard(SelectionText *clipText);
+	static void ClipboardGetSelection(GtkClipboard* clip, GtkSelectionData *selection_data, guint info, void *data);
+	static void ClipboardClearSelection(GtkClipboard* clip, void *data);
+
+	void UnclaimSelection(GdkEventSelection *selection_event);
+	static void PrimarySelection(GtkWidget *widget, GtkSelectionData *selection_data, guint info, guint time_stamp, ScintillaGTK *sciThis);
+	static gboolean PrimaryClear(GtkWidget *widget, GdkEventSelection *event, ScintillaGTK *sciThis);
+	void Resize(int width, int height);
+
+	// Callback functions
+	void RealizeThis(GtkWidget *widget);
+	static void Realize(GtkWidget *widget);
+	void UnRealizeThis(GtkWidget *widget);
+	static void UnRealize(GtkWidget *widget);
+	void MapThis();
+	static void Map(GtkWidget *widget);
+	void UnMapThis();
+	static void UnMap(GtkWidget *widget);
+	gint FocusInThis(GtkWidget *widget);
+	static gint FocusIn(GtkWidget *widget, GdkEventFocus *event);
+	gint FocusOutThis(GtkWidget *widget);
+	static gint FocusOut(GtkWidget *widget, GdkEventFocus *event);
+	static void SizeRequest(GtkWidget *widget, GtkRequisition *requisition);
+#if GTK_CHECK_VERSION(3,0,0)
+	static void GetPreferredWidth(GtkWidget *widget, gint *minimalWidth, gint *naturalWidth);
+	static void GetPreferredHeight(GtkWidget *widget, gint *minimalHeight, gint *naturalHeight);
+#endif
+	static void SizeAllocate(GtkWidget *widget, GtkAllocation *allocation);
+#if GTK_CHECK_VERSION(3,0,0)
+	gboolean DrawTextThis(cairo_t *cr);
+	static gboolean DrawText(GtkWidget *widget, cairo_t *cr, ScintillaGTK *sciThis);
+	gboolean DrawThis(cairo_t *cr);
+	static gboolean DrawMain(GtkWidget *widget, cairo_t *cr);
+#else
+	gboolean ExposeTextThis(GtkWidget *widget, GdkEventExpose *ose);
+	static gboolean ExposeText(GtkWidget *widget, GdkEventExpose *ose, ScintillaGTK *sciThis);
+	gboolean Expose(GtkWidget *widget, GdkEventExpose *ose);
+	static gboolean ExposeMain(GtkWidget *widget, GdkEventExpose *ose);
+#endif
+	void ForAll(GtkCallback callback, gpointer callback_data);
+	static void MainForAll(GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data);
+
+	static void ScrollSignal(GtkAdjustment *adj, ScintillaGTK *sciThis);
+	static void ScrollHSignal(GtkAdjustment *adj, ScintillaGTK *sciThis);
+	gint PressThis(GdkEventButton *event);
+	static gint Press(GtkWidget *widget, GdkEventButton *event);
+	static gint MouseRelease(GtkWidget *widget, GdkEventButton *event);
+	static gint ScrollEvent(GtkWidget *widget, GdkEventScroll *event);
+	static gint Motion(GtkWidget *widget, GdkEventMotion *event);
+	gboolean KeyThis(GdkEventKey *event);
+	static gboolean KeyPress(GtkWidget *widget, GdkEventKey *event);
+	static gboolean KeyRelease(GtkWidget *widget, GdkEventKey *event);
+#if GTK_CHECK_VERSION(3,0,0)
+	gboolean DrawPreeditThis(GtkWidget *widget, cairo_t *cr);
+	static gboolean DrawPreedit(GtkWidget *widget, cairo_t *cr, ScintillaGTK *sciThis);
+#else
+	gboolean ExposePreeditThis(GtkWidget *widget, GdkEventExpose *ose);
+	static gboolean ExposePreedit(GtkWidget *widget, GdkEventExpose *ose, ScintillaGTK *sciThis);
+#endif
+	AtkObject* GetAccessibleThis(GtkWidget *widget);
+	static AtkObject* GetAccessible(GtkWidget *widget);
+
+	bool KoreanIME();
+	void CommitThis(char *commitStr);
+	static void Commit(GtkIMContext *context, char *str, ScintillaGTK *sciThis);
+	void PreeditChangedInlineThis();
+	void PreeditChangedWindowedThis();
+	static void PreeditChanged(GtkIMContext *context, ScintillaGTK *sciThis);
+	void MoveImeCarets(int pos);
+	void DrawImeIndicator(int indicator, int len);
+	void SetCandidateWindowPos();
+
+	static void StyleSetText(GtkWidget *widget, GtkStyle *previous, void*);
+	static void RealizeText(GtkWidget *widget, void*);
+	static void Dispose(GObject *object);
+	static void Destroy(GObject *object);
+	static void SelectionReceived(GtkWidget *widget, GtkSelectionData *selection_data,
+	                              guint time);
+	static void SelectionGet(GtkWidget *widget, GtkSelectionData *selection_data,
+	                         guint info, guint time);
+	static gint SelectionClear(GtkWidget *widget, GdkEventSelection *selection_event);
+	gboolean DragMotionThis(GdkDragContext *context, gint x, gint y, guint dragtime);
+	static gboolean DragMotion(GtkWidget *widget, GdkDragContext *context,
+	                           gint x, gint y, guint dragtime);
+	static void DragLeave(GtkWidget *widget, GdkDragContext *context,
+	                      guint time);
+	static void DragEnd(GtkWidget *widget, GdkDragContext *context);
+	static gboolean Drop(GtkWidget *widget, GdkDragContext *context,
+	                     gint x, gint y, guint time);
+	static void DragDataReceived(GtkWidget *widget, GdkDragContext *context,
+	                             gint x, gint y, GtkSelectionData *selection_data, guint info, guint time);
+	static void DragDataGet(GtkWidget *widget, GdkDragContext *context,
+	                        GtkSelectionData *selection_data, guint info, guint time);
+	static gboolean TimeOut(gpointer ptt);
+	static gboolean IdleCallback(gpointer pSci);
+	static gboolean StyleIdle(gpointer pSci);
+	void IdleWork() override;
+	void QueueIdleWork(WorkNeeded::workItems items, Sci::Position upTo) override;
+	void SetDocPointer(Document *document) override;
+	static void PopUpCB(GtkMenuItem *menuItem, ScintillaGTK *sciThis);
+
+#if GTK_CHECK_VERSION(3,0,0)
+	static gboolean DrawCT(GtkWidget *widget, cairo_t *cr, CallTip *ctip);
+#else
+	static gboolean ExposeCT(GtkWidget *widget, GdkEventExpose *ose, CallTip *ctip);
+#endif
+	static gboolean PressCT(GtkWidget *widget, GdkEventButton *event, ScintillaGTK *sciThis);
+
+	static sptr_t DirectFunction(sptr_t ptr,
+	                             unsigned int iMessage, uptr_t wParam, sptr_t lParam);
+};
+
+// helper class to watch a GObject lifetime and get notified when it dies
+class GObjectWatcher {
+	GObject *weakRef;
+
+	void WeakNotifyThis(GObject *obj G_GNUC_UNUSED) {
+		PLATFORM_ASSERT(obj == weakRef);
+
+		Destroyed();
+		weakRef = 0;
+	}
+
+	static void WeakNotify(gpointer data, GObject *obj) {
+		static_cast<GObjectWatcher*>(data)->WeakNotifyThis(obj);
+	}
+
+public:
+	GObjectWatcher(GObject *obj) :
+			weakRef(obj) {
+		g_object_weak_ref(weakRef, WeakNotify, this);
+	}
+
+	virtual ~GObjectWatcher() {
+		if (weakRef) {
+			g_object_weak_unref(weakRef, WeakNotify, this);
+		}
+	}
+
+	virtual void Destroyed() {}
+
+	bool IsDestroyed() const {
+		return weakRef != 0;
+	}
+};
+
+std::string ConvertText(const char *s, size_t len, const char *charSetDest,
+                        const char *charSetSource, bool transliterations, bool silent=false);
+
+}
+
+#endif

+ 1260 - 0
maxguitextareascintilla.mod/scintilla/gtk/ScintillaGTKAccessible.cxx

@@ -0,0 +1,1260 @@
+/* Scintilla source code edit control */
+/* ScintillaGTKAccessible.c - GTK+ accessibility for ScintillaGTK */
+/* Copyright 2016 by Colomban Wendling <[email protected]>
+ * The License.txt file describes the conditions under which this software may be distributed. */
+
+// REFERENCES BETWEEN THE DIFFERENT OBJECTS
+//
+// ScintillaGTKAccessible is the actual implementation, as a C++ class.
+// ScintillaObjectAccessible is the GObject derived from AtkObject that
+// implements the various ATK interfaces, through ScintillaGTKAccessible.
+// This follows the same pattern as ScintillaGTK and ScintillaObject.
+//
+// ScintillaGTK owns a strong reference to the ScintillaObjectAccessible, and
+// is both responsible for creating and destroying that object.
+//
+// ScintillaObjectAccessible owns a strong reference to ScintillaGTKAccessible,
+// and is responsible for creating and destroying that object.
+//
+// ScintillaGTKAccessible has weak references to both the ScintillaGTK and
+// the ScintillaObjectAccessible objects associated, but does not own any
+// strong references to those objects.
+//
+// The chain of ownership is as follows:
+// ScintillaGTK -> ScintillaObjectAccessible -> ScintillaGTKAccessible
+
+// DETAILS ON THE GOBJECT TYPE IMPLEMENTATION
+//
+// On GTK < 3.2, we need to use the AtkObjectFactory.  We need to query
+// the factory to see what type we should derive from, thus making use of
+// dynamic inheritance.  It's tricky, but it works so long as it's done
+// carefully enough.
+//
+// On GTK 3.2 through 3.6, we need to hack around because GTK stopped
+// registering its accessible types in the factory, so we can't query
+// them that way.  Unfortunately, the accessible types aren't exposed
+// yet (not until 3.8), so there's no proper way to know which type to
+// inherit from.  To work around this, we instantiate the parent's
+// AtkObject temporarily, and use it's type.  It means creating an extra
+// throwaway object and being able to pass the type information up to the
+// type registration code, but it's the only solution I could find.
+//
+// On GTK 3.8 onward, we use the proper exposed GtkContainerAccessible as
+// parent, and so a straightforward class.
+//
+// To hide and contain the complexity in type creation arising from the
+// hackish support for GTK 3.2 to 3.8, the actual implementation for the
+// widget's get_accessible() is located in the accessibility layer itself.
+
+// Initially based on GtkTextViewAccessible from GTK 3.20
+// Inspiration for the GTK < 3.2 part comes from Evince 2.24, thanks.
+
+// FIXME: optimize character/byte offset conversion (with a cache?)
+
+#include <cstddef>
+#include <cstdlib>
+#include <cstring>
+
+#include <stdexcept>
+#include <new>
+#include <string>
+#include <vector>
+#include <map>
+#include <algorithm>
+#include <memory>
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+// whether we have widget_set() and widget_unset()
+#define HAVE_WIDGET_SET_UNSET (GTK_CHECK_VERSION(3, 3, 6))
+// whether GTK accessibility is available through the ATK factory
+#define HAVE_GTK_FACTORY (! GTK_CHECK_VERSION(3, 1, 9))
+// whether we have gtk-a11y.h and the public GTK accessible types
+#define HAVE_GTK_A11Y_H (GTK_CHECK_VERSION(3, 7, 6))
+
+#if HAVE_GTK_A11Y_H
+# include <gtk/gtk-a11y.h>
+#endif
+
+#if defined(__WIN32__) || defined(_MSC_VER)
+#include <windows.h>
+#endif
+
+// ScintillaGTK.h and stuff it needs
+#include "Platform.h"
+
+#include "ILoader.h"
+#include "ILexer.h"
+#include "Scintilla.h"
+#include "ScintillaWidget.h"
+#ifdef SCI_LEXER
+#include "SciLexer.h"
+#endif
+#include "StringCopy.h"
+#ifdef SCI_LEXER
+#include "LexerModule.h"
+#endif
+#include "Position.h"
+#include "UniqueString.h"
+#include "SplitVector.h"
+#include "Partitioning.h"
+#include "RunStyles.h"
+#include "ContractionState.h"
+#include "CellBuffer.h"
+#include "CallTip.h"
+#include "KeyMap.h"
+#include "Indicator.h"
+#include "LineMarker.h"
+#include "Style.h"
+#include "ViewStyle.h"
+#include "CharClassify.h"
+#include "Decoration.h"
+#include "CaseFolder.h"
+#include "Document.h"
+#include "CaseConvert.h"
+#include "UniConversion.h"
+#include "Selection.h"
+#include "PositionCache.h"
+#include "EditModel.h"
+#include "MarginView.h"
+#include "EditView.h"
+#include "Editor.h"
+#include "AutoComplete.h"
+#include "ScintillaBase.h"
+
+#include "ScintillaGTK.h"
+#include "ScintillaGTKAccessible.h"
+
+using namespace Scintilla;
+
+struct ScintillaObjectAccessiblePrivate {
+	ScintillaGTKAccessible *pscin;
+};
+
+typedef GtkAccessible ScintillaObjectAccessible;
+typedef GtkAccessibleClass ScintillaObjectAccessibleClass;
+
+#define SCINTILLA_OBJECT_ACCESSIBLE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SCINTILLA_TYPE_OBJECT_ACCESSIBLE, ScintillaObjectAccessible))
+#define SCINTILLA_TYPE_OBJECT_ACCESSIBLE (scintilla_object_accessible_get_type(0))
+
+// We can't use priv member because of dynamic inheritance, so we don't actually know the offset.  Meh.
+#define SCINTILLA_OBJECT_ACCESSIBLE_GET_PRIVATE(inst) (G_TYPE_INSTANCE_GET_PRIVATE((inst), SCINTILLA_TYPE_OBJECT_ACCESSIBLE, ScintillaObjectAccessiblePrivate))
+
+static GType scintilla_object_accessible_get_type(GType parent_type);
+
+ScintillaGTKAccessible *ScintillaGTKAccessible::FromAccessible(GtkAccessible *accessible) {
+	// FIXME: do we need the check below?  GTK checks that in all methods, so maybe
+	GtkWidget *widget = gtk_accessible_get_widget(accessible);
+	if (! widget) {
+		return 0;
+	}
+
+	return SCINTILLA_OBJECT_ACCESSIBLE_GET_PRIVATE(accessible)->pscin;
+}
+
+ScintillaGTKAccessible::ScintillaGTKAccessible(GtkAccessible *accessible_, GtkWidget *widget_) :
+		accessible(accessible_),
+		sci(ScintillaGTK::FromWidget(widget_)),
+		deletionLengthChar(0),
+		old_pos(-1) {
+	g_signal_connect(widget_, "sci-notify", G_CALLBACK(SciNotify), this);
+}
+
+ScintillaGTKAccessible::~ScintillaGTKAccessible() {
+	if (gtk_accessible_get_widget(accessible)) {
+		g_signal_handlers_disconnect_matched(sci->sci, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, this);
+	}
+}
+
+gchar *ScintillaGTKAccessible::GetTextRangeUTF8(Sci::Position startByte, Sci::Position endByte) {
+	g_return_val_if_fail(startByte >= 0, NULL);
+	// FIXME: should we swap start/end if necessary?
+	g_return_val_if_fail(endByte >= startByte, NULL);
+
+	gchar *utf8Text = NULL;
+	const char *charSetBuffer;
+
+	// like TargetAsUTF8, but avoids a double conversion
+	if (sci->IsUnicodeMode() || ! *(charSetBuffer = sci->CharacterSetID())) {
+		int len = endByte - startByte;
+		utf8Text = (char *) g_malloc(len + 1);
+		sci->pdoc->GetCharRange(utf8Text, startByte, len);
+		utf8Text[len] = '\0';
+	} else {
+		// Need to convert
+		std::string s = sci->RangeText(startByte, endByte);
+		std::string tmputf = ConvertText(&s[0], s.length(), "UTF-8", charSetBuffer, false);
+		size_t len = tmputf.length();
+		utf8Text = (char *) g_malloc(len + 1);
+		memcpy(utf8Text, tmputf.c_str(), len);
+		utf8Text[len] = '\0';
+	}
+
+	return utf8Text;
+}
+
+gchar *ScintillaGTKAccessible::GetText(int startChar, int endChar) {
+	Sci::Position startByte, endByte;
+	if (endChar == -1) {
+		startByte = ByteOffsetFromCharacterOffset(startChar);
+		endByte = sci->pdoc->Length();
+	} else {
+		ByteRangeFromCharacterRange(startChar, endChar, startByte, endByte);
+	}
+	return GetTextRangeUTF8(startByte, endByte);
+}
+
+gchar *ScintillaGTKAccessible::GetTextAfterOffset(int charOffset,
+		AtkTextBoundary boundaryType, int *startChar, int *endChar) {
+	g_return_val_if_fail(charOffset >= 0, NULL);
+
+	Sci::Position startByte, endByte;
+	Sci::Position byteOffset = ByteOffsetFromCharacterOffset(charOffset);
+
+	switch (boundaryType) {
+		case ATK_TEXT_BOUNDARY_CHAR:
+			startByte = PositionAfter(byteOffset);
+			endByte = PositionAfter(startByte);
+			// FIXME: optimize conversion back, as we can reasonably assume +1 char?
+			break;
+
+		case ATK_TEXT_BOUNDARY_WORD_START:
+			startByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 1);
+			startByte = sci->WndProc(SCI_WORDENDPOSITION, startByte, 0);
+			endByte = sci->WndProc(SCI_WORDENDPOSITION, startByte, 1);
+			endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 0);
+			break;
+
+		case ATK_TEXT_BOUNDARY_WORD_END:
+			startByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 0);
+			startByte = sci->WndProc(SCI_WORDENDPOSITION, startByte, 1);
+			endByte = sci->WndProc(SCI_WORDENDPOSITION, startByte, 0);
+			endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 1);
+			break;
+
+		case ATK_TEXT_BOUNDARY_LINE_START: {
+			int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
+			startByte = sci->WndProc(SCI_POSITIONFROMLINE, line + 1, 0);
+			endByte = sci->WndProc(SCI_POSITIONFROMLINE, line + 2, 0);
+			break;
+		}
+
+		case ATK_TEXT_BOUNDARY_LINE_END: {
+			int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
+			startByte = sci->WndProc(SCI_GETLINEENDPOSITION, line, 0);
+			endByte = sci->WndProc(SCI_GETLINEENDPOSITION, line + 1, 0);
+			break;
+		}
+
+		default:
+			*startChar = *endChar = -1;
+			return NULL;
+	}
+
+	CharacterRangeFromByteRange(startByte, endByte, startChar, endChar);
+	return GetTextRangeUTF8(startByte, endByte);
+}
+
+gchar *ScintillaGTKAccessible::GetTextBeforeOffset(int charOffset,
+		AtkTextBoundary boundaryType, int *startChar, int *endChar) {
+	g_return_val_if_fail(charOffset >= 0, NULL);
+
+	Sci::Position startByte, endByte;
+	Sci::Position byteOffset = ByteOffsetFromCharacterOffset(charOffset);
+
+	switch (boundaryType) {
+		case ATK_TEXT_BOUNDARY_CHAR:
+			endByte = PositionBefore(byteOffset);
+			startByte = PositionBefore(endByte);
+			break;
+
+		case ATK_TEXT_BOUNDARY_WORD_START:
+			endByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 0);
+			endByte = sci->WndProc(SCI_WORDSTARTPOSITION, endByte, 1);
+			startByte = sci->WndProc(SCI_WORDSTARTPOSITION, endByte, 0);
+			startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 1);
+			break;
+
+		case ATK_TEXT_BOUNDARY_WORD_END:
+			endByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 1);
+			endByte = sci->WndProc(SCI_WORDSTARTPOSITION, endByte, 0);
+			startByte = sci->WndProc(SCI_WORDSTARTPOSITION, endByte, 1);
+			startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 0);
+			break;
+
+		case ATK_TEXT_BOUNDARY_LINE_START: {
+			int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
+			endByte = sci->WndProc(SCI_POSITIONFROMLINE, line, 0);
+			if (line > 0) {
+				startByte = sci->WndProc(SCI_POSITIONFROMLINE, line - 1, 0);
+			} else {
+				startByte = endByte;
+			}
+			break;
+		}
+
+		case ATK_TEXT_BOUNDARY_LINE_END: {
+			int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
+			if (line > 0) {
+				endByte = sci->WndProc(SCI_GETLINEENDPOSITION, line - 1, 0);
+			} else {
+				endByte = 0;
+			}
+			if (line > 1) {
+				startByte = sci->WndProc(SCI_GETLINEENDPOSITION, line - 2, 0);
+			} else {
+				startByte = endByte;
+			}
+			break;
+		}
+
+		default:
+			*startChar = *endChar = -1;
+			return NULL;
+	}
+
+	CharacterRangeFromByteRange(startByte, endByte, startChar, endChar);
+	return GetTextRangeUTF8(startByte, endByte);
+}
+
+gchar *ScintillaGTKAccessible::GetTextAtOffset(int charOffset,
+		AtkTextBoundary boundaryType, int *startChar, int *endChar) {
+	g_return_val_if_fail(charOffset >= 0, NULL);
+
+	Sci::Position startByte, endByte;
+	Sci::Position byteOffset = ByteOffsetFromCharacterOffset(charOffset);
+
+	switch (boundaryType) {
+		case ATK_TEXT_BOUNDARY_CHAR:
+			startByte = byteOffset;
+			endByte = sci->WndProc(SCI_POSITIONAFTER, byteOffset, 0);
+			break;
+
+		case ATK_TEXT_BOUNDARY_WORD_START:
+			startByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 1);
+			endByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 1);
+			if (! sci->WndProc(SCI_ISRANGEWORD, startByte, endByte)) {
+				// if the cursor was not on a word, forward back
+				startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 0);
+				startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 1);
+			}
+			endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 0);
+			break;
+
+		case ATK_TEXT_BOUNDARY_WORD_END:
+			startByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 1);
+			endByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 1);
+			if (! sci->WndProc(SCI_ISRANGEWORD, startByte, endByte)) {
+				// if the cursor was not on a word, forward back
+				endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 0);
+				endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 1);
+			}
+			startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 0);
+			break;
+
+		case ATK_TEXT_BOUNDARY_LINE_START: {
+			int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
+			startByte = sci->WndProc(SCI_POSITIONFROMLINE, line, 0);
+			endByte = sci->WndProc(SCI_POSITIONFROMLINE, line + 1, 0);
+			break;
+		}
+
+		case ATK_TEXT_BOUNDARY_LINE_END: {
+			int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
+			if (line > 0) {
+				startByte = sci->WndProc(SCI_GETLINEENDPOSITION, line - 1, 0);
+			} else {
+				startByte = 0;
+			}
+			endByte = sci->WndProc(SCI_GETLINEENDPOSITION, line, 0);
+			break;
+		}
+
+		default:
+			*startChar = *endChar = -1;
+			return NULL;
+	}
+
+	CharacterRangeFromByteRange(startByte, endByte, startChar, endChar);
+	return GetTextRangeUTF8(startByte, endByte);
+}
+
+#if ATK_CHECK_VERSION(2, 10, 0)
+gchar *ScintillaGTKAccessible::GetStringAtOffset(int charOffset,
+		AtkTextGranularity granularity, int *startChar, int *endChar) {
+	g_return_val_if_fail(charOffset >= 0, NULL);
+
+	Sci::Position startByte, endByte;
+	Sci::Position byteOffset = ByteOffsetFromCharacterOffset(charOffset);
+
+	switch (granularity) {
+		case ATK_TEXT_GRANULARITY_CHAR:
+			startByte = byteOffset;
+			endByte = sci->WndProc(SCI_POSITIONAFTER, byteOffset, 0);
+			break;
+		case ATK_TEXT_GRANULARITY_WORD:
+			startByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 1);
+			endByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 1);
+			break;
+		case ATK_TEXT_GRANULARITY_LINE: {
+			gint line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
+			startByte = sci->WndProc(SCI_POSITIONFROMLINE, line, 0);
+			endByte = sci->WndProc(SCI_GETLINEENDPOSITION, line, 0);
+			break;
+		}
+		default:
+			*startChar = *endChar = -1;
+			return NULL;
+	}
+
+	CharacterRangeFromByteRange(startByte, endByte, startChar, endChar);
+	return GetTextRangeUTF8(startByte, endByte);
+}
+#endif
+
+gunichar ScintillaGTKAccessible::GetCharacterAtOffset(int charOffset) {
+	g_return_val_if_fail(charOffset >= 0, 0);
+
+	Sci::Position startByte = ByteOffsetFromCharacterOffset(charOffset);
+	Sci::Position endByte = PositionAfter(startByte);
+	gchar *ch = GetTextRangeUTF8(startByte, endByte);
+	gunichar unichar = g_utf8_get_char_validated(ch, -1);
+	g_free(ch);
+
+	return unichar;
+}
+
+gint ScintillaGTKAccessible::GetCharacterCount() {
+	return sci->pdoc->CountCharacters(0, sci->pdoc->Length());
+}
+
+gint ScintillaGTKAccessible::GetCaretOffset() {
+	return CharacterOffsetFromByteOffset(sci->WndProc(SCI_GETCURRENTPOS, 0, 0));
+}
+
+gboolean ScintillaGTKAccessible::SetCaretOffset(int charOffset) {
+	sci->WndProc(SCI_GOTOPOS, ByteOffsetFromCharacterOffset(charOffset), 0);
+	return TRUE;
+}
+
+gint ScintillaGTKAccessible::GetOffsetAtPoint(gint x, gint y, AtkCoordType coords) {
+	gint x_widget, y_widget, x_window, y_window;
+	GtkWidget *widget = gtk_accessible_get_widget(accessible);
+
+	GdkWindow *window = gtk_widget_get_window(widget);
+	gdk_window_get_origin(window, &x_widget, &y_widget);
+	if (coords == ATK_XY_SCREEN) {
+		x = x - x_widget;
+		y = y - y_widget;
+	} else if (coords == ATK_XY_WINDOW) {
+		window = gdk_window_get_toplevel(window);
+		gdk_window_get_origin(window, &x_window, &y_window);
+
+		x = x - x_widget + x_window;
+		y = y - y_widget + y_window;
+	} else {
+		return -1;
+	}
+
+	// FIXME: should we handle scrolling?
+	return CharacterOffsetFromByteOffset(sci->WndProc(SCI_CHARPOSITIONFROMPOINTCLOSE, x, y));
+}
+
+void ScintillaGTKAccessible::GetCharacterExtents(int charOffset,
+		gint *x, gint *y, gint *width, gint *height, AtkCoordType coords) {
+	*x = *y = *height = *width = 0;
+
+	Sci::Position byteOffset = ByteOffsetFromCharacterOffset(charOffset);
+
+	// FIXME: should we handle scrolling?
+	*x = sci->WndProc(SCI_POINTXFROMPOSITION, 0, byteOffset);
+	*y = sci->WndProc(SCI_POINTYFROMPOSITION, 0, byteOffset);
+
+	int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
+	*height = sci->WndProc(SCI_TEXTHEIGHT, line, 0);
+
+	int nextByteOffset = PositionAfter(byteOffset);
+	int next_x = sci->WndProc(SCI_POINTXFROMPOSITION, 0, nextByteOffset);
+	if (next_x > *x) {
+		*width = next_x - *x;
+	} else if (nextByteOffset > byteOffset) {
+		/* maybe next position was on the next line or something.
+		 * just compute the expected character width */
+		int style = StyleAt(byteOffset, true);
+		int len = nextByteOffset - byteOffset;
+		char *ch = new char[len + 1];
+		sci->pdoc->GetCharRange(ch, byteOffset, len);
+		ch[len] = '\0';
+		*width = sci->TextWidth(style, ch);
+		delete[] ch;
+	}
+
+	GtkWidget *widget = gtk_accessible_get_widget(accessible);
+	GdkWindow *window = gtk_widget_get_window(widget);
+	int x_widget, y_widget;
+	gdk_window_get_origin(window, &x_widget, &y_widget);
+	if (coords == ATK_XY_SCREEN) {
+		*x += x_widget;
+		*y += y_widget;
+	} else if (coords == ATK_XY_WINDOW) {
+		window = gdk_window_get_toplevel(window);
+		int x_window, y_window;
+		gdk_window_get_origin(window, &x_window, &y_window);
+
+		*x += x_widget - x_window;
+		*y += y_widget - y_window;
+	} else {
+		*x = *y = *height = *width = 0;
+	}
+}
+
+static AtkAttributeSet *AddTextAttribute(AtkAttributeSet *attributes, AtkTextAttribute attr, gchar *value) {
+	AtkAttribute *at = g_new(AtkAttribute, 1);
+	at->name = g_strdup(atk_text_attribute_get_name(attr));
+	at->value = value;
+
+	return g_slist_prepend(attributes, at);
+}
+
+static AtkAttributeSet *AddTextIntAttribute(AtkAttributeSet *attributes, AtkTextAttribute attr, gint i) {
+	return AddTextAttribute(attributes, attr, g_strdup(atk_text_attribute_get_value(attr, i)));
+}
+
+static AtkAttributeSet *AddTextColorAttribute(AtkAttributeSet *attributes, AtkTextAttribute attr, const ColourDesired &colour) {
+	return AddTextAttribute(attributes, attr,
+		g_strdup_printf("%u,%u,%u", colour.GetRed() * 257, colour.GetGreen() * 257, colour.GetBlue() * 257));
+}
+
+AtkAttributeSet *ScintillaGTKAccessible::GetAttributesForStyle(unsigned int styleNum) {
+	AtkAttributeSet *attr_set = NULL;
+
+	if (styleNum >= sci->vs.styles.size())
+		return NULL;
+	Style &style = sci->vs.styles[styleNum];
+
+	attr_set = AddTextAttribute(attr_set, ATK_TEXT_ATTR_FAMILY_NAME, g_strdup(style.fontName));
+	attr_set = AddTextAttribute(attr_set, ATK_TEXT_ATTR_SIZE, g_strdup_printf("%d", style.size / SC_FONT_SIZE_MULTIPLIER));
+	attr_set = AddTextIntAttribute(attr_set, ATK_TEXT_ATTR_WEIGHT, CLAMP(style.weight, 100, 1000));
+	attr_set = AddTextIntAttribute(attr_set, ATK_TEXT_ATTR_STYLE, style.italic ? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL);
+	attr_set = AddTextIntAttribute(attr_set, ATK_TEXT_ATTR_UNDERLINE, style.underline ? PANGO_UNDERLINE_SINGLE : PANGO_UNDERLINE_NONE);
+	attr_set = AddTextColorAttribute(attr_set, ATK_TEXT_ATTR_FG_COLOR, style.fore);
+	attr_set = AddTextColorAttribute(attr_set, ATK_TEXT_ATTR_BG_COLOR, style.back);
+	attr_set = AddTextIntAttribute(attr_set, ATK_TEXT_ATTR_INVISIBLE, style.visible ? 0 : 1);
+	attr_set = AddTextIntAttribute(attr_set, ATK_TEXT_ATTR_EDITABLE, style.changeable ? 1 : 0);
+
+	return attr_set;
+}
+
+AtkAttributeSet *ScintillaGTKAccessible::GetRunAttributes(int charOffset, int *startChar, int *endChar) {
+	g_return_val_if_fail(charOffset >= -1, NULL);
+
+	Sci::Position byteOffset;
+	if (charOffset == -1) {
+		byteOffset = sci->WndProc(SCI_GETCURRENTPOS, 0, 0);
+	} else {
+		byteOffset = ByteOffsetFromCharacterOffset(charOffset);
+	}
+	int length = sci->pdoc->Length();
+
+	g_return_val_if_fail(byteOffset <= length, NULL);
+
+	const char style = StyleAt(byteOffset, true);
+	// compute the range for this style
+	Sci::Position startByte = byteOffset;
+	// when going backwards, we know the style is already computed
+	while (startByte > 0 && sci->pdoc->StyleAt((startByte) - 1) == style)
+		(startByte)--;
+	Sci::Position endByte = byteOffset + 1;
+	while (endByte < length && StyleAt(endByte, true) == style)
+		(endByte)++;
+
+	CharacterRangeFromByteRange(startByte, endByte, startChar, endChar);
+	return GetAttributesForStyle((unsigned int) style);
+}
+
+AtkAttributeSet *ScintillaGTKAccessible::GetDefaultAttributes() {
+	return GetAttributesForStyle(0);
+}
+
+gint ScintillaGTKAccessible::GetNSelections() {
+	return sci->sel.Empty() ? 0 : sci->sel.Count();
+}
+
+gchar *ScintillaGTKAccessible::GetSelection(gint selection_num, int *startChar, int *endChar) {
+	if (selection_num < 0 || (unsigned int) selection_num >= sci->sel.Count())
+		return NULL;
+
+	Sci::Position startByte = sci->sel.Range(selection_num).Start().Position();
+	Sci::Position endByte = sci->sel.Range(selection_num).End().Position();
+
+	CharacterRangeFromByteRange(startByte, endByte, startChar, endChar);
+	return GetTextRangeUTF8(startByte, endByte);
+}
+
+gboolean ScintillaGTKAccessible::AddSelection(int startChar, int endChar) {
+	size_t n_selections = sci->sel.Count();
+	Sci::Position startByte, endByte;
+	ByteRangeFromCharacterRange(startChar, endChar, startByte, endByte);
+	// use WndProc() to set the selections so it notifies as needed
+	if (n_selections > 1 || ! sci->sel.Empty()) {
+		sci->WndProc(SCI_ADDSELECTION, startByte, endByte);
+	} else {
+		sci->WndProc(SCI_SETSELECTION, startByte, endByte);
+	}
+
+	return TRUE;
+}
+
+gboolean ScintillaGTKAccessible::RemoveSelection(gint selection_num) {
+	size_t n_selections = sci->sel.Count();
+	if (selection_num < 0 || (unsigned int) selection_num >= n_selections)
+		return FALSE;
+
+	if (n_selections > 1) {
+		sci->WndProc(SCI_DROPSELECTIONN, selection_num, 0);
+	} else if (sci->sel.Empty()) {
+		return FALSE;
+	} else {
+		sci->WndProc(SCI_CLEARSELECTIONS, 0, 0);
+	}
+
+	return TRUE;
+}
+
+gboolean ScintillaGTKAccessible::SetSelection(gint selection_num, int startChar, int endChar) {
+	if (selection_num < 0 || (unsigned int) selection_num >= sci->sel.Count())
+		return FALSE;
+
+	Sci::Position startByte, endByte;
+	ByteRangeFromCharacterRange(startChar, endChar, startByte, endByte);
+
+	sci->WndProc(SCI_SETSELECTIONNSTART, selection_num, startByte);
+	sci->WndProc(SCI_SETSELECTIONNEND, selection_num, endByte);
+
+	return TRUE;
+}
+
+void ScintillaGTKAccessible::AtkTextIface::init(::AtkTextIface *iface) {
+	iface->get_text = GetText;
+	iface->get_text_after_offset = GetTextAfterOffset;
+	iface->get_text_at_offset = GetTextAtOffset;
+	iface->get_text_before_offset = GetTextBeforeOffset;
+#if ATK_CHECK_VERSION(2, 10, 0)
+	iface->get_string_at_offset = GetStringAtOffset;
+#endif
+	iface->get_character_at_offset = GetCharacterAtOffset;
+	iface->get_character_count = GetCharacterCount;
+	iface->get_caret_offset = GetCaretOffset;
+	iface->set_caret_offset = SetCaretOffset;
+	iface->get_offset_at_point = GetOffsetAtPoint;
+	iface->get_character_extents = GetCharacterExtents;
+	iface->get_n_selections = GetNSelections;
+	iface->get_selection = GetSelection;
+	iface->add_selection = AddSelection;
+	iface->remove_selection = RemoveSelection;
+	iface->set_selection = SetSelection;
+	iface->get_run_attributes = GetRunAttributes;
+	iface->get_default_attributes = GetDefaultAttributes;
+}
+
+/* atkeditabletext.h */
+
+void ScintillaGTKAccessible::SetTextContents(const gchar *contents) {
+	// FIXME: it's probably useless to check for READONLY here, SETTEXT probably does it just fine?
+	if (! sci->pdoc->IsReadOnly()) {
+		sci->WndProc(SCI_SETTEXT, 0, (sptr_t) contents);
+	}
+}
+
+bool ScintillaGTKAccessible::InsertStringUTF8(Sci::Position bytePos, const gchar *utf8, Sci::Position lengthBytes) {
+	if (sci->pdoc->IsReadOnly()) {
+		return false;
+	}
+
+	// like EncodedFromUTF8(), but avoids an extra copy
+	// FIXME: update target?
+	const char *charSetBuffer;
+	if (sci->IsUnicodeMode() || ! *(charSetBuffer = sci->CharacterSetID())) {
+		sci->pdoc->InsertString(bytePos, utf8, lengthBytes);
+	} else {
+		// conversion needed
+		std::string encoded = ConvertText(utf8, lengthBytes, charSetBuffer, "UTF-8", true);
+		sci->pdoc->InsertString(bytePos, encoded.c_str(), encoded.length());
+	}
+
+	return true;
+}
+
+void ScintillaGTKAccessible::InsertText(const gchar *text, int lengthBytes, int *charPosition) {
+	Sci::Position bytePosition = ByteOffsetFromCharacterOffset(*charPosition);
+
+	// FIXME: should we update the target?
+	if (InsertStringUTF8(bytePosition, text, lengthBytes)) {
+		(*charPosition) += sci->pdoc->CountCharacters(bytePosition, lengthBytes);
+	}
+}
+
+void ScintillaGTKAccessible::CopyText(int startChar, int endChar) {
+	Sci::Position startByte, endByte;
+	ByteRangeFromCharacterRange(startChar, endChar, startByte, endByte);
+	sci->CopyRangeToClipboard(startByte, endByte);
+}
+
+void ScintillaGTKAccessible::CutText(int startChar, int endChar) {
+	g_return_if_fail(endChar >= startChar);
+
+	if (! sci->pdoc->IsReadOnly()) {
+		// FIXME: have a byte variant of those and convert only once?
+		CopyText(startChar, endChar);
+		DeleteText(startChar, endChar);
+	}
+}
+
+void ScintillaGTKAccessible::DeleteText(int startChar, int endChar) {
+	g_return_if_fail(endChar >= startChar);
+
+	if (! sci->pdoc->IsReadOnly()) {
+		Sci::Position startByte, endByte;
+		ByteRangeFromCharacterRange(startChar, endChar, startByte, endByte);
+
+		if (! sci->RangeContainsProtected(startByte, endByte)) {
+			// FIXME: restore the target?
+			sci->pdoc->DeleteChars(startByte, endByte - startByte);
+		}
+	}
+}
+
+void ScintillaGTKAccessible::PasteText(int charPosition) {
+	if (sci->pdoc->IsReadOnly())
+		return;
+
+	// Helper class holding the position for the asynchronous paste operation.
+	// We can only hope that when the callback gets called scia is still valid, but ScintillaGTK
+	// has always done that without problems, so let's guess it's a fairly safe bet.
+	struct Helper : GObjectWatcher {
+		ScintillaGTKAccessible *scia;
+		Sci::Position bytePosition;
+
+		void Destroyed() override {
+			scia = 0;
+		}
+
+		Helper(ScintillaGTKAccessible *scia_, Sci::Position bytePos_) :
+			GObjectWatcher(G_OBJECT(scia_->sci->sci)),
+			scia(scia_),
+			bytePosition(bytePos_) {
+		}
+
+		void TextReceived(GtkClipboard *, const gchar *text) {
+			if (text) {
+				size_t len = strlen(text);
+				std::string convertedText;
+				if (len > 0 && scia->sci->convertPastes) {
+					// Convert line endings of the paste into our local line-endings mode
+					convertedText = Document::TransformLineEnds(text, len, scia->sci->pdoc->eolMode);
+					len = convertedText.length();
+					text = convertedText.c_str();
+				}
+				scia->InsertStringUTF8(bytePosition, text, static_cast<Sci::Position>(len));
+			}
+		}
+
+		static void TextReceivedCallback(GtkClipboard *clipboard, const gchar *text, gpointer data) {
+			Helper *helper = static_cast<Helper*>(data);
+			try {
+				if (helper->scia != 0) {
+					helper->TextReceived(clipboard, text);
+				}
+			} catch (...) {}
+			delete helper;
+		}
+	};
+
+	Helper *helper = new Helper(this, ByteOffsetFromCharacterOffset(charPosition));
+	GtkWidget *widget = gtk_accessible_get_widget(accessible);
+	GtkClipboard *clipboard = gtk_widget_get_clipboard(widget, GDK_SELECTION_CLIPBOARD);
+	gtk_clipboard_request_text(clipboard, helper->TextReceivedCallback, helper);
+}
+
+void ScintillaGTKAccessible::AtkEditableTextIface::init(::AtkEditableTextIface *iface) {
+	iface->set_text_contents = SetTextContents;
+	iface->insert_text = InsertText;
+	iface->copy_text = CopyText;
+	iface->cut_text = CutText;
+	iface->delete_text = DeleteText;
+	iface->paste_text = PasteText;
+	//~ iface->set_run_attributes = SetRunAttributes;
+}
+
+bool ScintillaGTKAccessible::Enabled() const {
+	return sci->accessibilityEnabled == SC_ACCESSIBILITY_ENABLED;
+}
+
+// Callbacks
+
+void ScintillaGTKAccessible::UpdateCursor() {
+	Sci::Position pos = sci->WndProc(SCI_GETCURRENTPOS, 0, 0);
+	if (old_pos != pos) {
+		int charPosition = CharacterOffsetFromByteOffset(pos);
+		g_signal_emit_by_name(accessible, "text-caret-moved", charPosition);
+		old_pos = pos;
+	}
+
+	size_t n_selections = sci->sel.Count();
+	size_t prev_n_selections = old_sels.size();
+	bool selection_changed = n_selections != prev_n_selections;
+
+	old_sels.resize(n_selections);
+	for (size_t i = 0; i < n_selections; i++) {
+		SelectionRange &sel = sci->sel.Range(i);
+
+		if (i < prev_n_selections && ! selection_changed) {
+			SelectionRange &old_sel = old_sels[i];
+			// do not consider a caret move to be a selection change
+			selection_changed = ((! old_sel.Empty() || ! sel.Empty()) && ! (old_sel == sel));
+		}
+
+		old_sels[i] = sel;
+	}
+
+	if (selection_changed)
+		g_signal_emit_by_name(accessible, "text-selection-changed");
+}
+
+void ScintillaGTKAccessible::ChangeDocument(Document *oldDoc, Document *newDoc) {
+	if (!Enabled()) {
+		return;
+	}
+
+	if (oldDoc == newDoc) {
+		return;
+	}
+
+	if (oldDoc) {
+		int charLength = oldDoc->CountCharacters(0, oldDoc->Length());
+		g_signal_emit_by_name(accessible, "text-changed::delete", 0, charLength);
+	}
+
+	if (newDoc) {
+		PLATFORM_ASSERT(newDoc == sci->pdoc);
+
+		int charLength = newDoc->CountCharacters(0, newDoc->Length());
+		g_signal_emit_by_name(accessible, "text-changed::insert", 0, charLength);
+
+		if ((oldDoc ? oldDoc->IsReadOnly() : false) != newDoc->IsReadOnly()) {
+			NotifyReadOnly();
+		}
+
+		// update cursor and selection
+		old_pos = -1;
+		old_sels.clear();
+		UpdateCursor();
+	}
+}
+
+void ScintillaGTKAccessible::NotifyReadOnly() {
+	bool readonly = sci->pdoc->IsReadOnly();
+	atk_object_notify_state_change(ATK_OBJECT(accessible), ATK_STATE_EDITABLE, ! readonly);
+#if ATK_CHECK_VERSION(2, 16, 0)
+	atk_object_notify_state_change(ATK_OBJECT(accessible), ATK_STATE_READ_ONLY, readonly);
+#endif
+}
+
+void ScintillaGTKAccessible::SetAccessibility() {
+	// Called by ScintillaGTK when application has enabled or disabled accessibility
+	character_offsets.resize(0);
+	character_offsets.push_back(0);
+}
+
+void ScintillaGTKAccessible::Notify(GtkWidget *, gint, SCNotification *nt) {
+	if (!Enabled())
+		return;
+	switch (nt->nmhdr.code) {
+		case SCN_MODIFIED: {
+			if (nt->modificationType & (SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT)) {
+				// invalidate character offset cache if applicable
+				const Sci::Line line = sci->pdoc->LineFromPosition(nt->position);
+				if (character_offsets.size() > static_cast<size_t>(line + 1)) {
+					character_offsets.resize(line + 1);
+				}
+			}
+			if (nt->modificationType & SC_MOD_INSERTTEXT) {
+				int startChar = CharacterOffsetFromByteOffset(nt->position);
+				int lengthChar = sci->pdoc->CountCharacters(nt->position, nt->position + nt->length);
+				g_signal_emit_by_name(accessible, "text-changed::insert", startChar, lengthChar);
+				UpdateCursor();
+			}
+			if (nt->modificationType & SC_MOD_BEFOREDELETE) {
+				// We cannot compute the deletion length in DELETETEXT as it requires accessing the
+				// buffer, so that the character are still present.  So, we cache the value here,
+				// and use it in DELETETEXT that fires quickly after.
+				deletionLengthChar = sci->pdoc->CountCharacters(nt->position, nt->position + nt->length);
+			}
+			if (nt->modificationType & SC_MOD_DELETETEXT) {
+				int startChar = CharacterOffsetFromByteOffset(nt->position);
+				g_signal_emit_by_name(accessible, "text-changed::delete", startChar, deletionLengthChar);
+				UpdateCursor();
+			}
+			if (nt->modificationType & SC_MOD_CHANGESTYLE) {
+				g_signal_emit_by_name(accessible, "text-attributes-changed");
+			}
+		} break;
+		case SCN_UPDATEUI: {
+			if (nt->updated & SC_UPDATE_SELECTION) {
+				UpdateCursor();
+			}
+		} break;
+	}
+}
+
+// ATK method wrappers
+
+// wraps a call from the accessible object to the ScintillaGTKAccessible, and avoid leaking any exception
+#define WRAPPER_METHOD_BODY(accessible, call, defret) \
+	try { \
+		ScintillaGTKAccessible *thisAccessible = FromAccessible(reinterpret_cast<GtkAccessible*>(accessible)); \
+		if (thisAccessible) { \
+			return thisAccessible->call; \
+		} else { \
+			return defret; \
+		} \
+	} catch (...) { \
+		return defret; \
+	}
+
+// AtkText
+gchar *ScintillaGTKAccessible::AtkTextIface::GetText(AtkText *text, int start_offset, int end_offset) {
+	WRAPPER_METHOD_BODY(text, GetText(start_offset, end_offset), NULL);
+}
+gchar *ScintillaGTKAccessible::AtkTextIface::GetTextAfterOffset(AtkText *text, int offset, AtkTextBoundary boundary_type, int *start_offset, int *end_offset) {
+	WRAPPER_METHOD_BODY(text, GetTextAfterOffset(offset, boundary_type, start_offset, end_offset), NULL)
+}
+gchar *ScintillaGTKAccessible::AtkTextIface::GetTextBeforeOffset(AtkText *text, int offset, AtkTextBoundary boundary_type, int *start_offset, int *end_offset) {
+	WRAPPER_METHOD_BODY(text, GetTextBeforeOffset(offset, boundary_type, start_offset, end_offset), NULL)
+}
+gchar *ScintillaGTKAccessible::AtkTextIface::GetTextAtOffset(AtkText *text, gint offset, AtkTextBoundary boundary_type, gint *start_offset, gint *end_offset) {
+	WRAPPER_METHOD_BODY(text, GetTextAtOffset(offset, boundary_type, start_offset, end_offset), NULL)
+}
+#if ATK_CHECK_VERSION(2, 10, 0)
+gchar *ScintillaGTKAccessible::AtkTextIface::GetStringAtOffset(AtkText *text, gint offset, AtkTextGranularity granularity, gint *start_offset, gint *end_offset) {
+	WRAPPER_METHOD_BODY(text, GetStringAtOffset(offset, granularity, start_offset, end_offset), NULL)
+}
+#endif
+gunichar ScintillaGTKAccessible::AtkTextIface::GetCharacterAtOffset(AtkText *text, gint offset) {
+	WRAPPER_METHOD_BODY(text, GetCharacterAtOffset(offset), 0)
+}
+gint ScintillaGTKAccessible::AtkTextIface::GetCharacterCount(AtkText *text) {
+	WRAPPER_METHOD_BODY(text, GetCharacterCount(), 0)
+}
+gint ScintillaGTKAccessible::AtkTextIface::GetCaretOffset(AtkText *text) {
+	WRAPPER_METHOD_BODY(text, GetCaretOffset(), 0)
+}
+gboolean ScintillaGTKAccessible::AtkTextIface::SetCaretOffset(AtkText *text, gint offset) {
+	WRAPPER_METHOD_BODY(text, SetCaretOffset(offset), FALSE)
+}
+gint ScintillaGTKAccessible::AtkTextIface::GetOffsetAtPoint(AtkText *text, gint x, gint y, AtkCoordType coords) {
+	WRAPPER_METHOD_BODY(text, GetOffsetAtPoint(x, y, coords), -1)
+}
+void ScintillaGTKAccessible::AtkTextIface::GetCharacterExtents(AtkText *text, gint offset, gint *x, gint *y, gint *width, gint *height, AtkCoordType coords) {
+	WRAPPER_METHOD_BODY(text, GetCharacterExtents(offset, x, y, width, height, coords), )
+}
+AtkAttributeSet *ScintillaGTKAccessible::AtkTextIface::GetRunAttributes(AtkText *text, gint offset, gint *start_offset, gint *end_offset) {
+	WRAPPER_METHOD_BODY(text, GetRunAttributes(offset, start_offset, end_offset), NULL)
+}
+AtkAttributeSet *ScintillaGTKAccessible::AtkTextIface::GetDefaultAttributes(AtkText *text) {
+	WRAPPER_METHOD_BODY(text, GetDefaultAttributes(), NULL)
+}
+gint ScintillaGTKAccessible::AtkTextIface::GetNSelections(AtkText *text) {
+	WRAPPER_METHOD_BODY(text, GetNSelections(), 0)
+}
+gchar *ScintillaGTKAccessible::AtkTextIface::GetSelection(AtkText *text, gint selection_num, gint *start_pos, gint *end_pos) {
+	WRAPPER_METHOD_BODY(text, GetSelection(selection_num, start_pos, end_pos), NULL)
+}
+gboolean ScintillaGTKAccessible::AtkTextIface::AddSelection(AtkText *text, gint start, gint end) {
+	WRAPPER_METHOD_BODY(text, AddSelection(start, end), FALSE)
+}
+gboolean ScintillaGTKAccessible::AtkTextIface::RemoveSelection(AtkText *text, gint selection_num) {
+	WRAPPER_METHOD_BODY(text, RemoveSelection(selection_num), FALSE)
+}
+gboolean ScintillaGTKAccessible::AtkTextIface::SetSelection(AtkText *text, gint selection_num, gint start, gint end) {
+	WRAPPER_METHOD_BODY(text, SetSelection(selection_num, start, end), FALSE)
+}
+// AtkEditableText
+void ScintillaGTKAccessible::AtkEditableTextIface::SetTextContents(AtkEditableText *text, const gchar *contents) {
+	WRAPPER_METHOD_BODY(text, SetTextContents(contents), )
+}
+void ScintillaGTKAccessible::AtkEditableTextIface::InsertText(AtkEditableText *text, const gchar *contents, gint length, gint *position) {
+	WRAPPER_METHOD_BODY(text, InsertText(contents, length, position), )
+}
+void ScintillaGTKAccessible::AtkEditableTextIface::CopyText(AtkEditableText *text, gint start, gint end) {
+	WRAPPER_METHOD_BODY(text, CopyText(start, end), )
+}
+void ScintillaGTKAccessible::AtkEditableTextIface::CutText(AtkEditableText *text, gint start, gint end) {
+	WRAPPER_METHOD_BODY(text, CutText(start, end), )
+}
+void ScintillaGTKAccessible::AtkEditableTextIface::DeleteText(AtkEditableText *text, gint start, gint end) {
+	WRAPPER_METHOD_BODY(text, DeleteText(start, end), )
+}
+void ScintillaGTKAccessible::AtkEditableTextIface::PasteText(AtkEditableText *text, gint position) {
+	WRAPPER_METHOD_BODY(text, PasteText(position), )
+}
+
+// GObject glue
+
+#if HAVE_GTK_FACTORY
+static GType scintilla_object_accessible_factory_get_type(void);
+#endif
+
+static void scintilla_object_accessible_init(ScintillaObjectAccessible *accessible);
+static void scintilla_object_accessible_class_init(ScintillaObjectAccessibleClass *klass);
+static gpointer scintilla_object_accessible_parent_class = NULL;
+
+
+// @p parent_type is only required on GTK 3.2 to 3.6, and only on the first call
+static GType scintilla_object_accessible_get_type(GType parent_type G_GNUC_UNUSED) {
+	static volatile gsize type_id_result = 0;
+
+	if (g_once_init_enter(&type_id_result)) {
+		GTypeInfo tinfo = {
+			0,															/* class size */
+			(GBaseInitFunc) NULL,										/* base init */
+			(GBaseFinalizeFunc) NULL,									/* base finalize */
+			(GClassInitFunc) scintilla_object_accessible_class_init,	/* class init */
+			(GClassFinalizeFunc) NULL,									/* class finalize */
+			NULL,														/* class data */
+			0,															/* instance size */
+			0,															/* nb preallocs */
+			(GInstanceInitFunc) scintilla_object_accessible_init,		/* instance init */
+			NULL														/* value table */
+		};
+
+		const GInterfaceInfo atk_text_info = {
+			(GInterfaceInitFunc) ScintillaGTKAccessible::AtkTextIface::init,
+			(GInterfaceFinalizeFunc) NULL,
+			NULL
+		};
+
+		const GInterfaceInfo atk_editable_text_info = {
+			(GInterfaceInitFunc) ScintillaGTKAccessible::AtkEditableTextIface::init,
+			(GInterfaceFinalizeFunc) NULL,
+			NULL
+		};
+
+#if HAVE_GTK_A11Y_H
+		// good, we have gtk-a11y.h, we can use that
+		GType derived_atk_type = GTK_TYPE_CONTAINER_ACCESSIBLE;
+		tinfo.class_size = sizeof (GtkContainerAccessibleClass);
+		tinfo.instance_size = sizeof (GtkContainerAccessible);
+#else // ! HAVE_GTK_A11Y_H
+# if HAVE_GTK_FACTORY
+		// Figure out the size of the class and instance we are deriving from through the registry
+		GType derived_type = g_type_parent(SCINTILLA_TYPE_OBJECT);
+		AtkObjectFactory *factory = atk_registry_get_factory(atk_get_default_registry(), derived_type);
+		GType derived_atk_type = atk_object_factory_get_accessible_type(factory);
+# else // ! HAVE_GTK_FACTORY
+		// We're kind of screwed and can't determine the parent (no registry, and no public type)
+		// Hack your way around by requiring the caller to give us our parent type.  The caller
+		// might be able to trick its way into doing that, by e.g. instantiating the parent's
+		// accessible type and get its GType.  It's ugly but we can't do better on GTK 3.2 to 3.6.
+		g_assert(parent_type != 0);
+
+		GType derived_atk_type = parent_type;
+# endif // ! HAVE_GTK_FACTORY
+
+		GTypeQuery query;
+		g_type_query(derived_atk_type, &query);
+		tinfo.class_size = query.class_size;
+		tinfo.instance_size = query.instance_size;
+#endif // ! HAVE_GTK_A11Y_H
+
+		GType type_id = g_type_register_static(derived_atk_type, "ScintillaObjectAccessible", &tinfo, (GTypeFlags) 0);
+		g_type_add_interface_static(type_id, ATK_TYPE_TEXT, &atk_text_info);
+		g_type_add_interface_static(type_id, ATK_TYPE_EDITABLE_TEXT, &atk_editable_text_info);
+
+		g_once_init_leave(&type_id_result, type_id);
+	}
+
+	return type_id_result;
+}
+
+static AtkObject *scintilla_object_accessible_new(GType parent_type, GObject *obj) {
+	g_return_val_if_fail(SCINTILLA_IS_OBJECT(obj), NULL);
+
+	AtkObject *accessible = (AtkObject *) g_object_new(scintilla_object_accessible_get_type(parent_type),
+#if HAVE_WIDGET_SET_UNSET
+		"widget", obj,
+#endif
+		NULL);
+	atk_object_initialize(accessible, obj);
+
+	return accessible;
+}
+
+// implementation for gtk_widget_get_accessible().
+// See the comment at the top of the file for details on the implementation
+// @p widget the widget.
+// @p cache pointer to store the AtkObject between repeated calls.  Might or might not be filled.
+// @p widget_parent_class pointer to the widget's parent class (to chain up method calls).
+AtkObject *ScintillaGTKAccessible::WidgetGetAccessibleImpl(GtkWidget *widget, AtkObject **cache, gpointer widget_parent_class G_GNUC_UNUSED) {
+	if (*cache != NULL) {
+		return *cache;
+	}
+
+#if HAVE_GTK_A11Y_H // just instantiate the accessible
+	*cache = scintilla_object_accessible_new(0, G_OBJECT(widget));
+#elif HAVE_GTK_FACTORY // register in the factory and let GTK instantiate
+	static volatile gsize registered = 0;
+
+	if (g_once_init_enter(&registered)) {
+		// Figure out whether accessibility is enabled by looking at the type of the accessible
+		// object which would be created for the parent type of ScintillaObject.
+		GType derived_type = g_type_parent(SCINTILLA_TYPE_OBJECT);
+
+		AtkRegistry *registry = atk_get_default_registry();
+		AtkObjectFactory *factory = atk_registry_get_factory(registry, derived_type);
+		GType derived_atk_type = atk_object_factory_get_accessible_type(factory);
+		if (g_type_is_a(derived_atk_type, GTK_TYPE_ACCESSIBLE)) {
+			atk_registry_set_factory_type(registry, SCINTILLA_TYPE_OBJECT,
+			                              scintilla_object_accessible_factory_get_type());
+		}
+		g_once_init_leave(&registered, 1);
+	}
+	AtkObject *obj = GTK_WIDGET_CLASS(widget_parent_class)->get_accessible(widget);
+	*cache = static_cast<AtkObject*>(g_object_ref(obj));
+#else // no public API, no factory, so guess from the parent and instantiate
+	static GType parent_atk_type = 0;
+
+	if (parent_atk_type == 0) {
+		AtkObject *parent_obj = GTK_WIDGET_CLASS(widget_parent_class)->get_accessible(widget);
+		if (parent_obj) {
+			GType parent_atk_type = G_OBJECT_TYPE(parent_obj);
+
+			// Figure out whether accessibility is enabled by looking at the type of the accessible
+			// object which would be created for the parent type of ScintillaObject.
+			if (g_type_is_a(parent_atk_type, GTK_TYPE_ACCESSIBLE)) {
+				*cache = scintilla_object_accessible_new(parent_atk_type, G_OBJECT(widget));
+			} else {
+				*cache = static_cast<AtkObject*>(g_object_ref(parent_obj));
+			}
+		}
+	}
+#endif
+	return *cache;
+}
+
+static AtkStateSet *scintilla_object_accessible_ref_state_set(AtkObject *accessible) {
+	AtkStateSet *state_set = ATK_OBJECT_CLASS(scintilla_object_accessible_parent_class)->ref_state_set(accessible);
+
+	GtkWidget *widget = gtk_accessible_get_widget(GTK_ACCESSIBLE(accessible));
+	if (widget == NULL) {
+		atk_state_set_add_state(state_set, ATK_STATE_DEFUNCT);
+	} else {
+		if (! scintilla_send_message(SCINTILLA_OBJECT(widget), SCI_GETREADONLY, 0, 0))
+			atk_state_set_add_state(state_set, ATK_STATE_EDITABLE);
+#if ATK_CHECK_VERSION(2, 16, 0)
+		else
+			atk_state_set_add_state(state_set, ATK_STATE_READ_ONLY);
+#endif
+		atk_state_set_add_state(state_set, ATK_STATE_MULTI_LINE);
+		atk_state_set_add_state(state_set, ATK_STATE_MULTISELECTABLE);
+		atk_state_set_add_state(state_set, ATK_STATE_SELECTABLE_TEXT);
+		/*atk_state_set_add_state(state_set, ATK_STATE_SUPPORTS_AUTOCOMPLETION);*/
+	}
+
+	return state_set;
+}
+
+static void scintilla_object_accessible_widget_set(GtkAccessible *accessible) {
+	GtkWidget *widget = gtk_accessible_get_widget(accessible);
+	if (widget == NULL)
+		return;
+
+	ScintillaObjectAccessiblePrivate *priv = SCINTILLA_OBJECT_ACCESSIBLE_GET_PRIVATE(accessible);
+	if (priv->pscin != 0)
+		delete priv->pscin;
+	priv->pscin = new ScintillaGTKAccessible(accessible, widget);
+}
+
+#if HAVE_WIDGET_SET_UNSET
+static void scintilla_object_accessible_widget_unset(GtkAccessible *accessible) {
+	GtkWidget *widget = gtk_accessible_get_widget(accessible);
+	if (widget == NULL)
+		return;
+
+	ScintillaObjectAccessiblePrivate *priv = SCINTILLA_OBJECT_ACCESSIBLE_GET_PRIVATE(accessible);
+	delete priv->pscin;
+	priv->pscin = 0;
+}
+#endif
+
+static void scintilla_object_accessible_initialize(AtkObject *obj, gpointer data) {
+	ATK_OBJECT_CLASS(scintilla_object_accessible_parent_class)->initialize(obj, data);
+
+#if ! HAVE_WIDGET_SET_UNSET
+	scintilla_object_accessible_widget_set(GTK_ACCESSIBLE(obj));
+#endif
+
+	obj->role = ATK_ROLE_TEXT;
+}
+
+static void scintilla_object_accessible_finalize(GObject *object) {
+	ScintillaObjectAccessiblePrivate *priv = SCINTILLA_OBJECT_ACCESSIBLE_GET_PRIVATE(object);
+
+	if (priv->pscin) {
+		delete priv->pscin;
+		priv->pscin = 0;
+	}
+
+	G_OBJECT_CLASS(scintilla_object_accessible_parent_class)->finalize(object);
+}
+
+static void scintilla_object_accessible_class_init(ScintillaObjectAccessibleClass *klass) {
+	GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+	AtkObjectClass *object_class = ATK_OBJECT_CLASS(klass);
+
+#if HAVE_WIDGET_SET_UNSET
+	GtkAccessibleClass *accessible_class = GTK_ACCESSIBLE_CLASS(klass);
+	accessible_class->widget_set = scintilla_object_accessible_widget_set;
+	accessible_class->widget_unset = scintilla_object_accessible_widget_unset;
+#endif
+
+	object_class->ref_state_set = scintilla_object_accessible_ref_state_set;
+	object_class->initialize = scintilla_object_accessible_initialize;
+
+	gobject_class->finalize = scintilla_object_accessible_finalize;
+
+	scintilla_object_accessible_parent_class = g_type_class_peek_parent(klass);
+
+	g_type_class_add_private(klass, sizeof (ScintillaObjectAccessiblePrivate));
+}
+
+static void scintilla_object_accessible_init(ScintillaObjectAccessible *accessible) {
+	ScintillaObjectAccessiblePrivate *priv = SCINTILLA_OBJECT_ACCESSIBLE_GET_PRIVATE(accessible);
+
+	priv->pscin = 0;
+}
+
+#if HAVE_GTK_FACTORY
+// Object factory
+typedef AtkObjectFactory ScintillaObjectAccessibleFactory;
+typedef AtkObjectFactoryClass ScintillaObjectAccessibleFactoryClass;
+
+G_DEFINE_TYPE(ScintillaObjectAccessibleFactory, scintilla_object_accessible_factory, ATK_TYPE_OBJECT_FACTORY)
+
+static void scintilla_object_accessible_factory_init(ScintillaObjectAccessibleFactory *) {
+}
+
+static GType scintilla_object_accessible_factory_get_accessible_type(void) {
+	return SCINTILLA_TYPE_OBJECT_ACCESSIBLE;
+}
+
+static AtkObject *scintilla_object_accessible_factory_create_accessible(GObject *obj) {
+	return scintilla_object_accessible_new(0, obj);
+}
+
+static void scintilla_object_accessible_factory_class_init(AtkObjectFactoryClass * klass) {
+	klass->create_accessible = scintilla_object_accessible_factory_create_accessible;
+	klass->get_accessible_type = scintilla_object_accessible_factory_get_accessible_type;
+}
+#endif

+ 192 - 0
maxguitextareascintilla.mod/scintilla/gtk/ScintillaGTKAccessible.h

@@ -0,0 +1,192 @@
+/* Scintilla source code edit control */
+/* ScintillaGTKAccessible.h - GTK+ accessibility for ScintillaGTK */
+/* Copyright 2016 by Colomban Wendling <[email protected]>
+ * The License.txt file describes the conditions under which this software may be distributed. */
+
+#ifndef SCINTILLAGTKACCESSIBLE_H
+#define SCINTILLAGTKACCESSIBLE_H
+
+namespace Scintilla {
+
+#ifndef ATK_CHECK_VERSION
+# define ATK_CHECK_VERSION(x, y, z) 0
+#endif
+
+class ScintillaGTKAccessible {
+private:
+	// weak references to related objects
+	GtkAccessible *accessible;
+	ScintillaGTK *sci;
+
+	// cache holding character offset for each line start, see CharacterOffsetFromByteOffset()
+	std::vector<Sci::Position> character_offsets;
+
+	// cached length of the deletion, in characters (see Notify())
+	int deletionLengthChar;
+	// local state for comparing
+	Sci::Position old_pos;
+	std::vector<SelectionRange> old_sels;
+
+	bool Enabled() const;
+	void UpdateCursor();
+	void Notify(GtkWidget *widget, gint code, SCNotification *nt);
+	static void SciNotify(GtkWidget *widget, gint code, SCNotification *nt, gpointer data) {
+		try {
+			static_cast<ScintillaGTKAccessible*>(data)->Notify(widget, code, nt);
+		} catch (...) {}
+	}
+
+	Sci::Position ByteOffsetFromCharacterOffset(Sci::Position startByte, int characterOffset) {
+		Sci::Position pos = sci->pdoc->GetRelativePosition(startByte, characterOffset);
+		if (pos == INVALID_POSITION) {
+			// clamp invalid positions inside the document
+			if (characterOffset > 0) {
+				return sci->pdoc->Length();
+			} else {
+				return 0;
+			}
+		}
+		return pos;
+	}
+
+	Sci::Position ByteOffsetFromCharacterOffset(Sci::Position characterOffset) {
+		return ByteOffsetFromCharacterOffset(0, characterOffset);
+	}
+
+	Sci::Position CharacterOffsetFromByteOffset(Sci::Position byteOffset) {
+		const Sci::Line line = sci->pdoc->LineFromPosition(byteOffset);
+		if (character_offsets.size() <= static_cast<size_t>(line)) {
+			if (character_offsets.empty())
+				character_offsets.push_back(0);
+			for (Sci::Position i = character_offsets.size(); i <= line; i++) {
+				const Sci::Position start = sci->pdoc->LineStart(i - 1);
+				const Sci::Position end = sci->pdoc->LineStart(i);
+				character_offsets.push_back(character_offsets[i - 1] + sci->pdoc->CountCharacters(start, end));
+			}
+		}
+		const Sci::Position lineStart = sci->pdoc->LineStart(line);
+		return character_offsets[line] + sci->pdoc->CountCharacters(lineStart, byteOffset);
+	}
+
+	void CharacterRangeFromByteRange(Sci::Position startByte, Sci::Position endByte, int *startChar, int *endChar) {
+		*startChar = CharacterOffsetFromByteOffset(startByte);
+		*endChar = *startChar + sci->pdoc->CountCharacters(startByte, endByte);
+	}
+
+	void ByteRangeFromCharacterRange(int startChar, int endChar, Sci::Position& startByte, Sci::Position& endByte) {
+		startByte = ByteOffsetFromCharacterOffset(startChar);
+		endByte = ByteOffsetFromCharacterOffset(startByte, endChar - startChar);
+	}
+
+	Sci::Position PositionBefore(Sci::Position pos) {
+		return sci->pdoc->MovePositionOutsideChar(pos - 1, -1, true);
+	}
+
+	Sci::Position PositionAfter(Sci::Position pos) {
+		return sci->pdoc->MovePositionOutsideChar(pos + 1, 1, true);
+	}
+
+	int StyleAt(Sci::Position position, bool ensureStyle = false) {
+		if (ensureStyle)
+			sci->pdoc->EnsureStyledTo(position);
+		return sci->pdoc->StyleAt(position);
+	}
+
+	// For AtkText
+	gchar *GetTextRangeUTF8(Sci::Position startByte, Sci::Position endByte);
+	gchar *GetText(int startChar, int endChar);
+	gchar *GetTextAfterOffset(int charOffset, AtkTextBoundary boundaryType, int *startChar, int *endChar);
+	gchar *GetTextBeforeOffset(int charOffset, AtkTextBoundary boundaryType, int *startChar, int *endChar);
+	gchar *GetTextAtOffset(int charOffset, AtkTextBoundary boundaryType, int *startChar, int *endChar);
+#if ATK_CHECK_VERSION(2, 10, 0)
+	gchar *GetStringAtOffset(int charOffset, AtkTextGranularity granularity, int *startChar, int *endChar);
+#endif
+	gunichar GetCharacterAtOffset(int charOffset);
+	gint GetCharacterCount();
+	gint GetCaretOffset();
+	gboolean SetCaretOffset(int charOffset);
+	gint GetOffsetAtPoint(gint x, gint y, AtkCoordType coords);
+	void GetCharacterExtents(int charOffset, gint *x, gint *y, gint *width, gint *height, AtkCoordType coords);
+	AtkAttributeSet *GetAttributesForStyle(unsigned int styleNum);
+	AtkAttributeSet *GetRunAttributes(int charOffset, int *startChar, int *endChar);
+	AtkAttributeSet *GetDefaultAttributes();
+	gint GetNSelections();
+	gchar *GetSelection(gint selection_num, int *startChar, int *endChar);
+	gboolean AddSelection(int startChar, int endChar);
+	gboolean RemoveSelection(int selection_num);
+	gboolean SetSelection(gint selection_num, int startChar, int endChar);
+	// for AtkEditableText
+	bool InsertStringUTF8(Sci::Position bytePos, const gchar *utf8, Sci::Position lengthBytes);
+	void SetTextContents(const gchar *contents);
+	void InsertText(const gchar *text, int lengthBytes, int *charPosition);
+	void CopyText(int startChar, int endChar);
+	void CutText(int startChar, int endChar);
+	void DeleteText(int startChar, int endChar);
+	void PasteText(int charPosition);
+
+public:
+	ScintillaGTKAccessible(GtkAccessible *accessible_, GtkWidget *widget_);
+	~ScintillaGTKAccessible();
+
+	static ScintillaGTKAccessible *FromAccessible(GtkAccessible *accessible);
+	static ScintillaGTKAccessible *FromAccessible(AtkObject *accessible) {
+		return FromAccessible(GTK_ACCESSIBLE(accessible));
+	}
+	// So ScintillaGTK can notify us
+	void ChangeDocument(Document *oldDoc, Document *newDoc);
+	void NotifyReadOnly();
+	void SetAccessibility();
+
+	// Helper GtkWidget methods
+	static AtkObject *WidgetGetAccessibleImpl(GtkWidget *widget, AtkObject **cache, gpointer widget_parent_class);
+
+	// ATK methods
+
+	class AtkTextIface {
+	public:
+		static void init(::AtkTextIface *iface);
+
+	private:
+		AtkTextIface();
+
+		static gchar *GetText(AtkText *text, int start_offset, int end_offset);
+		static gchar *GetTextAfterOffset(AtkText *text, int offset, AtkTextBoundary boundary_type, int *start_offset, int *end_offset);
+		static gchar *GetTextBeforeOffset(AtkText *text, int offset, AtkTextBoundary boundary_type, int *start_offset, int *end_offset);
+		static gchar *GetTextAtOffset(AtkText *text, gint offset, AtkTextBoundary boundary_type, gint *start_offset, gint *end_offset);
+#if ATK_CHECK_VERSION(2, 10, 0)
+		static gchar *GetStringAtOffset(AtkText *text, gint offset, AtkTextGranularity granularity, gint *start_offset, gint *end_offset);
+#endif
+		static gunichar GetCharacterAtOffset(AtkText *text, gint offset);
+		static gint GetCharacterCount(AtkText *text);
+		static gint GetCaretOffset(AtkText *text);
+		static gboolean SetCaretOffset(AtkText *text, gint offset);
+		static gint GetOffsetAtPoint(AtkText *text, gint x, gint y, AtkCoordType coords);
+		static void GetCharacterExtents(AtkText *text, gint offset, gint *x, gint *y, gint *width, gint *height, AtkCoordType coords);
+		static AtkAttributeSet *GetRunAttributes(AtkText *text, gint offset, gint *start_offset, gint *end_offset);
+		static AtkAttributeSet *GetDefaultAttributes(AtkText *text);
+		static gint GetNSelections(AtkText *text);
+		static gchar *GetSelection(AtkText *text, gint selection_num, gint *start_pos, gint *end_pos);
+		static gboolean AddSelection(AtkText *text, gint start, gint end);
+		static gboolean RemoveSelection(AtkText *text, gint selection_num);
+		static gboolean SetSelection(AtkText *text, gint selection_num, gint start, gint end);
+	};
+	class AtkEditableTextIface {
+	public:
+		static void init(::AtkEditableTextIface *iface);
+
+	private:
+		AtkEditableTextIface();
+
+		static void SetTextContents(AtkEditableText *text, const gchar *contents);
+		static void InsertText(AtkEditableText *text, const gchar *contents, gint length, gint *position);
+		static void CopyText(AtkEditableText *text, gint start, gint end);
+		static void CutText(AtkEditableText *text, gint start, gint end);
+		static void DeleteText(AtkEditableText *text, gint start, gint end);
+		static void PasteText(AtkEditableText *text, gint position);
+	};
+};
+
+}
+
+
+#endif /* SCINTILLAGTKACCESSIBLE_H */

+ 151 - 103
maxguitextareascintilla.mod/scintilla/gtk/deps.mak

@@ -3,29 +3,44 @@ PlatGTK.o: PlatGTK.cxx \
  ../include/ScintillaWidget.h ../lexlib/StringCopy.h ../src/XPM.h \
  ../src/UniConversion.h Converter.h
 ScintillaGTK.o: ScintillaGTK.cxx \
- ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../include/ScintillaWidget.h ../include/SciLexer.h \
- ../lexlib/StringCopy.h ../lexlib/LexerModule.h ../src/Position.h \
- ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
- ../src/ContractionState.h ../src/CellBuffer.h ../src/CallTip.h \
- ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h ../src/LineMarker.h \
- ../src/Style.h ../src/ViewStyle.h ../src/CharClassify.h \
- ../src/Decoration.h ../src/CaseFolder.h ../src/Document.h \
- ../src/CaseConvert.h ../src/UniConversion.h ../src/UnicodeFromUTF8.h \
+ ../include/ILoader.h ../include/Sci_Position.h ../include/ILexer.h \
+ ../include/Scintilla.h ../include/ScintillaWidget.h \
+ ../include/SciLexer.h ../lexlib/StringCopy.h ../lexlib/LexerModule.h \
+ ../src/Position.h ../src/UniqueString.h ../src/SplitVector.h \
+ ../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
+ ../src/CellBuffer.h ../src/CallTip.h ../src/KeyMap.h ../src/Indicator.h \
+ ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
+ ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
+ ../src/Document.h ../src/CaseConvert.h ../src/UniConversion.h \
  ../src/Selection.h ../src/PositionCache.h ../src/EditModel.h \
  ../src/MarginView.h ../src/EditView.h ../src/Editor.h \
  ../src/AutoComplete.h ../src/ScintillaBase.h ../src/ExternalLexer.h \
- scintilla-marshal.h Converter.h
+ ScintillaGTK.h scintilla-marshal.h ScintillaGTKAccessible.h Converter.h
+ScintillaGTKAccessible.o: ScintillaGTKAccessible.cxx \
+ ../include/ILoader.h ../include/Sci_Position.h ../include/ILexer.h \
+ ../include/Scintilla.h ../include/ScintillaWidget.h \
+ ../include/SciLexer.h ../lexlib/StringCopy.h ../lexlib/LexerModule.h \
+ ../src/Position.h ../src/UniqueString.h ../src/SplitVector.h \
+ ../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
+ ../src/CellBuffer.h ../src/CallTip.h ../src/KeyMap.h ../src/Indicator.h \
+ ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
+ ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
+ ../src/Document.h ../src/CaseConvert.h ../src/UniConversion.h \
+ ../src/Selection.h ../src/PositionCache.h ../src/EditModel.h \
+ ../src/MarginView.h ../src/EditView.h ../src/Editor.h \
+ ../src/AutoComplete.h ../src/ScintillaBase.h ScintillaGTK.h \
+ ScintillaGTKAccessible.h
 AutoComplete.o: ../src/AutoComplete.cxx ../include/Platform.h \
  ../include/Scintilla.h ../include/Sci_Position.h \
  ../lexlib/CharacterSet.h ../src/Position.h ../src/AutoComplete.h
 CallTip.o: ../src/CallTip.cxx ../include/Platform.h \
- ../include/Scintilla.h ../include/Sci_Position.h ../lexlib/StringCopy.h \
- ../src/Position.h ../src/CallTip.h
+ ../include/Scintilla.h ../include/Sci_Position.h \
+ ../src/IntegerRectangle.h ../lexlib/StringCopy.h ../src/Position.h \
+ ../src/CallTip.h
 CaseConvert.o: ../src/CaseConvert.cxx ../lexlib/StringCopy.h \
- ../src/CaseConvert.h ../src/UniConversion.h ../src/UnicodeFromUTF8.h
-CaseFolder.o: ../src/CaseFolder.cxx ../src/CaseFolder.h \
  ../src/CaseConvert.h ../src/UniConversion.h
+CaseFolder.o: ../src/CaseFolder.cxx ../src/CaseFolder.h \
+ ../src/CaseConvert.h
 Catalogue.o: ../src/Catalogue.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/LexerModule.h ../src/Catalogue.h
@@ -35,65 +50,70 @@ CellBuffer.o: ../src/CellBuffer.cxx ../include/Platform.h \
  ../src/UniConversion.h
 CharClassify.o: ../src/CharClassify.cxx ../src/CharClassify.h
 ContractionState.o: ../src/ContractionState.cxx ../include/Platform.h \
- ../src/Position.h ../src/SplitVector.h ../src/Partitioning.h \
- ../src/RunStyles.h ../src/ContractionState.h
+ ../src/Position.h ../src/UniqueString.h ../src/SplitVector.h \
+ ../src/Partitioning.h ../src/RunStyles.h ../src/SparseVector.h \
+ ../src/ContractionState.h
+DBCS.o: ../src/DBCS.cxx ../src/DBCS.h
 Decoration.o: ../src/Decoration.cxx ../include/Platform.h \
  ../include/Scintilla.h ../include/Sci_Position.h ../src/Position.h \
  ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
  ../src/Decoration.h
-Document.o: ../src/Document.cxx ../include/Platform.h ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h \
- ../lexlib/CharacterSet.h ../src/Position.h ../src/SplitVector.h \
+Document.o: ../src/Document.cxx ../include/Platform.h \
+ ../include/ILoader.h ../include/Sci_Position.h ../include/ILexer.h \
+ ../include/Scintilla.h ../lexlib/CharacterSet.h \
+ ../lexlib/CharacterCategory.h ../src/Position.h ../src/SplitVector.h \
  ../src/Partitioning.h ../src/RunStyles.h ../src/CellBuffer.h \
  ../src/PerLine.h ../src/CharClassify.h ../src/Decoration.h \
  ../src/CaseFolder.h ../src/Document.h ../src/RESearch.h \
- ../src/UniConversion.h ../src/UnicodeFromUTF8.h
+ ../src/UniConversion.h ../src/ElapsedPeriod.h
 EditModel.o: ../src/EditModel.cxx ../include/Platform.h \
- ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../lexlib/StringCopy.h ../src/Position.h ../src/SplitVector.h \
- ../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
- ../src/CellBuffer.h ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h \
- ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/UniConversion.h ../src/Selection.h \
- ../src/PositionCache.h ../src/EditModel.h
-Editor.o: ../src/Editor.cxx ../include/Platform.h ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../lexlib/StringCopy.h \
- ../src/Position.h ../src/SplitVector.h ../src/Partitioning.h \
+ ../include/ILoader.h ../include/Sci_Position.h ../include/ILexer.h \
+ ../include/Scintilla.h ../lexlib/StringCopy.h ../src/Position.h \
+ ../src/UniqueString.h ../src/SplitVector.h ../src/Partitioning.h \
  ../src/RunStyles.h ../src/ContractionState.h ../src/CellBuffer.h \
- ../src/PerLine.h ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h \
- ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/UniConversion.h ../src/Selection.h \
- ../src/PositionCache.h ../src/EditModel.h ../src/MarginView.h \
- ../src/EditView.h ../src/Editor.h
-EditView.o: ../src/EditView.cxx ../include/Platform.h ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../lexlib/StringCopy.h \
- ../src/Position.h ../src/SplitVector.h ../src/Partitioning.h \
+ ../src/KeyMap.h ../src/Indicator.h ../src/LineMarker.h ../src/Style.h \
+ ../src/ViewStyle.h ../src/CharClassify.h ../src/Decoration.h \
+ ../src/CaseFolder.h ../src/Document.h ../src/UniConversion.h \
+ ../src/Selection.h ../src/PositionCache.h ../src/EditModel.h
+EditView.o: ../src/EditView.cxx ../include/Platform.h \
+ ../include/ILoader.h ../include/Sci_Position.h ../include/ILexer.h \
+ ../include/Scintilla.h ../lexlib/StringCopy.h ../lexlib/CharacterSet.h \
+ ../src/Position.h ../src/IntegerRectangle.h ../src/UniqueString.h \
+ ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
+ ../src/ContractionState.h ../src/CellBuffer.h ../src/PerLine.h \
+ ../src/KeyMap.h ../src/Indicator.h ../src/LineMarker.h ../src/Style.h \
+ ../src/ViewStyle.h ../src/CharClassify.h ../src/Decoration.h \
+ ../src/CaseFolder.h ../src/Document.h ../src/UniConversion.h \
+ ../src/Selection.h ../src/PositionCache.h ../src/EditModel.h \
+ ../src/MarginView.h ../src/EditView.h ../src/ElapsedPeriod.h
+Editor.o: ../src/Editor.cxx ../include/Platform.h ../include/ILoader.h \
+ ../include/Sci_Position.h ../include/ILexer.h ../include/Scintilla.h \
+ ../lexlib/StringCopy.h ../lexlib/CharacterSet.h ../src/Position.h \
+ ../src/UniqueString.h ../src/SplitVector.h ../src/Partitioning.h \
  ../src/RunStyles.h ../src/ContractionState.h ../src/CellBuffer.h \
- ../src/PerLine.h ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h \
- ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/UniConversion.h ../src/Selection.h \
- ../src/PositionCache.h ../src/EditModel.h ../src/MarginView.h \
- ../src/EditView.h
+ ../src/PerLine.h ../src/KeyMap.h ../src/Indicator.h ../src/LineMarker.h \
+ ../src/Style.h ../src/ViewStyle.h ../src/CharClassify.h \
+ ../src/Decoration.h ../src/CaseFolder.h ../src/Document.h \
+ ../src/UniConversion.h ../src/Selection.h ../src/PositionCache.h \
+ ../src/EditModel.h ../src/MarginView.h ../src/EditView.h ../src/Editor.h
 ExternalLexer.o: ../src/ExternalLexer.cxx ../include/Platform.h \
  ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
  ../include/SciLexer.h ../lexlib/LexerModule.h ../src/Catalogue.h \
  ../src/ExternalLexer.h
 Indicator.o: ../src/Indicator.cxx ../include/Platform.h \
- ../include/Scintilla.h ../include/Sci_Position.h ../src/Indicator.h \
- ../src/XPM.h
+ ../include/Scintilla.h ../include/Sci_Position.h \
+ ../src/IntegerRectangle.h ../src/Indicator.h ../src/XPM.h
 KeyMap.o: ../src/KeyMap.cxx ../include/Platform.h ../include/Scintilla.h \
  ../include/Sci_Position.h ../src/KeyMap.h
 LineMarker.o: ../src/LineMarker.cxx ../include/Platform.h \
  ../include/Scintilla.h ../include/Sci_Position.h ../lexlib/StringCopy.h \
- ../src/XPM.h ../src/LineMarker.h
+ ../src/IntegerRectangle.h ../src/XPM.h ../src/LineMarker.h
 MarginView.o: ../src/MarginView.cxx ../include/Platform.h \
- ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../lexlib/StringCopy.h ../src/Position.h ../src/SplitVector.h \
+ ../include/ILoader.h ../include/Sci_Position.h ../include/ILexer.h \
+ ../include/Scintilla.h ../lexlib/StringCopy.h ../src/Position.h \
+ ../src/IntegerRectangle.h ../src/UniqueString.h ../src/SplitVector.h \
  ../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
- ../src/CellBuffer.h ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h \
+ ../src/CellBuffer.h ../src/KeyMap.h ../src/Indicator.h \
  ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
  ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
  ../src/Document.h ../src/UniConversion.h ../src/Selection.h \
@@ -104,28 +124,30 @@ PerLine.o: ../src/PerLine.cxx ../include/Platform.h \
  ../src/SplitVector.h ../src/Partitioning.h ../src/CellBuffer.h \
  ../src/PerLine.h
 PositionCache.o: ../src/PositionCache.cxx ../include/Platform.h \
- ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../src/Position.h ../src/SplitVector.h ../src/Partitioning.h \
- ../src/RunStyles.h ../src/ContractionState.h ../src/CellBuffer.h \
- ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h ../src/LineMarker.h \
- ../src/Style.h ../src/ViewStyle.h ../src/CharClassify.h \
- ../src/Decoration.h ../src/CaseFolder.h ../src/Document.h \
- ../src/UniConversion.h ../src/Selection.h ../src/PositionCache.h
+ ../include/ILoader.h ../include/Sci_Position.h ../include/ILexer.h \
+ ../include/Scintilla.h ../src/Position.h ../src/UniqueString.h \
+ ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
+ ../src/ContractionState.h ../src/CellBuffer.h ../src/KeyMap.h \
+ ../src/Indicator.h ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
+ ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
+ ../src/Document.h ../src/UniConversion.h ../src/Selection.h \
+ ../src/PositionCache.h
 RESearch.o: ../src/RESearch.cxx ../src/Position.h ../src/CharClassify.h \
  ../src/RESearch.h
 RunStyles.o: ../src/RunStyles.cxx ../include/Platform.h \
  ../include/Scintilla.h ../include/Sci_Position.h ../src/Position.h \
  ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h
 ScintillaBase.o: ../src/ScintillaBase.cxx ../include/Platform.h \
- ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../include/SciLexer.h ../lexlib/PropSetSimple.h ../lexlib/LexerModule.h \
- ../src/Catalogue.h ../src/Position.h ../src/SplitVector.h \
- ../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
- ../src/CellBuffer.h ../src/CallTip.h ../src/KeyMap.h ../src/Indicator.h \
- ../src/XPM.h ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/Selection.h ../src/PositionCache.h \
- ../src/EditModel.h ../src/MarginView.h ../src/EditView.h ../src/Editor.h \
+ ../include/ILoader.h ../include/Sci_Position.h ../include/ILexer.h \
+ ../include/Scintilla.h ../include/SciLexer.h ../lexlib/PropSetSimple.h \
+ ../lexlib/LexerModule.h ../src/Catalogue.h ../src/Position.h \
+ ../src/UniqueString.h ../src/SplitVector.h ../src/Partitioning.h \
+ ../src/RunStyles.h ../src/ContractionState.h ../src/CellBuffer.h \
+ ../src/CallTip.h ../src/KeyMap.h ../src/Indicator.h ../src/LineMarker.h \
+ ../src/Style.h ../src/ViewStyle.h ../src/CharClassify.h \
+ ../src/Decoration.h ../src/CaseFolder.h ../src/Document.h \
+ ../src/Selection.h ../src/PositionCache.h ../src/EditModel.h \
+ ../src/MarginView.h ../src/EditView.h ../src/Editor.h \
  ../src/AutoComplete.h ../src/ScintillaBase.h
 Selection.o: ../src/Selection.cxx ../include/Platform.h \
  ../include/Scintilla.h ../include/Sci_Position.h ../src/Position.h \
@@ -135,17 +157,20 @@ Style.o: ../src/Style.cxx ../include/Platform.h ../include/Scintilla.h \
 UniConversion.o: ../src/UniConversion.cxx ../src/UniConversion.h
 ViewStyle.o: ../src/ViewStyle.cxx ../include/Platform.h \
  ../include/Scintilla.h ../include/Sci_Position.h ../src/Position.h \
- ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
- ../src/Indicator.h ../src/XPM.h ../src/LineMarker.h ../src/Style.h \
- ../src/ViewStyle.h
+ ../src/UniqueString.h ../src/Indicator.h ../src/XPM.h \
+ ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h
 XPM.o: ../src/XPM.cxx ../include/Platform.h ../src/XPM.h
 Accessor.o: ../lexlib/Accessor.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
  ../lexlib/Accessor.h
 CharacterCategory.o: ../lexlib/CharacterCategory.cxx \
- ../lexlib/StringCopy.h ../lexlib/CharacterCategory.h
+ ../lexlib/CharacterCategory.h
 CharacterSet.o: ../lexlib/CharacterSet.cxx ../lexlib/CharacterSet.h
+DefaultLexer.o: ../lexlib/DefaultLexer.cxx ../include/ILexer.h \
+ ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
+ ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
+ ../lexlib/Accessor.h ../lexlib/LexerModule.h ../lexlib/DefaultLexer.h
 LexerBase.o: ../lexlib/LexerBase.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
@@ -168,7 +193,7 @@ LexerSimple.o: ../lexlib/LexerSimple.cxx ../include/ILexer.h \
 PropSetSimple.o: ../lexlib/PropSetSimple.cxx ../lexlib/PropSetSimple.h
 StyleContext.o: ../lexlib/StyleContext.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h
+ ../lexlib/StyleContext.h ../lexlib/CharacterSet.h
 WordList.o: ../lexlib/WordList.cxx ../lexlib/StringCopy.h \
  ../lexlib/WordList.h
 LexA68k.o: ../lexers/LexA68k.cxx ../include/ILexer.h \
@@ -194,7 +219,8 @@ LexAPDL.o: ../lexers/LexAPDL.cxx ../include/ILexer.h \
 LexAsm.o: ../lexers/LexAsm.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h
+ ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h \
+ ../lexlib/DefaultLexer.h
 LexAsn1.o: ../lexers/LexAsn1.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -222,9 +248,9 @@ LexAVS.o: ../lexers/LexAVS.cxx ../include/ILexer.h \
  ../lexlib/LexerModule.h
 LexBaan.o: ../lexers/LexBaan.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
+ ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
+ ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h \
+ ../lexlib/DefaultLexer.h
 LexBash.o: ../lexers/LexBash.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -233,7 +259,8 @@ LexBash.o: ../lexers/LexBash.cxx ../include/ILexer.h \
 LexBasic.o: ../lexers/LexBasic.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h
+ ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h \
+ ../lexlib/DefaultLexer.h
 LexBatch.o: ../lexers/LexBatch.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -269,10 +296,10 @@ LexCOBOL.o: ../lexers/LexCOBOL.cxx ../include/ILexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
  ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
  ../lexlib/LexerModule.h
-LexCoffeeScript.o: ../lexers/LexCoffeeScript.cxx ../include/Platform.h \
- ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../include/SciLexer.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
+LexCoffeeScript.o: ../lexers/LexCoffeeScript.cxx ../include/ILexer.h \
+ ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
+ ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
+ ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
  ../lexlib/LexerModule.h
 LexConf.o: ../lexers/LexConf.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
@@ -281,8 +308,8 @@ LexConf.o: ../lexers/LexConf.cxx ../include/ILexer.h \
  ../lexlib/LexerModule.h
 LexCPP.o: ../lexers/LexCPP.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
+ ../lexlib/StringCopy.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
+ ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
  ../lexlib/LexerModule.h ../lexlib/OptionSet.h ../lexlib/SparseState.h \
  ../lexlib/SubStyles.h
 LexCrontab.o: ../lexers/LexCrontab.cxx ../include/ILexer.h \
@@ -303,7 +330,8 @@ LexCSS.o: ../lexers/LexCSS.cxx ../include/ILexer.h \
 LexD.o: ../lexers/LexD.cxx ../include/ILexer.h ../include/Sci_Position.h \
  ../include/Scintilla.h ../include/SciLexer.h ../lexlib/WordList.h \
  ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h
+ ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h \
+ ../lexlib/DefaultLexer.h
 LexDiff.o: ../lexers/LexDiff.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -317,12 +345,16 @@ LexDMAP.o: ../lexers/LexDMAP.cxx ../include/ILexer.h \
 LexDMIS.o: ../lexers/LexDMIS.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h
+ ../lexlib/CharacterSet.h ../lexlib/LexerModule.h \
+ ../lexlib/DefaultLexer.h
 LexECL.o: ../lexers/LexECL.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
  ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
  ../lexlib/LexerModule.h ../lexlib/OptionSet.h
+LexEDIFACT.o: ../lexers/LexEDIFACT.cxx ../include/ILexer.h \
+ ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
+ ../lexlib/LexAccessor.h ../lexlib/LexerModule.h ../lexlib/DefaultLexer.h
 LexEiffel.o: ../lexers/LexEiffel.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -373,7 +405,7 @@ LexHaskell.o: ../lexers/LexHaskell.cxx ../include/ILexer.h \
  ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
  ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
  ../lexlib/CharacterCategory.h ../lexlib/LexerModule.h \
- ../lexlib/OptionSet.h
+ ../lexlib/OptionSet.h ../lexlib/DefaultLexer.h
 LexHex.o: ../lexers/LexHex.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -384,6 +416,11 @@ LexHTML.o: ../lexers/LexHTML.cxx ../include/ILexer.h \
  ../lexlib/StringCopy.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
  ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
  ../lexlib/LexerModule.h
+LexIndent.o: ../lexers/LexIndent.cxx ../include/ILexer.h \
+ ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
+ ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
+ ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
+ ../lexlib/LexerModule.h
 LexInno.o: ../lexers/LexInno.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -392,7 +429,8 @@ LexInno.o: ../lexers/LexInno.cxx ../include/ILexer.h \
 LexJSON.o: ../lexers/LexJSON.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h
+ ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h \
+ ../lexlib/DefaultLexer.h
 LexKix.o: ../lexers/LexKix.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -407,7 +445,7 @@ LexLaTeX.o: ../lexers/LexLaTeX.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
  ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h ../lexlib/LexerBase.h
+ ../lexlib/LexerModule.h ../lexlib/DefaultLexer.h ../lexlib/LexerBase.h
 LexLisp.o: ../lexers/LexLisp.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -420,8 +458,8 @@ LexLout.o: ../lexers/LexLout.cxx ../include/ILexer.h \
  ../lexlib/LexerModule.h
 LexLua.o: ../lexers/LexLua.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
+ ../lexlib/StringCopy.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
+ ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
  ../lexlib/LexerModule.h
 LexMagik.o: ../lexers/LexMagik.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
@@ -443,6 +481,11 @@ LexMatlab.o: ../lexers/LexMatlab.cxx ../include/ILexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
  ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
  ../lexlib/LexerModule.h
+LexMaxima.o: ../lexers/LexMaxima.cxx ../include/ILexer.h \
+ ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
+ ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
+ ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
+ ../lexlib/LexerModule.h
 LexMetapost.o: ../lexers/LexMetapost.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -511,7 +554,8 @@ LexPB.o: ../lexers/LexPB.cxx ../include/ILexer.h \
 LexPerl.o: ../lexers/LexPerl.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h
+ ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h \
+ ../lexlib/DefaultLexer.h
 LexPLM.o: ../lexers/LexPLM.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -539,9 +583,9 @@ LexPowerShell.o: ../lexers/LexPowerShell.cxx ../include/ILexer.h \
  ../lexlib/LexerModule.h
 LexProgress.o: ../lexers/LexProgress.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
+ ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
+ ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h \
+ ../lexlib/SparseState.h ../lexlib/DefaultLexer.h
 LexProps.o: ../lexers/LexProps.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -554,9 +598,10 @@ LexPS.o: ../lexers/LexPS.cxx ../include/ILexer.h \
  ../lexlib/LexerModule.h
 LexPython.o: ../lexers/LexPython.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h ../lexlib/OptionSet.h ../lexlib/SubStyles.h
+ ../lexlib/StringCopy.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
+ ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
+ ../lexlib/CharacterCategory.h ../lexlib/LexerModule.h \
+ ../lexlib/OptionSet.h ../lexlib/SubStyles.h ../lexlib/DefaultLexer.h
 LexR.o: ../lexers/LexR.cxx ../include/ILexer.h ../include/Sci_Position.h \
  ../include/Scintilla.h ../include/SciLexer.h ../lexlib/WordList.h \
  ../lexlib/LexAccessor.h ../lexlib/Accessor.h ../lexlib/StyleContext.h \
@@ -569,7 +614,8 @@ LexRebol.o: ../lexers/LexRebol.cxx ../include/ILexer.h \
 LexRegistry.o: ../lexers/LexRegistry.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h
+ ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h \
+ ../lexlib/DefaultLexer.h
 LexRuby.o: ../lexers/LexRuby.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -579,7 +625,7 @@ LexRust.o: ../lexers/LexRust.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
  ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h ../lexlib/OptionSet.h
+ ../lexlib/LexerModule.h ../lexlib/OptionSet.h ../lexlib/DefaultLexer.h
 LexScriptol.o: ../lexers/LexScriptol.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -614,7 +660,8 @@ LexSQL.o: ../lexers/LexSQL.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
  ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h ../lexlib/OptionSet.h ../lexlib/SparseState.h
+ ../lexlib/LexerModule.h ../lexlib/OptionSet.h ../lexlib/SparseState.h \
+ ../lexlib/DefaultLexer.h
 LexSTTXT.o: ../lexers/LexSTTXT.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -664,7 +711,8 @@ LexVerilog.o: ../lexers/LexVerilog.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
  ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h ../lexlib/OptionSet.h ../lexlib/SubStyles.h
+ ../lexlib/LexerModule.h ../lexlib/OptionSet.h ../lexlib/SubStyles.h \
+ ../lexlib/DefaultLexer.h
 LexVHDL.o: ../lexers/LexVHDL.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -675,7 +723,7 @@ LexVisualProlog.o: ../lexers/LexVisualProlog.cxx ../include/ILexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
  ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
  ../lexlib/CharacterCategory.h ../lexlib/LexerModule.h \
- ../lexlib/OptionSet.h
+ ../lexlib/OptionSet.h ../lexlib/DefaultLexer.h
 LexYAML.o: ../lexers/LexYAML.cxx ../include/ILexer.h \
  ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
  ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \

+ 0 - 683
maxguitextareascintilla.mod/scintilla/gtk/deps.mak.orig

@@ -1,683 +0,0 @@
-PlatGTK.o: PlatGTK.cxx \
- ../include/Scintilla.h ../include/Sci_Position.h \
- ../include/ScintillaWidget.h ../lexlib/StringCopy.h ../src/XPM.h \
- ../src/UniConversion.h Converter.h
-ScintillaGTK.o: ScintillaGTK.cxx \
- ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../include/ScintillaWidget.h ../include/SciLexer.h \
- ../lexlib/StringCopy.h ../lexlib/LexerModule.h ../src/Position.h \
- ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
- ../src/ContractionState.h ../src/CellBuffer.h ../src/CallTip.h \
- ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h ../src/LineMarker.h \
- ../src/Style.h ../src/ViewStyle.h ../src/CharClassify.h \
- ../src/Decoration.h ../src/CaseFolder.h ../src/Document.h \
- ../src/CaseConvert.h ../src/UniConversion.h ../src/UnicodeFromUTF8.h \
- ../src/Selection.h ../src/PositionCache.h ../src/EditModel.h \
- ../src/MarginView.h ../src/EditView.h ../src/Editor.h \
- ../src/AutoComplete.h ../src/ScintillaBase.h ../src/ExternalLexer.h \
- scintilla-marshal.h Converter.h
-AutoComplete.o: ../src/AutoComplete.cxx ../include/Platform.h \
- ../include/Scintilla.h ../include/Sci_Position.h \
- ../lexlib/CharacterSet.h ../src/Position.h ../src/AutoComplete.h
-CallTip.o: ../src/CallTip.cxx ../include/Platform.h \
- ../include/Scintilla.h ../include/Sci_Position.h ../lexlib/StringCopy.h \
- ../src/Position.h ../src/CallTip.h
-CaseConvert.o: ../src/CaseConvert.cxx ../lexlib/StringCopy.h \
- ../src/CaseConvert.h ../src/UniConversion.h ../src/UnicodeFromUTF8.h
-CaseFolder.o: ../src/CaseFolder.cxx ../src/CaseFolder.h \
- ../src/CaseConvert.h ../src/UniConversion.h
-Catalogue.o: ../src/Catalogue.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/LexerModule.h ../src/Catalogue.h
-CellBuffer.o: ../src/CellBuffer.cxx ../include/Platform.h \
- ../include/Scintilla.h ../include/Sci_Position.h ../src/Position.h \
- ../src/SplitVector.h ../src/Partitioning.h ../src/CellBuffer.h \
- ../src/UniConversion.h
-CharClassify.o: ../src/CharClassify.cxx ../src/CharClassify.h
-ContractionState.o: ../src/ContractionState.cxx ../include/Platform.h \
- ../src/Position.h ../src/SplitVector.h ../src/Partitioning.h \
- ../src/RunStyles.h ../src/ContractionState.h
-Decoration.o: ../src/Decoration.cxx ../include/Platform.h \
- ../include/Scintilla.h ../include/Sci_Position.h ../src/Position.h \
- ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
- ../src/Decoration.h
-Document.o: ../src/Document.cxx ../include/Platform.h ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h \
- ../lexlib/CharacterSet.h ../src/Position.h ../src/SplitVector.h \
- ../src/Partitioning.h ../src/RunStyles.h ../src/CellBuffer.h \
- ../src/PerLine.h ../src/CharClassify.h ../src/Decoration.h \
- ../src/CaseFolder.h ../src/Document.h ../src/RESearch.h \
- ../src/UniConversion.h ../src/UnicodeFromUTF8.h
-EditModel.o: ../src/EditModel.cxx ../include/Platform.h \
- ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../lexlib/StringCopy.h ../src/Position.h ../src/SplitVector.h \
- ../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
- ../src/CellBuffer.h ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h \
- ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/UniConversion.h ../src/Selection.h \
- ../src/PositionCache.h ../src/EditModel.h
-EditView.o: ../src/EditView.cxx ../include/Platform.h ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../lexlib/StringCopy.h \
- ../src/Position.h ../src/SplitVector.h ../src/Partitioning.h \
- ../src/RunStyles.h ../src/ContractionState.h ../src/CellBuffer.h \
- ../src/PerLine.h ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h \
- ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/UniConversion.h ../src/Selection.h \
- ../src/PositionCache.h ../src/EditModel.h ../src/MarginView.h \
- ../src/EditView.h
-Editor.o: ../src/Editor.cxx ../include/Platform.h ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../lexlib/StringCopy.h \
- ../src/Position.h ../src/SplitVector.h ../src/Partitioning.h \
- ../src/RunStyles.h ../src/ContractionState.h ../src/CellBuffer.h \
- ../src/PerLine.h ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h \
- ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/UniConversion.h ../src/Selection.h \
- ../src/PositionCache.h ../src/EditModel.h ../src/MarginView.h \
- ../src/EditView.h ../src/Editor.h
-ExternalLexer.o: ../src/ExternalLexer.cxx ../include/Platform.h \
- ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../include/SciLexer.h ../lexlib/LexerModule.h ../src/Catalogue.h \
- ../src/ExternalLexer.h
-Indicator.o: ../src/Indicator.cxx ../include/Platform.h \
- ../include/Scintilla.h ../include/Sci_Position.h ../src/Indicator.h \
- ../src/XPM.h
-KeyMap.o: ../src/KeyMap.cxx ../include/Platform.h ../include/Scintilla.h \
- ../include/Sci_Position.h ../src/KeyMap.h
-LineMarker.o: ../src/LineMarker.cxx ../include/Platform.h \
- ../include/Scintilla.h ../include/Sci_Position.h ../lexlib/StringCopy.h \
- ../src/XPM.h ../src/LineMarker.h
-MarginView.o: ../src/MarginView.cxx ../include/Platform.h \
- ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../lexlib/StringCopy.h ../src/Position.h ../src/SplitVector.h \
- ../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
- ../src/CellBuffer.h ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h \
- ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/UniConversion.h ../src/Selection.h \
- ../src/PositionCache.h ../src/EditModel.h ../src/MarginView.h \
- ../src/EditView.h
-PerLine.o: ../src/PerLine.cxx ../include/Platform.h \
- ../include/Scintilla.h ../include/Sci_Position.h ../src/Position.h \
- ../src/SplitVector.h ../src/Partitioning.h ../src/CellBuffer.h \
- ../src/PerLine.h
-PositionCache.o: ../src/PositionCache.cxx ../include/Platform.h \
- ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../src/Position.h ../src/SplitVector.h ../src/Partitioning.h \
- ../src/RunStyles.h ../src/ContractionState.h ../src/CellBuffer.h \
- ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h ../src/LineMarker.h \
- ../src/Style.h ../src/ViewStyle.h ../src/CharClassify.h \
- ../src/Decoration.h ../src/CaseFolder.h ../src/Document.h \
- ../src/UniConversion.h ../src/Selection.h ../src/PositionCache.h
-RESearch.o: ../src/RESearch.cxx ../src/Position.h ../src/CharClassify.h \
- ../src/RESearch.h
-RunStyles.o: ../src/RunStyles.cxx ../include/Platform.h \
- ../include/Scintilla.h ../include/Sci_Position.h ../src/Position.h \
- ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h
-ScintillaBase.o: ../src/ScintillaBase.cxx ../include/Platform.h \
- ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../include/SciLexer.h ../lexlib/PropSetSimple.h ../lexlib/LexerModule.h \
- ../src/Catalogue.h ../src/Position.h ../src/SplitVector.h \
- ../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
- ../src/CellBuffer.h ../src/CallTip.h ../src/KeyMap.h ../src/Indicator.h \
- ../src/XPM.h ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/Selection.h ../src/PositionCache.h \
- ../src/EditModel.h ../src/MarginView.h ../src/EditView.h ../src/Editor.h \
- ../src/AutoComplete.h ../src/ScintillaBase.h
-Selection.o: ../src/Selection.cxx ../include/Platform.h \
- ../include/Scintilla.h ../include/Sci_Position.h ../src/Position.h \
- ../src/Selection.h
-Style.o: ../src/Style.cxx ../include/Platform.h ../include/Scintilla.h \
- ../include/Sci_Position.h ../src/Style.h
-UniConversion.o: ../src/UniConversion.cxx ../src/UniConversion.h
-ViewStyle.o: ../src/ViewStyle.cxx ../include/Platform.h \
- ../include/Scintilla.h ../include/Sci_Position.h ../src/Position.h \
- ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
- ../src/Indicator.h ../src/XPM.h ../src/LineMarker.h ../src/Style.h \
- ../src/ViewStyle.h
-XPM.o: ../src/XPM.cxx ../include/Platform.h ../src/XPM.h
-Accessor.o: ../lexlib/Accessor.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h
-CharacterCategory.o: ../lexlib/CharacterCategory.cxx \
- ../lexlib/StringCopy.h ../lexlib/CharacterCategory.h
-CharacterSet.o: ../lexlib/CharacterSet.cxx ../lexlib/CharacterSet.h
-LexerBase.o: ../lexlib/LexerBase.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/LexerModule.h ../lexlib/LexerBase.h
-LexerModule.o: ../lexlib/LexerModule.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/LexerModule.h ../lexlib/LexerBase.h \
- ../lexlib/LexerSimple.h
-LexerNoExceptions.o: ../lexlib/LexerNoExceptions.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/LexerModule.h ../lexlib/LexerBase.h \
- ../lexlib/LexerNoExceptions.h
-LexerSimple.o: ../lexlib/LexerSimple.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/LexerModule.h ../lexlib/LexerBase.h \
- ../lexlib/LexerSimple.h
-PropSetSimple.o: ../lexlib/PropSetSimple.cxx ../lexlib/PropSetSimple.h
-StyleContext.o: ../lexlib/StyleContext.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h
-WordList.o: ../lexlib/WordList.cxx ../lexlib/StringCopy.h \
- ../lexlib/WordList.h
-LexA68k.o: ../lexers/LexA68k.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexAPDL.o: ../lexers/LexAPDL.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexASY.o: ../lexers/LexASY.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexAU3.o: ../lexers/LexAU3.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexAVE.o: ../lexers/LexAVE.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexAVS.o: ../lexers/LexAVS.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexAbaqus.o: ../lexers/LexAbaqus.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexAda.o: ../lexers/LexAda.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexAsm.o: ../lexers/LexAsm.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h
-LexAsn1.o: ../lexers/LexAsn1.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexBaan.o: ../lexers/LexBaan.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexBash.o: ../lexers/LexBash.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexBasic.o: ../lexers/LexBasic.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h
-LexBatch.o: ../lexers/LexBatch.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexBibTeX.o: ../lexers/LexBibTeX.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexBullant.o: ../lexers/LexBullant.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexCLW.o: ../lexers/LexCLW.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexCOBOL.o: ../lexers/LexCOBOL.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexCPP.o: ../lexers/LexCPP.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h ../lexlib/OptionSet.h ../lexlib/SparseState.h \
- ../lexlib/SubStyles.h
-LexCSS.o: ../lexers/LexCSS.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexCaml.o: ../lexers/LexCaml.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexCmake.o: ../lexers/LexCmake.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexCoffeeScript.o: ../lexers/LexCoffeeScript.cxx ../include/Platform.h \
- ../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../include/SciLexer.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexConf.o: ../lexers/LexConf.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexCrontab.o: ../lexers/LexCrontab.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexCsound.o: ../lexers/LexCsound.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexD.o: ../lexers/LexD.cxx ../include/ILexer.h ../include/Sci_Position.h \
- ../include/Scintilla.h ../include/SciLexer.h ../lexlib/WordList.h \
- ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h
-LexDMAP.o: ../lexers/LexDMAP.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexDMIS.o: ../lexers/LexDMIS.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h
-LexDiff.o: ../lexers/LexDiff.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexECL.o: ../lexers/LexECL.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h ../lexlib/OptionSet.h
-LexEScript.o: ../lexers/LexEScript.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexEiffel.o: ../lexers/LexEiffel.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexErlang.o: ../lexers/LexErlang.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexErrorList.o: ../lexers/LexErrorList.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexFlagship.o: ../lexers/LexFlagship.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexForth.o: ../lexers/LexForth.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexFortran.o: ../lexers/LexFortran.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexGAP.o: ../lexers/LexGAP.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexGui4Cli.o: ../lexers/LexGui4Cli.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexHTML.o: ../lexers/LexHTML.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/StringCopy.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexHaskell.o: ../lexers/LexHaskell.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/CharacterCategory.h ../lexlib/LexerModule.h \
- ../lexlib/OptionSet.h
-LexHex.o: ../lexers/LexHex.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexInno.o: ../lexers/LexInno.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexJSON.o: ../lexers/LexJSON.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h
-LexKVIrc.o: ../lexers/LexKVIrc.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexKix.o: ../lexers/LexKix.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexLaTeX.o: ../lexers/LexLaTeX.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h ../lexlib/LexerBase.h
-LexLisp.o: ../lexers/LexLisp.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexLout.o: ../lexers/LexLout.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexLua.o: ../lexers/LexLua.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexMMIXAL.o: ../lexers/LexMMIXAL.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexMPT.o: ../lexers/LexMPT.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexMSSQL.o: ../lexers/LexMSSQL.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexMagik.o: ../lexers/LexMagik.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexMake.o: ../lexers/LexMake.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexMarkdown.o: ../lexers/LexMarkdown.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexMatlab.o: ../lexers/LexMatlab.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexMetapost.o: ../lexers/LexMetapost.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexModula.o: ../lexers/LexModula.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexMySQL.o: ../lexers/LexMySQL.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexNimrod.o: ../lexers/LexNimrod.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexNsis.o: ../lexers/LexNsis.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexNull.o: ../lexers/LexNull.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexOScript.o: ../lexers/LexOScript.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexOpal.o: ../lexers/LexOpal.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexPB.o: ../lexers/LexPB.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexPLM.o: ../lexers/LexPLM.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexPO.o: ../lexers/LexPO.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexPOV.o: ../lexers/LexPOV.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexPS.o: ../lexers/LexPS.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexPascal.o: ../lexers/LexPascal.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexPerl.o: ../lexers/LexPerl.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h
-LexPowerPro.o: ../lexers/LexPowerPro.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexPowerShell.o: ../lexers/LexPowerShell.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexProgress.o: ../lexers/LexProgress.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexProps.o: ../lexers/LexProps.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexPython.o: ../lexers/LexPython.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h ../lexlib/OptionSet.h ../lexlib/SubStyles.h
-LexR.o: ../lexers/LexR.cxx ../include/ILexer.h ../include/Sci_Position.h \
- ../include/Scintilla.h ../include/SciLexer.h ../lexlib/WordList.h \
- ../lexlib/LexAccessor.h ../lexlib/Accessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h
-LexRebol.o: ../lexers/LexRebol.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexRegistry.o: ../lexers/LexRegistry.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/StyleContext.h \
- ../lexlib/CharacterSet.h ../lexlib/LexerModule.h ../lexlib/OptionSet.h
-LexRuby.o: ../lexers/LexRuby.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexRust.o: ../lexers/LexRust.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/PropSetSimple.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
- ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h ../lexlib/OptionSet.h
-LexSML.o: ../lexers/LexSML.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexSQL.o: ../lexers/LexSQL.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h ../lexlib/OptionSet.h ../lexlib/SparseState.h
-LexSTTXT.o: ../lexers/LexSTTXT.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexScriptol.o: ../lexers/LexScriptol.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexSmalltalk.o: ../lexers/LexSmalltalk.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexSorcus.o: ../lexers/LexSorcus.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexSpecman.o: ../lexers/LexSpecman.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexSpice.o: ../lexers/LexSpice.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexTACL.o: ../lexers/LexTACL.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexTADS3.o: ../lexers/LexTADS3.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexTAL.o: ../lexers/LexTAL.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexTCL.o: ../lexers/LexTCL.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexTCMD.o: ../lexers/LexTCMD.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexTeX.o: ../lexers/LexTeX.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexTxt2tags.o: ../lexers/LexTxt2tags.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexVB.o: ../lexers/LexVB.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexVHDL.o: ../lexers/LexVHDL.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h
-LexVerilog.o: ../lexers/LexVerilog.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h ../lexlib/OptionSet.h ../lexlib/SubStyles.h
-LexVisualProlog.o: ../lexers/LexVisualProlog.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/CharacterCategory.h ../lexlib/LexerModule.h \
- ../lexlib/OptionSet.h
-LexYAML.o: ../lexers/LexYAML.cxx ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h

+ 33 - 14
maxguitextareascintilla.mod/scintilla/gtk/makefile

@@ -6,16 +6,20 @@
 # Builds for GTK+ 2 and no longer supports GTK+ 1.
 # Also works with ming32-make on Windows.
 
+.SUFFIXES: .cxx .c .o .h .a .list
+
 srcdir ?= .
 
-.SUFFIXES: .cxx .c .o .h .a .list
 ifdef CLANG
-CXX = clang++ -Wno-deprecated-register
+CXX = clang++
+CXXWARNFLAGS = -Wall -pedantic -Wno-deprecated-register -Wno-missing-braces
 CC = clang
 # Can choose aspect to sanitize: address and undefined can simply change SANITIZE but for
 # thread also need to create Position Independent Executable -> search online documentation
 SANITIZE = address
 #SANITIZE = undefined
+else
+CXXWARNFLAGS = -Wall -pedantic
 endif
 ARFLAGS = rc
 RANLIB = touch
@@ -56,7 +60,7 @@ INCLUDEDIRS=-I $(srcdir)/../include -I $(srcdir)/../src -I $(srcdir)/../lexlib
 ifdef CHECK_DEPRECATED
 DEPRECATED=-DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DDISABLE_GDK_FONT
 endif
-CXXBASEFLAGS=-Wall -pedantic $(PICFLAGS) -DGTK -DSCI_LEXER $(INCLUDEDIRS) $(DEPRECATED)
+CXXBASEFLAGS=$(CXXWARNFLAGS) $(PICFLAGS) -DGTK -DSCI_LEXER $(INCLUDEDIRS) $(DEPRECATED)
 
 ifdef NOTHREADS
 THREADFLAGS=-DG_THREADS_IMPL_NONE
@@ -79,14 +83,31 @@ CTFLAGS=-DNDEBUG -Os $(CXXBASEFLAGS) $(THREADFLAGS)
 endif
 
 CXXTFLAGS:=--std=gnu++0x $(CTFLAGS) $(REFLAGS)
+ifdef LPEG_LEXER
+CXXTFLAGS+=-DLPEG_LEXER -I ../src/lua
+LUA_CFLAGS:=-std=c99 -pedantic -Wall -I ../src/lua -DLUA_USE_POSIX -DLUA_USE_DLOPEN
+LUAOBJS:=lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o linit.o \
+         llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o \
+         ltable.o ltm.o lundump.o lvm.o lzio.o \
+         lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o \
+         lmathlib.o loadlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o \
+         lpcap.o lpcode.o lpprint.o lptree.o lpvm.o
+endif
 
 CONFIGFLAGS:=$(shell pkg-config --cflags $(GTKVERSION))
 MARSHALLER=scintilla-marshal.o
 
+all: $(COMPLIB)
+
+clean:
+	$(DEL) *.o $(COMPLIB) *.plist
+
 .cxx.o:
 	$(CXX) $(CONFIGFLAGS) $(CXXTFLAGS) $(CXXFLAGS) -c $<
-.c.o:
+$(MARSHALLER): scintilla-marshal.c
 	$(CC) $(CONFIGFLAGS) $(CTFLAGS) $(CFLAGS) -w -c $<
+$(LUAOBJS): %.o: ../lua/src/%.c
+	$(CC) $(LUA_CFLAGS) $(CFLAGS) -c $<
 
 GLIB_GENMARSHAL = glib-genmarshal
 GLIB_GENMARSHAL_FLAGS = --prefix=scintilla_marshal
@@ -96,27 +117,25 @@ GLIB_GENMARSHAL_FLAGS = --prefix=scintilla_marshal
 .list.c:
 	$(GLIB_GENMARSHAL) --body $(GLIB_GENMARSHAL_FLAGS) $< > $@
 
-LEXOBJS:=$(addsuffix .o,$(basename $(notdir $(wildcard $(srcdir)/../lexers/Lex*.cxx))))
-
-all: $(COMPLIB)
-
-clean:
-	$(DEL) *.o $(COMPLIB) *.plist
+LEXOBJS:=$(addsuffix .o,$(basename $(sort $(notdir $(wildcard $(srcdir)/../lexers/Lex*.cxx)))))
 
 analyze:
 	clang --analyze $(CONFIGFLAGS) $(CXXTFLAGS) $(CXXFLAGS) $(srcdir)/*.cxx $(srcdir)/../src/*.cxx $(srcdir)/../lexlib/*.cxx $(srcdir)/../lexers/*.cxx
 
+# To minimize deltas, including between Unix and Windows, the lexer file names are sorted case-insensitively
+LEXSORTED=$(shell ls $(srcdir)/../lexers/Lex*.cxx | sort -f)
+DEPSRCS=$(srcdir)/*.cxx $(srcdir)/../src/*.cxx $(srcdir)/../lexlib/*.cxx $(LEXSORTED)
 deps: deps.mak
 deps.mak:
-	$(CXX) -MM $(CONFIGFLAGS) $(CXXTFLAGS) $(srcdir)/*.cxx $(srcdir)/../src/*.cxx $(srcdir)/../lexlib/*.cxx $(srcdir)/../lexers/*.cxx | sed -e 's/\/usr.* //' | grep [a-zA-Z] > $@
+	$(CXX) -MM $(CONFIGFLAGS) $(CXXTFLAGS) $(DEPSRCS) | sed -e 's/\/usr.* //' | grep [a-zA-Z] > $@
 
-$(COMPLIB): Accessor.o CharacterSet.o LexerBase.o LexerModule.o LexerSimple.o StyleContext.o WordList.o \
+$(COMPLIB): Accessor.o CharacterSet.o DefaultLexer.o LexerBase.o LexerModule.o LexerSimple.o StyleContext.o WordList.o \
 	CharClassify.o Decoration.o Document.o PerLine.o Catalogue.o CallTip.o CaseConvert.o CaseFolder.o \
 	ScintillaBase.o ContractionState.o EditModel.o Editor.o EditView.o ExternalLexer.o MarginView.o \
 	PropSetSimple.o PlatGTK.o \
-	KeyMap.o LineMarker.o PositionCache.o ScintillaGTK.o CellBuffer.o CharacterCategory.o ViewStyle.o \
+	KeyMap.o LineMarker.o PositionCache.o ScintillaGTK.o ScintillaGTKAccessible.o CellBuffer.o CharacterCategory.o ViewStyle.o \
 	RESearch.o RunStyles.o Selection.o Style.o Indicator.o AutoComplete.o UniConversion.o XPM.o \
-	$(MARSHALLER) $(LEXOBJS)
+	$(MARSHALLER) $(LEXOBJS) $(LUAOBJS)
 	$(AR) $(ARFLAGS) $@ $^
 	$(RANLIB) $@
 

+ 15 - 18
maxguitextareascintilla.mod/scintilla/gtk/scintilla-marshal.c

@@ -1,6 +1,4 @@
-
-#include	<glib-object.h>
-
+#include <glib-object.h>
 
 #ifdef G_ENABLE_DEBUG
 #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
@@ -48,8 +46,7 @@
 #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
 #endif /* !G_ENABLE_DEBUG */
 
-
-/* NONE:INT,OBJECT (scintilla-marshal.list:1) */
+/* VOID:INT,OBJECT (scintilla-marshal.list:1) */
 void
 scintilla_marshal_VOID__INT_OBJECT (GClosure     *closure,
                                     GValue       *return_value G_GNUC_UNUSED,
@@ -58,13 +55,13 @@ scintilla_marshal_VOID__INT_OBJECT (GClosure     *closure,
                                     gpointer      invocation_hint G_GNUC_UNUSED,
                                     gpointer      marshal_data)
 {
-  typedef void (*GMarshalFunc_VOID__INT_OBJECT) (gpointer     data1,
-                                                 gint         arg_1,
-                                                 gpointer     arg_2,
-                                                 gpointer     data2);
-  GMarshalFunc_VOID__INT_OBJECT callback;
-  GCClosure *cc = (GCClosure*) closure;
+  typedef void (*GMarshalFunc_VOID__INT_OBJECT) (gpointer data1,
+                                                 gint arg1,
+                                                 gpointer arg2,
+                                                 gpointer data2);
+  GCClosure *cc = (GCClosure *) closure;
   gpointer data1, data2;
+  GMarshalFunc_VOID__INT_OBJECT callback;
 
   g_return_if_fail (n_param_values == 3);
 
@@ -86,7 +83,7 @@ scintilla_marshal_VOID__INT_OBJECT (GClosure     *closure,
             data2);
 }
 
-/* NONE:INT,BOXED (scintilla-marshal.list:2) */
+/* VOID:INT,BOXED (scintilla-marshal.list:2) */
 void
 scintilla_marshal_VOID__INT_BOXED (GClosure     *closure,
                                    GValue       *return_value G_GNUC_UNUSED,
@@ -95,13 +92,13 @@ scintilla_marshal_VOID__INT_BOXED (GClosure     *closure,
                                    gpointer      invocation_hint G_GNUC_UNUSED,
                                    gpointer      marshal_data)
 {
-  typedef void (*GMarshalFunc_VOID__INT_BOXED) (gpointer     data1,
-                                                gint         arg_1,
-                                                gpointer     arg_2,
-                                                gpointer     data2);
-  GMarshalFunc_VOID__INT_BOXED callback;
-  GCClosure *cc = (GCClosure*) closure;
+  typedef void (*GMarshalFunc_VOID__INT_BOXED) (gpointer data1,
+                                                gint arg1,
+                                                gpointer arg2,
+                                                gpointer data2);
+  GCClosure *cc = (GCClosure *) closure;
   gpointer data1, data2;
+  GMarshalFunc_VOID__INT_BOXED callback;
 
   g_return_if_fail (n_param_values == 3);
 

+ 0 - 125
maxguitextareascintilla.mod/scintilla/gtk/scintilla-marshal.c.orig

@@ -1,125 +0,0 @@
-
-#include	<glib-object.h>
-
-
-#ifdef G_ENABLE_DEBUG
-#define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
-#define g_marshal_value_peek_char(v)     g_value_get_schar (v)
-#define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
-#define g_marshal_value_peek_int(v)      g_value_get_int (v)
-#define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
-#define g_marshal_value_peek_long(v)     g_value_get_long (v)
-#define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
-#define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
-#define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
-#define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
-#define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
-#define g_marshal_value_peek_float(v)    g_value_get_float (v)
-#define g_marshal_value_peek_double(v)   g_value_get_double (v)
-#define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
-#define g_marshal_value_peek_param(v)    g_value_get_param (v)
-#define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
-#define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
-#define g_marshal_value_peek_object(v)   g_value_get_object (v)
-#define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
-#else /* !G_ENABLE_DEBUG */
-/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
- *          Do not access GValues directly in your code. Instead, use the
- *          g_value_get_*() functions
- */
-#define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
-#define g_marshal_value_peek_char(v)     (v)->data[0].v_int
-#define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
-#define g_marshal_value_peek_int(v)      (v)->data[0].v_int
-#define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
-#define g_marshal_value_peek_long(v)     (v)->data[0].v_long
-#define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
-#define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
-#define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
-#define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
-#define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
-#define g_marshal_value_peek_float(v)    (v)->data[0].v_float
-#define g_marshal_value_peek_double(v)   (v)->data[0].v_double
-#define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
-#define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
-#define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
-#define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
-#define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
-#define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
-#endif /* !G_ENABLE_DEBUG */
-
-
-/* NONE:INT,OBJECT (scintilla-marshal.list:1) */
-void
-scintilla_marshal_VOID__INT_OBJECT (GClosure     *closure,
-                                    GValue       *return_value G_GNUC_UNUSED,
-                                    guint         n_param_values,
-                                    const GValue *param_values,
-                                    gpointer      invocation_hint G_GNUC_UNUSED,
-                                    gpointer      marshal_data)
-{
-  typedef void (*GMarshalFunc_VOID__INT_OBJECT) (gpointer     data1,
-                                                 gint         arg_1,
-                                                 gpointer     arg_2,
-                                                 gpointer     data2);
-  register GMarshalFunc_VOID__INT_OBJECT callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-
-  g_return_if_fail (n_param_values == 3);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_VOID__INT_OBJECT) (marshal_data ? marshal_data : cc->callback);
-
-  callback (data1,
-            g_marshal_value_peek_int (param_values + 1),
-            g_marshal_value_peek_object (param_values + 2),
-            data2);
-}
-
-/* NONE:INT,BOXED (scintilla-marshal.list:2) */
-void
-scintilla_marshal_VOID__INT_BOXED (GClosure     *closure,
-                                   GValue       *return_value G_GNUC_UNUSED,
-                                   guint         n_param_values,
-                                   const GValue *param_values,
-                                   gpointer      invocation_hint G_GNUC_UNUSED,
-                                   gpointer      marshal_data)
-{
-  typedef void (*GMarshalFunc_VOID__INT_BOXED) (gpointer     data1,
-                                                gint         arg_1,
-                                                gpointer     arg_2,
-                                                gpointer     data2);
-  register GMarshalFunc_VOID__INT_BOXED callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-
-  g_return_if_fail (n_param_values == 3);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_VOID__INT_BOXED) (marshal_data ? marshal_data : cc->callback);
-
-  callback (data1,
-            g_marshal_value_peek_int (param_values + 1),
-            g_marshal_value_peek_boxed (param_values + 2),
-            data2);
-}
-

+ 22 - 22
maxguitextareascintilla.mod/scintilla/gtk/scintilla-marshal.h

@@ -1,30 +1,30 @@
+/* This file is generated, all changes will be lost */
+#ifndef __SCINTILLA_MARSHAL_MARSHAL_H__
+#define __SCINTILLA_MARSHAL_MARSHAL_H__
 
-#ifndef __scintilla_marshal_MARSHAL_H__
-#define __scintilla_marshal_MARSHAL_H__
-
-#include	<glib-object.h>
+#include <glib-object.h>
 
 G_BEGIN_DECLS
 
-/* NONE:INT,OBJECT (scintilla-marshal.list:1) */
-extern void scintilla_marshal_VOID__INT_OBJECT (GClosure     *closure,
-                                                GValue       *return_value,
-                                                guint         n_param_values,
-                                                const GValue *param_values,
-                                                gpointer      invocation_hint,
-                                                gpointer      marshal_data);
-#define scintilla_marshal_NONE__INT_OBJECT	scintilla_marshal_VOID__INT_OBJECT
+/* VOID:INT,OBJECT (scintilla-marshal.list:1) */
+extern
+void scintilla_marshal_VOID__INT_OBJECT (GClosure     *closure,
+                                         GValue       *return_value,
+                                         guint         n_param_values,
+                                         const GValue *param_values,
+                                         gpointer      invocation_hint,
+                                         gpointer      marshal_data);
+
+/* VOID:INT,BOXED (scintilla-marshal.list:2) */
+extern
+void scintilla_marshal_VOID__INT_BOXED (GClosure     *closure,
+                                        GValue       *return_value,
+                                        guint         n_param_values,
+                                        const GValue *param_values,
+                                        gpointer      invocation_hint,
+                                        gpointer      marshal_data);
 
-/* NONE:INT,BOXED (scintilla-marshal.list:2) */
-extern void scintilla_marshal_VOID__INT_BOXED (GClosure     *closure,
-                                               GValue       *return_value,
-                                               guint         n_param_values,
-                                               const GValue *param_values,
-                                               gpointer      invocation_hint,
-                                               gpointer      marshal_data);
-#define scintilla_marshal_NONE__INT_BOXED	scintilla_marshal_VOID__INT_BOXED
 
 G_END_DECLS
 
-#endif /* __scintilla_marshal_MARSHAL_H__ */
-
+#endif /* __SCINTILLA_MARSHAL_MARSHAL_H__ */

+ 2 - 2
maxguitextareascintilla.mod/scintilla/gtk/scintilla-marshal.list

@@ -1,2 +1,2 @@
-NONE:INT,OBJECT
-NONE:INT,BOXED
+VOID:INT,OBJECT
+VOID:INT,BOXED

+ 6 - 16
maxguitextareascintilla.mod/scintilla/include/ILexer.h

@@ -10,15 +10,7 @@
 
 #include "Sci_Position.h"
 
-#ifdef SCI_NAMESPACE
 namespace Scintilla {
-#endif
-
-#ifdef _WIN32
-	#define SCI_METHOD __stdcall
-#else
-	#define SCI_METHOD
-#endif
 
 enum { dvOriginal=0, dvLineEnd=1 };
 
@@ -54,7 +46,7 @@ public:
 	virtual int SCI_METHOD GetCharacterAndWidth(Sci_Position position, Sci_Position *pWidth) const = 0;
 };
 
-enum { lvOriginal=0, lvSubStyles=1 };
+enum { lvOriginal=0, lvSubStyles=1, lvMetaData=2 };
 
 class ILexer {
 public:
@@ -85,16 +77,14 @@ public:
 	virtual const char * SCI_METHOD GetSubStyleBases() = 0;
 };
 
-class ILoader {
+class ILexerWithMetaData : public ILexerWithSubStyles {
 public:
-	virtual int SCI_METHOD Release() = 0;
-	// Returns a status code from SC_STATUS_*
-	virtual int SCI_METHOD AddData(char *data, Sci_Position length) = 0;
-	virtual void * SCI_METHOD ConvertToDocument() = 0;
+	virtual int SCI_METHOD NamedStyles() = 0;
+	virtual const char * SCI_METHOD NameOfStyle(int style) = 0;
+	virtual const char * SCI_METHOD TagsOfStyle(int style) = 0;
+	virtual const char * SCI_METHOD DescriptionOfStyle(int style) = 0;
 };
 
-#ifdef SCI_NAMESPACE
 }
-#endif
 
 #endif

+ 21 - 0
maxguitextareascintilla.mod/scintilla/include/ILoader.h

@@ -0,0 +1,21 @@
+// Scintilla source code edit control
+/** @file ILoader.h
+ ** Interface for loading into a Scintilla document from a background thread.
+ **/
+// Copyright 1998-2017 by Neil Hodgson <[email protected]>
+// The License.txt file describes the conditions under which this software may be distributed.
+
+#ifndef ILOADER_H
+#define ILOADER_H
+
+#include "Sci_Position.h"
+
+class ILoader {
+public:
+	virtual int SCI_METHOD Release() = 0;
+	// Returns a status code from SC_STATUS_*
+	virtual int SCI_METHOD AddData(const char *data, Sci_Position length) = 0;
+	virtual void * SCI_METHOD ConvertToDocument() = 0;
+};
+
+#endif

+ 147 - 143
maxguitextareascintilla.mod/scintilla/include/Platform.h

@@ -25,6 +25,7 @@
 #define PLAT_FOX 0
 #define PLAT_CURSES 0
 #define PLAT_TK 0
+#define PLAT_HAIKU 0
 
 #if defined(FOX)
 #undef PLAT_FOX
@@ -38,6 +39,10 @@
 #undef PLAT_CURSES
 #define PLAT_CURSES 1
 
+#elif defined(__HAIKU__)
+#undef PLAT_HAIKU
+#define PLAT_HAIKU 1
+
 #elif defined(SCINTILLA_QT)
 #undef PLAT_QT
 #define PLAT_QT 1
@@ -71,15 +76,10 @@
 
 #endif
 
-#ifdef SCI_NAMESPACE
 namespace Scintilla {
-#endif
 
 typedef float XYPOSITION;
 typedef double XYACCUMULATOR;
-inline int RoundXYPosition(XYPOSITION xyPos) {
-	return int(xyPos + 0.5);
-}
 
 // Underlying the implementation of the platform classes are platform specific types.
 // Sometimes these need to be passed around by client code so they are defined here
@@ -101,21 +101,19 @@ public:
 	XYPOSITION x;
 	XYPOSITION y;
 
-	explicit Point(XYPOSITION x_=0, XYPOSITION y_=0) : x(x_), y(y_) {
+	constexpr explicit Point(XYPOSITION x_=0, XYPOSITION y_=0) noexcept : x(x_), y(y_) {
 	}
 
-	static Point FromInts(int x_, int y_) {
+	static Point FromInts(int x_, int y_) noexcept {
 		return Point(static_cast<XYPOSITION>(x_), static_cast<XYPOSITION>(y_));
 	}
 
 	// Other automatically defined methods (assignment, copy constructor, destructor) are fine
-
-	static Point FromLong(long lpoint);
 };
 
 /**
  * A geometric rectangle class.
- * PRectangle is similar to the Win32 RECT.
+ * PRectangle is similar to Win32 RECT.
  * PRectangles contain their top and left sides, but not their right and bottom sides.
  */
 class PRectangle {
@@ -125,112 +123,146 @@ public:
 	XYPOSITION right;
 	XYPOSITION bottom;
 
-	explicit PRectangle(XYPOSITION left_=0, XYPOSITION top_=0, XYPOSITION right_=0, XYPOSITION bottom_ = 0) :
+	constexpr explicit PRectangle(XYPOSITION left_=0, XYPOSITION top_=0, XYPOSITION right_=0, XYPOSITION bottom_ = 0) noexcept :
 		left(left_), top(top_), right(right_), bottom(bottom_) {
 	}
 
-	static PRectangle FromInts(int left_, int top_, int right_, int bottom_) {
+	static PRectangle FromInts(int left_, int top_, int right_, int bottom_) noexcept {
 		return PRectangle(static_cast<XYPOSITION>(left_), static_cast<XYPOSITION>(top_),
 			static_cast<XYPOSITION>(right_), static_cast<XYPOSITION>(bottom_));
 	}
 
 	// Other automatically defined methods (assignment, copy constructor, destructor) are fine
 
-	bool operator==(PRectangle &rc) const {
+	bool operator==(const PRectangle &rc) const noexcept {
 		return (rc.left == left) && (rc.right == right) &&
 			(rc.top == top) && (rc.bottom == bottom);
 	}
-	bool Contains(Point pt) const {
+	bool Contains(Point pt) const noexcept {
 		return (pt.x >= left) && (pt.x <= right) &&
 			(pt.y >= top) && (pt.y <= bottom);
 	}
-	bool ContainsWholePixel(Point pt) const {
+	bool ContainsWholePixel(Point pt) const noexcept {
 		// Does the rectangle contain all of the pixel to left/below the point
 		return (pt.x >= left) && ((pt.x+1) <= right) &&
 			(pt.y >= top) && ((pt.y+1) <= bottom);
 	}
-	bool Contains(PRectangle rc) const {
+	bool Contains(PRectangle rc) const noexcept {
 		return (rc.left >= left) && (rc.right <= right) &&
 			(rc.top >= top) && (rc.bottom <= bottom);
 	}
-	bool Intersects(PRectangle other) const {
+	bool Intersects(PRectangle other) const noexcept {
 		return (right > other.left) && (left < other.right) &&
 			(bottom > other.top) && (top < other.bottom);
 	}
-	void Move(XYPOSITION xDelta, XYPOSITION yDelta) {
+	void Move(XYPOSITION xDelta, XYPOSITION yDelta) noexcept {
 		left += xDelta;
 		top += yDelta;
 		right += xDelta;
 		bottom += yDelta;
 	}
-	XYPOSITION Width() const { return right - left; }
-	XYPOSITION Height() const { return bottom - top; }
-	bool Empty() const {
+	XYPOSITION Width() const noexcept { return right - left; }
+	XYPOSITION Height() const noexcept { return bottom - top; }
+	bool Empty() const noexcept {
 		return (Height() <= 0) || (Width() <= 0);
 	}
 };
 
 /**
- * Holds a desired RGB colour.
+ * Holds an RGB colour with 8 bits for each component.
  */
+constexpr const float componentMaximum = 255.0f;
 class ColourDesired {
-	long co;
+	int co;
 public:
-	ColourDesired(long lcol=0) {
-		co = lcol;
+	explicit ColourDesired(int co_=0) noexcept : co(co_) {
 	}
 
-	ColourDesired(unsigned int red, unsigned int green, unsigned int blue) {
-		Set(red, green, blue);
+	ColourDesired(unsigned int red, unsigned int green, unsigned int blue) noexcept :
+		co(red | (green << 8) | (blue << 16)) {
 	}
 
-	bool operator==(const ColourDesired &other) const {
+	bool operator==(const ColourDesired &other) const noexcept {
 		return co == other.co;
 	}
 
-	void Set(long lcol) {
-		co = lcol;
+	int AsInteger() const noexcept {
+		return co;
+	}
+
+	// Red, green and blue values as bytes 0..255
+	unsigned char GetRed() const noexcept {
+		return co & 0xff;
+	}
+	unsigned char GetGreen() const noexcept {
+		return (co >> 8) & 0xff;
+	}
+	unsigned char GetBlue() const noexcept {
+		return (co >> 16) & 0xff;
+	}
+
+	// Red, green and blue values as float 0..1.0
+	float GetRedComponent() const noexcept {
+		return GetRed() / componentMaximum;
 	}
+	float GetGreenComponent() const noexcept {
+		return GetGreen() / componentMaximum;
+	}
+	float GetBlueComponent() const noexcept {
+		return GetBlue() / componentMaximum;
+	}
+};
 
-	void Set(unsigned int red, unsigned int green, unsigned int blue) {
-		co = red | (green << 8) | (blue << 16);
+/**
+* Holds an RGBA colour.
+*/
+class ColourAlpha : public ColourDesired {
+public:
+	explicit ColourAlpha(int co_ = 0) noexcept : ColourDesired(co_) {
 	}
 
-	static inline unsigned int ValueOfHex(const char ch) {
-		if (ch >= '0' && ch <= '9')
-			return ch - '0';
-		else if (ch >= 'A' && ch <= 'F')
-			return ch - 'A' + 10;
-		else if (ch >= 'a' && ch <= 'f')
-			return ch - 'a' + 10;
-		else
-			return 0;
+	ColourAlpha(unsigned int red, unsigned int green, unsigned int blue) noexcept :
+		ColourDesired(red | (green << 8) | (blue << 16)) {
 	}
 
-	void Set(const char *val) {
-		if (*val == '#') {
-			val++;
-		}
-		unsigned int r = ValueOfHex(val[0]) * 16 + ValueOfHex(val[1]);
-		unsigned int g = ValueOfHex(val[2]) * 16 + ValueOfHex(val[3]);
-		unsigned int b = ValueOfHex(val[4]) * 16 + ValueOfHex(val[5]);
-		Set(r, g, b);
+	ColourAlpha(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha) noexcept :
+		ColourDesired(red | (green << 8) | (blue << 16) | (alpha << 24)) {
 	}
 
-	long AsLong() const {
-		return co;
+	ColourAlpha(ColourDesired cd, unsigned int alpha) noexcept :
+		ColourDesired(cd.AsInteger() | (alpha << 24)) {
 	}
 
-	unsigned int GetRed() const {
-		return co & 0xff;
+	ColourDesired GetColour() const noexcept {
+		return ColourDesired(AsInteger() & 0xffffff);
 	}
 
-	unsigned int GetGreen() const {
-		return (co >> 8) & 0xff;
+	unsigned char GetAlpha() const noexcept {
+		return (AsInteger() >> 24) & 0xff;
 	}
 
-	unsigned int GetBlue() const {
-		return (co >> 16) & 0xff;
+	float GetAlphaComponent() const noexcept {
+		return GetAlpha() / componentMaximum;
+	}
+
+	ColourAlpha MixedWith(ColourAlpha other) const noexcept {
+		const unsigned int red = (GetRed() + other.GetRed()) / 2;
+		const unsigned int green = (GetGreen() + other.GetGreen()) / 2;
+		const unsigned int blue = (GetBlue() + other.GetBlue()) / 2;
+		const unsigned int alpha = (GetAlpha() + other.GetAlpha()) / 2;
+		return ColourAlpha(red, green, blue, alpha);
+	}
+};
+
+/**
+* Holds an element of a gradient with an RGBA colour and a relative position.
+*/
+class ColourStop {
+public:
+	float position;
+	ColourAlpha colour;
+	ColourStop(float position_, ColourAlpha colour_) noexcept :
+		position(position_), colour(colour_) {
 	}
 };
 
@@ -254,7 +286,7 @@ struct FontParameters {
 		bool italic_=false,
 		int extraFontFlag_=0,
 		int technology_=0,
-		int characterSet_=0) :
+		int characterSet_=0) noexcept :
 
 		faceName(faceName_),
 		size(size_),
@@ -271,19 +303,21 @@ struct FontParameters {
 class Font {
 protected:
 	FontID fid;
-	// Private so Font objects can not be copied
-	Font(const Font &);
-	Font &operator=(const Font &);
 public:
-	Font();
+	Font() noexcept;
+	// Deleted so Font objects can not be copied
+	Font(const Font &) = delete;
+	Font(Font &&) = delete;
+	Font &operator=(const Font &) = delete;
+	Font &operator=(Font &&) = delete;
 	virtual ~Font();
 
 	virtual void Create(const FontParameters &fp);
 	virtual void Release();
 
-	FontID GetID() { return fid; }
+	FontID GetID() const noexcept { return fid; }
 	// Alias another font - caller guarantees not to Release
-	void SetID(FontID fid_) { fid = fid_; }
+	void SetID(FontID fid_) noexcept { fid = fid_; }
 	friend class Surface;
 	friend class SurfaceImpl;
 };
@@ -292,12 +326,12 @@ public:
  * A surface abstracts a place to draw.
  */
 class Surface {
-private:
-	// Private so Surface objects can not be copied
-	Surface(const Surface &) {}
-	Surface &operator=(const Surface &) { return *this; }
 public:
-	Surface() {}
+	Surface() noexcept = default;
+	Surface(const Surface &) = delete;
+	Surface(Surface &&) = delete;
+	Surface &operator=(const Surface &) = delete;
+	Surface &operator=(Surface &&) = delete;
 	virtual ~Surface() {}
 	static Surface *Allocate(int technology);
 
@@ -312,13 +346,15 @@ public:
 	virtual int DeviceHeightFont(int points)=0;
 	virtual void MoveTo(int x_, int y_)=0;
 	virtual void LineTo(int x_, int y_)=0;
-	virtual void Polygon(Point *pts, int npts, ColourDesired fore, ColourDesired back)=0;
+	virtual void Polygon(Point *pts, size_t npts, ColourDesired fore, ColourDesired back)=0;
 	virtual void RectangleDraw(PRectangle rc, ColourDesired fore, ColourDesired back)=0;
 	virtual void FillRectangle(PRectangle rc, ColourDesired back)=0;
 	virtual void FillRectangle(PRectangle rc, Surface &surfacePattern)=0;
 	virtual void RoundedRectangle(PRectangle rc, ColourDesired fore, ColourDesired back)=0;
 	virtual void AlphaRectangle(PRectangle rc, int cornerSize, ColourDesired fill, int alphaFill,
 		ColourDesired outline, int alphaOutline, int flags)=0;
+	enum class GradientOptions { leftToRight, topToBottom };
+	virtual void GradientRectangle(PRectangle rc, const std::vector<ColourStop> &stops, GradientOptions options)=0;
 	virtual void DrawRGBAImage(PRectangle rc, int width, int height, const unsigned char *pixelsImage) = 0;
 	virtual void Ellipse(PRectangle rc, ColourDesired fore, ColourDesired back)=0;
 	virtual void Copy(PRectangle rc, Point from, Surface &surfaceSource)=0;
@@ -328,11 +364,9 @@ public:
 	virtual void DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore)=0;
 	virtual void MeasureWidths(Font &font_, const char *s, int len, XYPOSITION *positions)=0;
 	virtual XYPOSITION WidthText(Font &font_, const char *s, int len)=0;
-	virtual XYPOSITION WidthChar(Font &font_, char ch)=0;
 	virtual XYPOSITION Ascent(Font &font_)=0;
 	virtual XYPOSITION Descent(Font &font_)=0;
 	virtual XYPOSITION InternalLeading(Font &font_)=0;
-	virtual XYPOSITION ExternalLeading(Font &font_)=0;
 	virtual XYPOSITION Height(Font &font_)=0;
 	virtual XYPOSITION AverageCharWidth(Font &font_)=0;
 
@@ -343,11 +377,6 @@ public:
 	virtual void SetDBCSMode(int codePage)=0;
 };
 
-/**
- * A simple callback action passing one piece of untyped user data.
- */
-typedef void (*CallBackAction)(void*);
-
 /**
  * Class to hide the details of window manipulation.
  * Does not own the window which will normally have a longer life than this object.
@@ -356,30 +385,31 @@ class Window {
 protected:
 	WindowID wid;
 public:
-	Window() : wid(0), cursorLast(cursorInvalid) {
-	}
-	Window(const Window &source) : wid(source.wid), cursorLast(cursorInvalid) {
+	Window() noexcept : wid(nullptr), cursorLast(cursorInvalid) {
 	}
-	virtual ~Window();
-	Window &operator=(WindowID wid_) {
+	Window(const Window &source) = delete;
+	Window(Window &&) = delete;
+	Window &operator=(WindowID wid_) noexcept {
 		wid = wid_;
+		cursorLast = cursorInvalid;
 		return *this;
 	}
-	WindowID GetID() const { return wid; }
-	bool Created() const { return wid != 0; }
+	Window &operator=(const Window &) = delete;
+	Window &operator=(Window &&) = delete;
+	virtual ~Window();
+	WindowID GetID() const noexcept { return wid; }
+	bool Created() const noexcept { return wid != nullptr; }
 	void Destroy();
-	bool HasFocus();
-	PRectangle GetPosition();
+	PRectangle GetPosition() const;
 	void SetPosition(PRectangle rc);
-	void SetPositionRelative(PRectangle rc, Window relativeTo);
-	PRectangle GetClientPosition();
+	void SetPositionRelative(PRectangle rc, const Window *relativeTo);
+	PRectangle GetClientPosition() const;
 	void Show(bool show=true);
 	void InvalidateAll();
 	void InvalidateRectangle(PRectangle rc);
 	virtual void SetFont(Font &font);
 	enum Cursor { cursorInvalid, cursorText, cursorArrow, cursorUp, cursorWait, cursorHoriz, cursorVert, cursorReverseArrow, cursorHand };
 	void SetCursor(Cursor curs);
-	void SetTitle(const char *s);
 	PRectangle GetMonitorRect(Point pt);
 private:
 	Cursor cursorLast;
@@ -389,13 +419,26 @@ private:
  * Listbox management.
  */
 
+// ScintillaBase implements IListBoxDelegate to receive ListBoxEvents from a ListBox
+
+struct ListBoxEvent {
+	enum class EventType { selectionChange, doubleClick } event;
+	ListBoxEvent(EventType event_) noexcept : event(event_) {
+	}
+};
+
+class IListBoxDelegate {
+public:
+	virtual void ListNotify(ListBoxEvent *plbe)=0;
+};
+
 class ListBox : public Window {
 public:
-	ListBox();
-	virtual ~ListBox();
+	ListBox() noexcept;
+	~ListBox() override;
 	static ListBox *Allocate();
 
-	virtual void SetFont(Font &font)=0;
+	void SetFont(Font &font) override =0;
 	virtual void Create(Window &parent, int ctrlID, Point location, int lineHeight_, bool unicodeMode_, int technology_)=0;
 	virtual void SetAverageCharWidth(int width)=0;
 	virtual void SetVisibleRows(int rows)=0;
@@ -412,7 +455,7 @@ public:
 	virtual void RegisterImage(int type, const char *xpm_data)=0;
 	virtual void RegisterRGBAImage(int type, int width, int height, const unsigned char *pixelsImage) = 0;
 	virtual void ClearRegisteredImages()=0;
-	virtual void SetDoubleClickAction(CallBackAction, void *)=0;
+	virtual void SetDelegate(IListBoxDelegate *lbDelegate)=0;
 	virtual void SetList(const char* list, char separator, char typesep)=0;
 };
 
@@ -422,27 +465,19 @@ public:
 class Menu {
 	MenuID mid;
 public:
-	Menu();
-	MenuID GetID() { return mid; }
+	Menu() noexcept;
+	MenuID GetID() const noexcept { return mid; }
 	void CreatePopUp();
 	void Destroy();
 	void Show(Point pt, Window &w);
 };
 
-class ElapsedTime {
-	long bigBit;
-	long littleBit;
-public:
-	ElapsedTime();
-	double Duration(bool reset=false);
-};
-
 /**
  * Dynamic Library (DLL/SO/...) loading
  */
 class DynamicLibrary {
 public:
-	virtual ~DynamicLibrary() {}
+	virtual ~DynamicLibrary() = default;
 
 	/// @return Pointer to function "name", or NULL on failure.
 	virtual Function FindFunction(const char *name) = 0;
@@ -469,65 +504,34 @@ public:
  * and chrome colour. Not a creatable object, more of a module with several functions.
  */
 class Platform {
-	// Private so Platform objects can not be copied
-	Platform(const Platform &) {}
-	Platform &operator=(const Platform &) { return *this; }
 public:
-	// Should be private because no new Platforms are ever created
-	// but gcc warns about this
-	Platform() {}
-	~Platform() {}
+	Platform() = default;
+	Platform(const Platform &) = delete;
+	Platform(Platform &&) = delete;
+	Platform &operator=(const Platform &) = delete;
+	Platform &operator=(Platform &&) = delete;
+	~Platform() = default;
 	static ColourDesired Chrome();
 	static ColourDesired ChromeHighlight();
 	static const char *DefaultFont();
 	static int DefaultFontSize();
 	static unsigned int DoubleClickTime();
-	static bool MouseButtonBounce();
 	static void DebugDisplay(const char *s);
-	static bool IsKeyDown(int key);
-	static long SendScintilla(
-		WindowID w, unsigned int msg, unsigned long wParam=0, long lParam=0);
-	static long SendScintillaPointer(
-		WindowID w, unsigned int msg, unsigned long wParam=0, void *lParam=0);
-	static bool IsDBCSLeadByte(int codePage, char ch);
-	static int DBCSCharLength(int codePage, const char *s);
-	static int DBCSCharMaxLength();
-
-	// These are utility functions not really tied to a platform
-	static int Minimum(int a, int b);
-	static int Maximum(int a, int b);
-	// Next three assume 16 bit shorts and 32 bit longs
-	static long LongFromTwoShorts(short a,short b) {
+	static constexpr long LongFromTwoShorts(short a,short b) noexcept {
 		return (a) | ((b) << 16);
 	}
-	static short HighShortFromLong(long x) {
-		return static_cast<short>(x >> 16);
-	}
-	static short LowShortFromLong(long x) {
-		return static_cast<short>(x & 0xffff);
-	}
+
 	static void DebugPrintf(const char *format, ...);
 	static bool ShowAssertionPopUps(bool assertionPopUps_);
 	static void Assert(const char *c, const char *file, int line) CLANG_ANALYZER_NORETURN;
-	static int Clamp(int val, int minVal, int maxVal);
 };
 
 #ifdef  NDEBUG
 #define PLATFORM_ASSERT(c) ((void)0)
 #else
-#ifdef SCI_NAMESPACE
 #define PLATFORM_ASSERT(c) ((c) ? (void)(0) : Scintilla::Platform::Assert(#c, __FILE__, __LINE__))
-#else
-#define PLATFORM_ASSERT(c) ((c) ? (void)(0) : Platform::Assert(#c, __FILE__, __LINE__))
-#endif
 #endif
 
-#ifdef SCI_NAMESPACE
 }
-#endif
-
-#if defined(__GNUC__) && defined(SCINTILLA_QT)
-#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
-#endif
 
 #endif

+ 86 - 32
maxguitextareascintilla.mod/scintilla/include/SciLexer.h

@@ -133,6 +133,12 @@
 #define SCLEX_IHEX 118
 #define SCLEX_TEHEX 119
 #define SCLEX_JSON 120
+#define SCLEX_EDIFACT 121
+#define SCLEX_INDENT 122
+#define SCLEX_MAXIMA 123
+#define SCLEX_STATA 124
+#define SCLEX_SAS 125
+#define SCLEX_LPEG 999
 #define SCLEX_AUTOMATIC 1000
 #define SCE_P_DEFAULT 0
 #define SCE_P_COMMENTLINE 1
@@ -150,6 +156,10 @@
 #define SCE_P_STRINGEOL 13
 #define SCE_P_WORD2 14
 #define SCE_P_DECORATOR 15
+#define SCE_P_FSTRING 16
+#define SCE_P_FCHARACTER 17
+#define SCE_P_FTRIPLE 18
+#define SCE_P_FTRIPLEDOUBLE 19
 #define SCE_C_DEFAULT 0
 #define SCE_C_COMMENT 1
 #define SCE_C_COMMENTLINE 2
@@ -551,6 +561,10 @@
 #define SCE_DIFF_DELETED 5
 #define SCE_DIFF_ADDED 6
 #define SCE_DIFF_CHANGED 7
+#define SCE_DIFF_PATCH_ADD 8
+#define SCE_DIFF_PATCH_DELETE 9
+#define SCE_DIFF_REMOVED_PATCH_ADD 10
+#define SCE_DIFF_REMOVED_PATCH_DELETE 11
 #define SCE_CONF_DEFAULT 0
 #define SCE_CONF_COMMENT 1
 #define SCE_CONF_NUMBER 2
@@ -599,6 +613,20 @@
 #define SCE_BAAN_IDENTIFIER 8
 #define SCE_BAAN_STRINGEOL 9
 #define SCE_BAAN_WORD2 10
+#define SCE_BAAN_WORD3 11
+#define SCE_BAAN_WORD4 12
+#define SCE_BAAN_WORD5 13
+#define SCE_BAAN_WORD6 14
+#define SCE_BAAN_WORD7 15
+#define SCE_BAAN_WORD8 16
+#define SCE_BAAN_WORD9 17
+#define SCE_BAAN_TABLEDEF 18
+#define SCE_BAAN_TABLESQL 19
+#define SCE_BAAN_FUNCTION 20
+#define SCE_BAAN_DOMDEF 21
+#define SCE_BAAN_FUNCDEF 22
+#define SCE_BAAN_OBJECTDEF 23
+#define SCE_BAAN_DEFINEDEF 24
 #define SCE_LISP_DEFAULT 0
 #define SCE_LISP_COMMENT 1
 #define SCE_LISP_NUMBER 2
@@ -652,6 +680,14 @@
 #define SCE_MATLAB_OPERATOR 6
 #define SCE_MATLAB_IDENTIFIER 7
 #define SCE_MATLAB_DOUBLEQUOTESTRING 8
+#define SCE_MAXIMA_OPERATOR 0
+#define SCE_MAXIMA_COMMANDENDING 1
+#define SCE_MAXIMA_COMMENT 2
+#define SCE_MAXIMA_NUMBER 3
+#define SCE_MAXIMA_STRING 4
+#define SCE_MAXIMA_COMMAND 5
+#define SCE_MAXIMA_VARIABLE 6
+#define SCE_MAXIMA_UNKNOWN 7
 #define SCE_SCRIPTOL_DEFAULT 0
 #define SCE_SCRIPTOL_WHITE 1
 #define SCE_SCRIPTOL_COMMENTLINE 2
@@ -1277,38 +1313,19 @@
 #define SCE_PLM_OPERATOR 5
 #define SCE_PLM_CONTROL 6
 #define SCE_PLM_KEYWORD 7
-#define SCE_4GL_DEFAULT 0
-#define SCE_4GL_NUMBER 1
-#define SCE_4GL_WORD 2
-#define SCE_4GL_STRING 3
-#define SCE_4GL_CHARACTER 4
-#define SCE_4GL_PREPROCESSOR 5
-#define SCE_4GL_OPERATOR 6
-#define SCE_4GL_IDENTIFIER 7
-#define SCE_4GL_BLOCK 8
-#define SCE_4GL_END 9
-#define SCE_4GL_COMMENT1 10
-#define SCE_4GL_COMMENT2 11
-#define SCE_4GL_COMMENT3 12
-#define SCE_4GL_COMMENT4 13
-#define SCE_4GL_COMMENT5 14
-#define SCE_4GL_COMMENT6 15
-#define SCE_4GL_DEFAULT_ 16
-#define SCE_4GL_NUMBER_ 17
-#define SCE_4GL_WORD_ 18
-#define SCE_4GL_STRING_ 19
-#define SCE_4GL_CHARACTER_ 20
-#define SCE_4GL_PREPROCESSOR_ 21
-#define SCE_4GL_OPERATOR_ 22
-#define SCE_4GL_IDENTIFIER_ 23
-#define SCE_4GL_BLOCK_ 24
-#define SCE_4GL_END_ 25
-#define SCE_4GL_COMMENT1_ 26
-#define SCE_4GL_COMMENT2_ 27
-#define SCE_4GL_COMMENT3_ 28
-#define SCE_4GL_COMMENT4_ 29
-#define SCE_4GL_COMMENT5_ 30
-#define SCE_4GL_COMMENT6_ 31
+#define SCE_ABL_DEFAULT 0
+#define SCE_ABL_NUMBER 1
+#define SCE_ABL_WORD 2
+#define SCE_ABL_STRING 3
+#define SCE_ABL_CHARACTER 4
+#define SCE_ABL_PREPROCESSOR 5
+#define SCE_ABL_OPERATOR 6
+#define SCE_ABL_IDENTIFIER 7
+#define SCE_ABL_BLOCK 8
+#define SCE_ABL_END 9
+#define SCE_ABL_COMMENT 10
+#define SCE_ABL_TASKMARKER 11
+#define SCE_ABL_LINECOMMENT 12
 #define SCE_ABAQUS_DEFAULT 0
 #define SCE_ABAQUS_COMMENT 1
 #define SCE_ABAQUS_COMMENTBLOCK 2
@@ -1802,6 +1819,43 @@
 #define SCE_JSON_KEYWORD 11
 #define SCE_JSON_LDKEYWORD 12
 #define SCE_JSON_ERROR 13
+#define SCE_EDI_DEFAULT 0
+#define SCE_EDI_SEGMENTSTART 1
+#define SCE_EDI_SEGMENTEND 2
+#define SCE_EDI_SEP_ELEMENT 3
+#define SCE_EDI_SEP_COMPOSITE 4
+#define SCE_EDI_SEP_RELEASE 5
+#define SCE_EDI_UNA 6
+#define SCE_EDI_UNH 7
+#define SCE_EDI_BADSEGMENT 8
+#define SCE_STATA_DEFAULT 0
+#define SCE_STATA_COMMENT 1
+#define SCE_STATA_COMMENTLINE 2
+#define SCE_STATA_COMMENTBLOCK 3
+#define SCE_STATA_NUMBER 4
+#define SCE_STATA_OPERATOR 5
+#define SCE_STATA_IDENTIFIER 6
+#define SCE_STATA_STRING 7
+#define SCE_STATA_TYPE 8
+#define SCE_STATA_WORD 9
+#define SCE_STATA_GLOBAL_MACRO 10
+#define SCE_STATA_MACRO 11
+#define SCE_SAS_DEFAULT 0
+#define SCE_SAS_COMMENT 1
+#define SCE_SAS_COMMENTLINE 2
+#define SCE_SAS_COMMENTBLOCK 3
+#define SCE_SAS_NUMBER 4
+#define SCE_SAS_OPERATOR 5
+#define SCE_SAS_IDENTIFIER 6
+#define SCE_SAS_STRING 7
+#define SCE_SAS_TYPE 8
+#define SCE_SAS_WORD 9
+#define SCE_SAS_GLOBAL_MACRO 10
+#define SCE_SAS_MACRO 11
+#define SCE_SAS_MACRO_KEYWORD 12
+#define SCE_SAS_BLOCK_KEYWORD 13
+#define SCE_SAS_MACRO_FUNCTION 14
+#define SCE_SAS_STATEMENT 15
 /* --Autogenerated -- end of section automatically generated from Scintilla.iface */
 
 #endif

+ 10 - 2
maxguitextareascintilla.mod/scintilla/include/Sci_Position.h

@@ -9,13 +9,21 @@
 #ifndef SCI_POSITION_H
 #define SCI_POSITION_H
 
+#include <stddef.h>
+
 // Basic signed type used throughout interface
-typedef int Sci_Position;
+typedef ptrdiff_t Sci_Position;
 
 // Unsigned variant used for ILexer::Lex and ILexer::Fold
-typedef unsigned int Sci_PositionU;
+typedef size_t Sci_PositionU;
 
 // For Sci_CharacterRange  which is defined as long to be compatible with Win32 CHARRANGE
 typedef long Sci_PositionCR;
 
+#ifdef _WIN32
+	#define SCI_METHOD __stdcall
+#else
+	#define SCI_METHOD
+#endif
+
 #endif

+ 80 - 37
maxguitextareascintilla.mod/scintilla/include/Scintilla.h

@@ -11,8 +11,6 @@
 #ifndef SCINTILLA_H
 #define SCINTILLA_H
 
-#include "Sci_Position.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -28,19 +26,15 @@ int Scintilla_LinkLexers(void);
 }
 #endif
 
-/* Here should be placed typedefs for uptr_t, an unsigned integer type large enough to
- * hold a pointer and sptr_t, a signed integer large enough to hold a pointer.
- * May need to be changed for 64 bit platforms. */
-#if defined(_WIN32)
-#include <basetsd.h>
-#endif
-#ifdef MAXULONG_PTR
-typedef ULONG_PTR uptr_t;
-typedef LONG_PTR sptr_t;
-#else
-typedef unsigned long uptr_t;
-typedef long sptr_t;
-#endif
+// Include header that defines basic numeric types.
+#include <stdint.h>
+
+// Define uptr_t, an unsigned integer type large enough to hold a pointer.
+typedef uintptr_t uptr_t;
+// Define sptr_t, a signed integer large enough to hold a pointer.
+typedef intptr_t sptr_t;
+
+#include "Sci_Position.h"
 
 typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam);
 
@@ -76,6 +70,10 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCWS_VISIBLEONLYININDENT 3
 #define SCI_GETVIEWWS 2020
 #define SCI_SETVIEWWS 2021
+#define SCTD_LONGARROW 0
+#define SCTD_STRIKEOUT 1
+#define SCI_GETTABDRAWMODE 2698
+#define SCI_SETTABDRAWMODE 2699
 #define SCI_POSITIONFROMPOINT 2022
 #define SCI_POSITIONFROMPOINTCLOSE 2023
 #define SCI_GOTOLINE 2024
@@ -167,6 +165,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SC_MARGIN_FORE 3
 #define SC_MARGIN_TEXT 4
 #define SC_MARGIN_RTEXT 5
+#define SC_MARGIN_COLOUR 6
 #define SCI_SETMARGINTYPEN 2240
 #define SCI_GETMARGINTYPEN 2241
 #define SCI_SETMARGINWIDTHN 2242
@@ -177,6 +176,10 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCI_GETMARGINSENSITIVEN 2247
 #define SCI_SETMARGINCURSORN 2248
 #define SCI_GETMARGINCURSORN 2249
+#define SCI_SETMARGINBACKN 2250
+#define SCI_GETMARGINBACKN 2251
+#define SCI_SETMARGINS 2252
+#define SCI_GETMARGINS 2253
 #define STYLE_DEFAULT 32
 #define STYLE_LINENUMBER 33
 #define STYLE_BRACELIGHT 34
@@ -184,6 +187,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define STYLE_CONTROLCHAR 36
 #define STYLE_INDENTGUIDE 37
 #define STYLE_CALLTIP 38
+#define STYLE_FOLDDISPLAYTEXT 39
 #define STYLE_LASTPREDEFINED 39
 #define STYLE_MAX 255
 #define SC_CHARSET_ANSI 0
@@ -282,6 +286,10 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define INDIC_COMPOSITIONTHIN 15
 #define INDIC_FULLBOX 16
 #define INDIC_TEXTFORE 17
+#define INDIC_POINT 18
+#define INDIC_POINTCHARACTER 19
+#define INDIC_GRADIENT 20
+#define INDIC_GRADIENTCENTRE 21
 #define INDIC_IME 32
 #define INDIC_IME_MAX 35
 #define INDIC_MAX 35
@@ -309,8 +317,6 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCI_SETWHITESPACEBACK 2085
 #define SCI_SETWHITESPACESIZE 2086
 #define SCI_GETWHITESPACESIZE 2087
-#define SCI_SETSTYLEBITS 2090
-#define SCI_GETSTYLEBITS 2091
 #define SCI_SETLINESTATE 2092
 #define SCI_GETLINESTATE 2093
 #define SCI_GETMAXLINESTATE 2094
@@ -318,6 +324,8 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCI_SETCARETLINEVISIBLE 2096
 #define SCI_GETCARETLINEBACK 2097
 #define SCI_SETCARETLINEBACK 2098
+#define SCI_GETCARETLINEFRAME 2704
+#define SCI_SETCARETLINEFRAME 2705
 #define SCI_STYLESETCHANGEABLE 2099
 #define SCI_AUTOCSHOW 2100
 #define SCI_AUTOCCANCEL 2101
@@ -357,6 +365,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCI_GETLINEINDENTPOSITION 2128
 #define SCI_GETCOLUMN 2129
 #define SCI_COUNTCHARACTERS 2633
+#define SCI_COUNTCODEUNITS 2715
 #define SCI_SETHSCROLLBAR 2130
 #define SCI_GETHSCROLLBAR 2131
 #define SC_IV_NONE 0
@@ -384,6 +393,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SC_PRINT_BLACKONWHITE 2
 #define SC_PRINT_COLOURONWHITE 3
 #define SC_PRINT_COLOURONWHITEDEFAULTBG 4
+#define SC_PRINT_SCREENCOLOURS 5
 #define SCI_SETPRINTCOLOURMODE 2148
 #define SCI_GETPRINTCOLOURMODE 2149
 #define SCFIND_WHOLEWORD 0x2
@@ -475,6 +485,11 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCI_SETFOLDEXPANDED 2229
 #define SCI_GETFOLDEXPANDED 2230
 #define SCI_TOGGLEFOLD 2231
+#define SCI_TOGGLEFOLDSHOWTEXT 2700
+#define SC_FOLDDISPLAYTEXT_HIDDEN 0
+#define SC_FOLDDISPLAYTEXT_STANDARD 1
+#define SC_FOLDDISPLAYTEXT_BOXED 2
+#define SCI_FOLDDISPLAYTEXTSETSTYLE 2701
 #define SC_FOLDACTION_CONTRACT 0
 #define SC_FOLDACTION_EXPAND 1
 #define SC_FOLDACTION_TOGGLE 2
@@ -534,6 +549,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SC_WRAPINDENT_FIXED 0
 #define SC_WRAPINDENT_SAME 1
 #define SC_WRAPINDENT_INDENT 2
+#define SC_WRAPINDENT_DEEPINDENT 3
 #define SCI_SETWRAPINDENTMODE 2472
 #define SCI_GETWRAPINDENTMODE 2473
 #define SC_CACHE_NONE 0
@@ -577,6 +593,10 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCI_LINESSPLIT 2289
 #define SCI_SETFOLDMARGINCOLOUR 2290
 #define SCI_SETFOLDMARGINHICOLOUR 2291
+#define SC_ACCESSIBILITY_DISABLED 0
+#define SC_ACCESSIBILITY_ENABLED 1
+#define SCI_SETACCESSIBILITY 2702
+#define SCI_GETACCESSIBILITY 2703
 #define SCI_LINEDOWN 2300
 #define SCI_LINEDOWNEXTEND 2301
 #define SCI_LINEUP 2302
@@ -618,6 +638,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCI_LINECUT 2337
 #define SCI_LINEDELETE 2338
 #define SCI_LINETRANSPOSE 2339
+#define SCI_LINEREVERSE 2354
 #define SCI_LINEDUPLICATE 2404
 #define SCI_LOWERCASE 2340
 #define SCI_UPPERCASE 2341
@@ -650,24 +671,36 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define EDGE_NONE 0
 #define EDGE_LINE 1
 #define EDGE_BACKGROUND 2
+#define EDGE_MULTILINE 3
 #define SCI_GETEDGECOLUMN 2360
 #define SCI_SETEDGECOLUMN 2361
 #define SCI_GETEDGEMODE 2362
 #define SCI_SETEDGEMODE 2363
 #define SCI_GETEDGECOLOUR 2364
 #define SCI_SETEDGECOLOUR 2365
+#define SCI_MULTIEDGEADDLINE 2694
+#define SCI_MULTIEDGECLEARALL 2695
 #define SCI_SEARCHANCHOR 2366
 #define SCI_SEARCHNEXT 2367
 #define SCI_SEARCHPREV 2368
 #define SCI_LINESONSCREEN 2370
+#define SC_POPUP_NEVER 0
+#define SC_POPUP_ALL 1
+#define SC_POPUP_TEXT 2
 #define SCI_USEPOPUP 2371
 #define SCI_SELECTIONISRECTANGLE 2372
 #define SCI_SETZOOM 2373
 #define SCI_GETZOOM 2374
+#define SC_DOCUMENTOPTION_DEFAULT 0
+#define SC_DOCUMENTOPTION_STYLES_NONE 0x1
+#define SC_DOCUMENTOPTION_TEXT_LARGE 0x100
 #define SCI_CREATEDOCUMENT 2375
 #define SCI_ADDREFDOCUMENT 2376
 #define SCI_RELEASEDOCUMENT 2377
+#define SCI_GETDOCUMENTOPTIONS 2379
 #define SCI_GETMODEVENTMASK 2378
+#define SCI_SETCOMMANDEVENTS 2717
+#define SCI_GETCOMMANDEVENTS 2718
 #define SCI_SETFOCUS 2380
 #define SCI_GETFOCUS 2381
 #define SC_STATUS_OK 0
@@ -679,6 +712,8 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCI_GETSTATUS 2383
 #define SCI_SETMOUSEDOWNCAPTURES 2384
 #define SCI_GETMOUSEDOWNCAPTURES 2385
+#define SCI_SETMOUSEWHEELCAPTURES 2696
+#define SCI_GETMOUSEWHEELCAPTURES 2697
 #define SC_CURSORNORMAL -1
 #define SC_CURSORARROW 2
 #define SC_CURSORWAIT 4
@@ -723,6 +758,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCI_POSITIONBEFORE 2417
 #define SCI_POSITIONAFTER 2418
 #define SCI_POSITIONRELATIVE 2670
+#define SCI_POSITIONRELATIVECODEUNITS 2716
 #define SCI_COPYRANGE 2419
 #define SCI_COPYTEXT 2420
 #define SC_SEL_STREAM 0
@@ -731,6 +767,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SC_SEL_THIN 3
 #define SCI_SETSELECTIONMODE 2422
 #define SCI_GETSELECTIONMODE 2423
+#define SCI_GETMOVEEXTENDSSELECTION 2706
 #define SCI_GETLINESELSTARTPOSITION 2424
 #define SCI_GETLINESELENDPOSITION 2425
 #define SCI_LINEDOWNRECTEXTEND 2426
@@ -959,7 +996,6 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCI_GETPROPERTY 4008
 #define SCI_GETPROPERTYEXPANDED 4009
 #define SCI_GETPROPERTYINT 4010
-#define SCI_GETSTYLEBITSNEEDED 4011
 #define SCI_GETLEXERLANGUAGE 4012
 #define SCI_PRIVATELEXERCALL 4013
 #define SCI_PROPERTYNAMES 4014
@@ -979,6 +1015,10 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCI_SETIDENTIFIERS 4024
 #define SCI_DISTANCETOSECONDARYSTYLES 4025
 #define SCI_GETSUBSTYLEBASES 4026
+#define SCI_GETNAMEDSTYLES 4029
+#define SCI_NAMEOFSTYLE 4030
+#define SCI_TAGSOFSTYLE 4031
+#define SCI_DESCRIPTIONOFSTYLE 4032
 #define SC_MOD_INSERTTEXT 0x1
 #define SC_MOD_DELETETEXT 0x2
 #define SC_MOD_CHANGESTYLE 0x4
@@ -1070,16 +1110,24 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCN_FOCUSIN 2028
 #define SCN_FOCUSOUT 2029
 #define SCN_AUTOCCOMPLETED 2030
+#define SCN_MARGINRIGHTCLICK 2031
+#define SCN_AUTOCSELECTIONCHANGE 2032
+#ifndef SCI_DISABLE_PROVISIONAL
+#define SC_LINECHARACTERINDEX_NONE 0
+#define SC_LINECHARACTERINDEX_UTF32 1
+#define SC_LINECHARACTERINDEX_UTF16 2
+#define SCI_GETLINECHARACTERINDEX 2710
+#define SCI_ALLOCATELINECHARACTERINDEX 2711
+#define SCI_RELEASELINECHARACTERINDEX 2712
+#define SCI_LINEFROMINDEXPOSITION 2713
+#define SCI_INDEXPOSITIONFROMLINE 2714
+#endif
 /* --Autogenerated -- end of section automatically generated from Scintilla.iface */
 
 /* These structures are defined to be exactly the same shape as the Win32
  * CHARRANGE, TEXTRANGE, FINDTEXTEX, FORMATRANGE, and NMHDR structs.
  * So older code that treats Scintilla as a RichEdit will work. */
 
-#if defined(__cplusplus) && defined(SCI_NAMESPACE)
-namespace Scintilla {
-#endif
-
 struct Sci_CharacterRange {
 	Sci_PositionCR cpMin;
 	Sci_PositionCR cpMax;
@@ -1096,10 +1144,6 @@ struct Sci_TextToFind {
 	struct Sci_CharacterRange chrgText;
 };
 
-#define CharacterRange Sci_CharacterRange
-#define TextRange Sci_TextRange
-#define TextToFind Sci_TextToFind
-
 typedef void *Sci_SurfaceID;
 
 struct Sci_Rectangle {
@@ -1120,8 +1164,6 @@ struct Sci_RangeToFormat {
 	struct Sci_CharacterRange chrg;
 };
 
-#define RangeToFormat Sci_RangeToFormat
-
 #ifndef __cplusplus
 /* For the GTK+ platform, g-ir-scanner needs to have these typedefs. This
  * is not required in C++ code and actually seems to break ScintillaEditPy */
@@ -1138,8 +1180,6 @@ struct Sci_NotifyHeader {
 	unsigned int code;
 };
 
-#define NotifyHeader Sci_NotifyHeader
-
 struct SCNotification {
 	Sci_NotifyHeader nmhdr;
 	Sci_Position position;
@@ -1179,18 +1219,21 @@ struct SCNotification {
 	/* SCN_AUTOCSELECTION, SCN_AUTOCCOMPLETED, SCN_USERLISTSELECTION, */
 };
 
-#if defined(__cplusplus) && defined(SCI_NAMESPACE)
-}
-#endif
-
 #ifdef INCLUDE_DEPRECATED_FEATURES
 
-#define SC_CP_DBCS 1
-#define SCI_SETUSEPALETTE 2039
-#define SCI_GETUSEPALETTE 2139
 #define SCI_SETKEYSUNICODE 2521
 #define SCI_GETKEYSUNICODE 2522
 
+#define CharacterRange Sci_CharacterRange
+#define TextRange Sci_TextRange
+#define TextToFind Sci_TextToFind
+#define RangeToFormat Sci_RangeToFormat
+#define NotifyHeader Sci_NotifyHeader
+
+#define SCI_SETSTYLEBITS 2090
+#define SCI_GETSTYLEBITS 2091
+#define SCI_GETSTYLEBITSNEEDED 4011
+
 #endif
 
 #endif

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 259 - 125
maxguitextareascintilla.mod/scintilla/include/Scintilla.iface


+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexA68k.cxx

@@ -26,9 +26,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 
 // Return values for GetOperatorType

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexAPDL.cxx

@@ -24,9 +24,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static inline bool IsAWordChar(const int ch) {
 	return (ch < 0x80 && (isalnum(ch) || ch == '_'));

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexASY.cxx

@@ -19,9 +19,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static void ColouriseAsyDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,
 		WordList *keywordlists[], Accessor &styler) {

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexAU3.cxx

@@ -68,9 +68,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static inline bool IsTypeCharacter(const int ch)
 {

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexAVE.cxx

@@ -25,9 +25,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 
 static inline bool IsAWordChar(const int ch) {

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexAVS.cxx

@@ -24,9 +24,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static inline bool IsAWordChar(const int ch) {
 	return (ch < 0x80) && (isalnum(ch) || ch == '_');

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexAbaqus.cxx

@@ -26,9 +26,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static inline bool IsAKeywordChar(const int ch) {
 	return (ch < 0x80 && (isalnum(ch) || (ch == '_') || (ch == ' ')));

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexAda.cxx

@@ -25,9 +25,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 /*
  * Interface

+ 13 - 14
maxguitextareascintilla.mod/scintilla/lexers/LexAsm.cxx

@@ -30,10 +30,9 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 #include "OptionSet.h"
+#include "DefaultLexer.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static inline bool IsAWordChar(const int ch) {
 	return (ch < 0x80) && (isalnum(ch) || ch == '.' ||
@@ -139,7 +138,7 @@ struct OptionSetAsm : public OptionSet<OptionsAsm> {
 	}
 };
 
-class LexerAsm : public ILexer {
+class LexerAsm : public DefaultLexer {
 	WordList cpuInstruction;
 	WordList mathInstruction;
 	WordList registers;
@@ -157,30 +156,30 @@ public:
 	}
 	virtual ~LexerAsm() {
 	}
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvOriginal;
 	}
-	const char * SCI_METHOD PropertyNames() {
+	const char * SCI_METHOD PropertyNames() override {
 		return osAsm.PropertyNames();
 	}
-	int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return osAsm.PropertyType(name);
 	}
-	const char * SCI_METHOD DescribeProperty(const char *name) {
+	const char * SCI_METHOD DescribeProperty(const char *name) override {
 		return osAsm.DescribeProperty(name);
 	}
-	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
-	const char * SCI_METHOD DescribeWordListSets() {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
+	const char * SCI_METHOD DescribeWordListSets() override {
 		return osAsm.DescribeWordListSets();
 	}
-	Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-	void * SCI_METHOD PrivateCall(int, void *) {
+	void * SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexAsn1.cxx

@@ -23,9 +23,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 // Some char test functions
 static bool isAsn1Number(int ch)

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 860 - 67
maxguitextareascintilla.mod/scintilla/lexers/LexBaan.cxx


+ 30 - 4
maxguitextareascintilla.mod/scintilla/lexers/LexBash.cxx

@@ -23,9 +23,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 #define HERE_DELIM_MAX			256
 
@@ -97,13 +95,26 @@ static int opposite(int ch) {
 }
 
 static int GlobScan(StyleContext &sc) {
-	// forward scan for a glob-like (...), no whitespace allowed
+	// forward scan for zsh globs, disambiguate versus bash arrays
+	// complex expressions may still fail, e.g. unbalanced () '' "" etc
 	int c, sLen = 0;
+	int pCount = 0;
+	int hash = 0;
 	while ((c = sc.GetRelativeCharacter(++sLen)) != 0) {
 		if (IsASpace(c)) {
 			return 0;
+		} else if (c == '\'' || c == '\"') {
+			if (hash != 2) return 0;
+		} else if (c == '#' && hash == 0) {
+			hash = (sLen == 1) ? 2:1;
+		} else if (c == '(') {
+			pCount++;
 		} else if (c == ')') {
-			return sLen;
+			if (pCount == 0) {
+				if (hash) return sLen;
+				return 0;
+			}
+			pCount--;
 		}
 	}
 	return 0;
@@ -813,6 +824,8 @@ static void FoldBashDoc(Sci_PositionU startPos, Sci_Position length, int, WordLi
 	int levelCurrent = levelPrev;
 	char chNext = styler[startPos];
 	int styleNext = styler.StyleAt(startPos);
+	char word[8] = { '\0' }; // we're not interested in long words anyway
+	unsigned int wordlen = 0;
 	for (Sci_PositionU i = startPos; i < endPos; i++) {
 		char ch = chNext;
 		chNext = styler.SafeGetCharAt(i + 1);
@@ -829,6 +842,19 @@ static void FoldBashDoc(Sci_PositionU startPos, Sci_Position length, int, WordLi
 					 && !IsCommentLine(lineCurrent + 1, styler))
 				levelCurrent--;
 		}
+		if (style == SCE_SH_WORD) {
+			if ((wordlen + 1) < sizeof(word))
+				word[wordlen++] = ch;
+			if (styleNext != style) {
+				word[wordlen] = '\0';
+				wordlen = 0;
+				if (strcmp(word, "if") == 0 || strcmp(word, "case") == 0 || strcmp(word, "do") == 0) {
+					levelCurrent++;
+				} else if (strcmp(word, "fi") == 0 || strcmp(word, "esac") == 0 || strcmp(word, "done") == 0) {
+					levelCurrent--;
+				}
+			}
+		}
 		if (style == SCE_SH_OPERATOR) {
 			if (ch == '{') {
 				levelCurrent++;

+ 13 - 14
maxguitextareascintilla.mod/scintilla/lexers/LexBasic.cxx

@@ -37,10 +37,9 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 #include "OptionSet.h"
+#include "DefaultLexer.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 /* Bits:
  * 1  - whitespace
@@ -226,7 +225,7 @@ struct OptionSetBasic : public OptionSet<OptionsBasic> {
 	}
 };
 
-class LexerBasic : public ILexer {
+class LexerBasic : public DefaultLexer {
 	char comment_char;
 	int (*CheckFoldPoint)(char const *, int &);
 	WordList keywordlists[4];
@@ -240,30 +239,30 @@ public:
 	}
 	virtual ~LexerBasic() {
 	}
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvOriginal;
 	}
-	const char * SCI_METHOD PropertyNames() {
+	const char * SCI_METHOD PropertyNames() override {
 		return osBasic.PropertyNames();
 	}
-	int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return osBasic.PropertyType(name);
 	}
-	const char * SCI_METHOD DescribeProperty(const char *name) {
+	const char * SCI_METHOD DescribeProperty(const char *name) override {
 		return osBasic.DescribeProperty(name);
 	}
-	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
-	const char * SCI_METHOD DescribeWordListSets() {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
+	const char * SCI_METHOD DescribeWordListSets() override {
 		return osBasic.DescribeWordListSets();
 	}
-	Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-	void * SCI_METHOD PrivateCall(int, void *) {
+	void * SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 	static ILexer *LexerFactoryBlitzBasic() {

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexBatch.cxx

@@ -23,9 +23,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static bool Is0To9(char ch) {
 	return (ch >= '0') && (ch <= '9');

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexBibTeX.cxx

@@ -30,9 +30,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 namespace {
 	bool IsAlphabetic(unsigned int ch)

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexBullant.cxx

@@ -19,9 +19,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static int classifyWordBullant(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler) {
 	char s[100];

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexCLW.cxx

@@ -24,9 +24,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 // Is an end of line character
 inline bool IsEOL(const int ch) {

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexCOBOL.cxx

@@ -26,9 +26,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 #define IN_DIVISION 0x01
 #define IN_DECLARATIVES 0x02

+ 189 - 104
maxguitextareascintilla.mod/scintilla/lexers/LexCPP.cxx

@@ -13,6 +13,7 @@
 #include <assert.h>
 #include <ctype.h>
 
+#include <utility>
 #include <string>
 #include <vector>
 #include <map>
@@ -22,6 +23,7 @@
 #include "Scintilla.h"
 #include "SciLexer.h"
 
+#include "StringCopy.h"
 #include "WordList.h"
 #include "LexAccessor.h"
 #include "Accessor.h"
@@ -32,14 +34,12 @@
 #include "SparseState.h"
 #include "SubStyles.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 namespace {
 	// Use an unnamed namespace to protect the functions and classes from name conflicts
 
-bool IsSpaceEquiv(int state) {
+bool IsSpaceEquiv(int state) noexcept {
 	return (state <= SCE_C_COMMENTDOC) ||
 		// including SCE_C_DEFAULT, SCE_C_COMMENT, SCE_C_COMMENTLINE
 		(state == SCE_C_COMMENTLINEDOC) || (state == SCE_C_COMMENTDOCKEYWORD) ||
@@ -53,10 +53,10 @@ bool IsSpaceEquiv(int state) {
 // a = b+++/ptn/...
 // Putting a space between the '++' post-inc operator and the '+' binary op
 // fixes this, and is highly recommended for readability anyway.
-bool FollowsPostfixOperator(StyleContext &sc, LexAccessor &styler) {
-	Sci_Position pos = (Sci_Position) sc.currentPos;
+bool FollowsPostfixOperator(const StyleContext &sc, LexAccessor &styler) {
+	Sci_Position pos = sc.currentPos;
 	while (--pos > 0) {
-		char ch = styler[pos];
+		const char ch = styler[pos];
 		if (ch == '+' || ch == '-') {
 			return styler[pos - 1] == ch;
 		}
@@ -64,13 +64,13 @@ bool FollowsPostfixOperator(StyleContext &sc, LexAccessor &styler) {
 	return false;
 }
 
-bool followsReturnKeyword(StyleContext &sc, LexAccessor &styler) {
+bool followsReturnKeyword(const StyleContext &sc, LexAccessor &styler) {
 	// Don't look at styles, so no need to flush.
-	Sci_Position pos = (Sci_Position) sc.currentPos;
-	Sci_Position currentLine = styler.GetLine(pos);
-	Sci_Position lineStartPos = styler.LineStart(currentLine);
+	Sci_Position pos = sc.currentPos;
+	const Sci_Position currentLine = styler.GetLine(pos);
+	const Sci_Position lineStartPos = styler.LineStart(currentLine);
 	while (--pos > lineStartPos) {
-		char ch = styler.SafeGetCharAt(pos);
+		const char ch = styler.SafeGetCharAt(pos);
 		if (ch != ' ' && ch != '\t') {
 			break;
 		}
@@ -86,13 +86,13 @@ bool followsReturnKeyword(StyleContext &sc, LexAccessor &styler) {
 	return !*s;
 }
 
-bool IsSpaceOrTab(int ch) {
+bool IsSpaceOrTab(int ch) noexcept {
 	return ch == ' ' || ch == '\t';
 }
 
-bool OnlySpaceOrTab(const std::string &s) {
-	for (std::string::const_iterator it = s.begin(); it != s.end(); ++it) {
-		if (!IsSpaceOrTab(*it))
+bool OnlySpaceOrTab(const std::string &s) noexcept {
+	for (const char ch : s) {
+		if (!IsSpaceOrTab(ch))
 			return false;
 	}
 	return true;
@@ -100,11 +100,11 @@ bool OnlySpaceOrTab(const std::string &s) {
 
 std::vector<std::string> StringSplit(const std::string &text, int separator) {
 	std::vector<std::string> vs(text.empty() ? 0 : 1);
-	for (std::string::const_iterator it = text.begin(); it != text.end(); ++it) {
-		if (*it == separator) {
-			vs.push_back(std::string());
+	for (const char ch : text) {
+		if (ch == separator) {
+			vs.emplace_back();
 		} else {
-			vs.back() += *it;
+			vs.back() += ch;
 		}
 	}
 	return vs;
@@ -141,21 +141,21 @@ BracketPair FindBracketPair(std::vector<std::string> &tokens) {
 }
 
 void highlightTaskMarker(StyleContext &sc, LexAccessor &styler,
-		int activity, WordList &markerList, bool caseSensitive){
+		int activity, const WordList &markerList, bool caseSensitive){
 	if ((isoperator(sc.chPrev) || IsASpace(sc.chPrev)) && markerList.Length()) {
 		const int lengthMarker = 50;
-		char marker[lengthMarker+1];
-		Sci_Position currPos = (Sci_Position) sc.currentPos;
+		char marker[lengthMarker+1] = "";
+		const Sci_Position currPos = static_cast<Sci_Position>(sc.currentPos);
 		int i = 0;
 		while (i < lengthMarker) {
-			char ch = styler.SafeGetCharAt(currPos + i);
+			const char ch = styler.SafeGetCharAt(currPos + i);
 			if (IsASpace(ch) || isoperator(ch)) {
 				break;
 			}
 			if (caseSensitive)
 				marker[i] = ch;
 			else
-				marker[i] = static_cast<char>(tolower(ch));
+				marker[i] = MakeLowerCase(ch);
 			i++;
 		}
 		marker[i] = '\0';
@@ -203,9 +203,9 @@ std::string GetRestOfLine(LexAccessor &styler, Sci_Position start, bool allowSpa
 	std::string restOfLine;
 	Sci_Position i =0;
 	char ch = styler.SafeGetCharAt(start, '\n');
-	Sci_Position endLine = styler.LineEnd(styler.GetLine(start));
+	const Sci_Position endLine = styler.LineEnd(styler.GetLine(start));
 	while (((start+i) < endLine) && (ch != '\r')) {
-		char chNext = styler.SafeGetCharAt(start + i + 1, '\n');
+		const char chNext = styler.SafeGetCharAt(start + i + 1, '\n');
 		if (ch == '/' && (chNext == '/' || chNext == '*'))
 			break;
 		if (allowSpace || (ch != ' '))
@@ -216,7 +216,7 @@ std::string GetRestOfLine(LexAccessor &styler, Sci_Position start, bool allowSpa
 	return restOfLine;
 }
 
-bool IsStreamCommentStyle(int style) {
+bool IsStreamCommentStyle(int style) noexcept {
 	return style == SCE_C_COMMENT ||
 		style == SCE_C_COMMENTDOC ||
 		style == SCE_C_COMMENTDOCKEYWORD ||
@@ -238,22 +238,26 @@ class LinePPState {
 	int state;
 	int ifTaken;
 	int level;
-	bool ValidLevel() const {
+	bool ValidLevel() const noexcept {
 		return level >= 0 && level < 32;
 	}
-	int maskLevel() const {
-		return 1 << level;
+	int maskLevel() const noexcept {
+		if (level >= 0) {
+			return 1 << level;
+		} else {
+			return 1;
+		}
 	}
 public:
 	LinePPState() : state(0), ifTaken(0), level(-1) {
 	}
-	bool IsInactive() const {
+	bool IsInactive() const noexcept {
 		return state != 0;
 	}
-	bool CurrentIfTaken() const {
+	bool CurrentIfTaken() const noexcept {
 		return (ifTaken & maskLevel()) != 0;
 	}
-	void StartSection(bool on) {
+	void StartSection(bool on) noexcept {
 		level++;
 		if (ValidLevel()) {
 			if (on) {
@@ -265,14 +269,14 @@ public:
 			}
 		}
 	}
-	void EndSection() {
+	void EndSection() noexcept {
 		if (ValidLevel()) {
 			state &= ~maskLevel();
 			ifTaken &= ~maskLevel();
 		}
 		level--;
 	}
-	void InvertCurrentLevel() {
+	void InvertCurrentLevel() noexcept {
 		if (ValidLevel()) {
 			state ^= maskLevel();
 			ifTaken |= maskLevel();
@@ -413,7 +417,7 @@ struct OptionSetCPP : public OptionSet<OptionsCPP> {
 
 		DefineProperty("fold.cpp.explicit.anywhere", &OptionsCPP::foldExplicitAnywhere,
 			"Set this property to 1 to enable explicit fold points anywhere, not just in line comments.");
-		
+
 		DefineProperty("fold.cpp.preprocessor.at.else", &OptionsCPP::foldPreprocessorAtElse,
 			"This option enables folding on a preprocessor #else or #endif line of an #if statement.");
 
@@ -432,9 +436,41 @@ struct OptionSetCPP : public OptionSet<OptionsCPP> {
 
 const char styleSubable[] = {SCE_C_IDENTIFIER, SCE_C_COMMENTDOCKEYWORD, 0};
 
+LexicalClass lexicalClasses[] = {
+	// Lexer Cpp SCLEX_CPP SCE_C_:
+	0, "SCE_C_DEFAULT", "default", "White space",
+	1, "SCE_C_COMMENT", "comment", "Comment: /* */.",
+	2, "SCE_C_COMMENTLINE", "comment line", "Line Comment: //.",
+	3, "SCE_C_COMMENTDOC", "comment documentation", "Doc comment: block comments beginning with /** or /*!",
+	4, "SCE_C_NUMBER", "literal numeric", "Number",
+	5, "SCE_C_WORD", "keyword", "Keyword",
+	6, "SCE_C_STRING", "literal string", "Double quoted string",
+	7, "SCE_C_CHARACTER", "literal string character", "Single quoted string",
+	8, "SCE_C_UUID", "literal uuid", "UUIDs (only in IDL)",
+	9, "SCE_C_PREPROCESSOR", "preprocessor", "Preprocessor",
+	10, "SCE_C_OPERATOR", "operator", "Operators",
+	11, "SCE_C_IDENTIFIER", "identifier", "Identifiers",
+	12, "SCE_C_STRINGEOL", "error literal string", "End of line where string is not closed",
+	13, "SCE_C_VERBATIM", "literal string multiline raw", "Verbatim strings for C#",
+	14, "SCE_C_REGEX", "literal regex", "Regular expressions for JavaScript",
+	15, "SCE_C_COMMENTLINEDOC", "comment documentation line", "Doc Comment Line: line comments beginning with /// or //!.",
+	16, "SCE_C_WORD2", "identifier", "Keywords2",
+	17, "SCE_C_COMMENTDOCKEYWORD", "comment documentation keyword", "Comment keyword",
+	18, "SCE_C_COMMENTDOCKEYWORDERROR", "error comment documentation keyword", "Comment keyword error",
+	19, "SCE_C_GLOBALCLASS", "identifier", "Global class",
+	20, "SCE_C_STRINGRAW", "literal string multiline raw", "Raw strings for C++0x",
+	21, "SCE_C_TRIPLEVERBATIM", "literal string multiline raw", "Triple-quoted strings for Vala",
+	22, "SCE_C_HASHQUOTEDSTRING", "literal string", "Hash-quoted strings for Pike",
+	23, "SCE_C_PREPROCESSORCOMMENT", "comment preprocessor", "Preprocessor stream comment",
+	24, "SCE_C_PREPROCESSORCOMMENTDOC", "comment preprocessor documentation", "Preprocessor stream doc comment",
+	25, "SCE_C_USERLITERAL", "literal", "User defined literals",
+	26, "SCE_C_TASKMARKER", "comment taskmarker", "Task Marker",
+	27, "SCE_C_ESCAPESEQUENCE", "literal string escapesequence", "Escape sequence",
+};
+
 }
 
-class LexerCPP : public ILexerWithSubStyles {
+class LexerCPP : public ILexerWithMetaData {
 	bool caseSensitive;
 	CharacterSet setWord;
 	CharacterSet setNegationOp;
@@ -460,7 +496,7 @@ class LexerCPP : public ILexerWithSubStyles {
 			arguments.clear();
 			return *this;
 		}
-		bool IsMacro() const {
+		bool IsMacro() const noexcept {
 			return !arguments.empty();
 		}
 	};
@@ -473,6 +509,7 @@ class LexerCPP : public ILexerWithSubStyles {
 	enum { activeFlag = 0x40 };
 	enum { ssIdentifier, ssDocKeyword };
 	SubStyles subStyles;
+	std::string returnBuffer;
 public:
 	explicit LexerCPP(bool caseSensitive_) :
 		caseSensitive(caseSensitive_),
@@ -485,66 +522,119 @@ public:
 	}
 	virtual ~LexerCPP() {
 	}
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	int SCI_METHOD Version() const {
-		return lvSubStyles;
+	int SCI_METHOD Version() const override {
+		return lvMetaData;
 	}
-	const char * SCI_METHOD PropertyNames() {
+	const char * SCI_METHOD PropertyNames() override {
 		return osCPP.PropertyNames();
 	}
-	int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return osCPP.PropertyType(name);
 	}
-	const char * SCI_METHOD DescribeProperty(const char *name) {
+	const char * SCI_METHOD DescribeProperty(const char *name) override {
 		return osCPP.DescribeProperty(name);
 	}
-	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
-	const char * SCI_METHOD DescribeWordListSets() {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
+	const char * SCI_METHOD DescribeWordListSets() override {
 		return osCPP.DescribeWordListSets();
 	}
-	Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-	void * SCI_METHOD PrivateCall(int, void *) {
+	void * SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 
-	int SCI_METHOD LineEndTypesSupported() {
+	int SCI_METHOD LineEndTypesSupported() override {
 		return SC_LINE_END_TYPE_UNICODE;
 	}
 
-	int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) {
+	int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) override {
 		return subStyles.Allocate(styleBase, numberStyles);
 	}
-	int SCI_METHOD SubStylesStart(int styleBase) {
+	int SCI_METHOD SubStylesStart(int styleBase) override {
 		return subStyles.Start(styleBase);
 	}
-	int SCI_METHOD SubStylesLength(int styleBase) {
+	int SCI_METHOD SubStylesLength(int styleBase) override {
 		return subStyles.Length(styleBase);
 	}
-	int SCI_METHOD StyleFromSubStyle(int subStyle) {
-		int styleBase = subStyles.BaseStyle(MaskActive(subStyle));
-		int active = subStyle & activeFlag;
+	int SCI_METHOD StyleFromSubStyle(int subStyle) override {
+		const int styleBase = subStyles.BaseStyle(MaskActive(subStyle));
+		const int active = subStyle & activeFlag;
 		return styleBase | active;
 	}
-	int SCI_METHOD PrimaryStyleFromStyle(int style) {
+	int SCI_METHOD PrimaryStyleFromStyle(int style) override {
 		return MaskActive(style);
- 	}
-	void SCI_METHOD FreeSubStyles() {
+	}
+	void SCI_METHOD FreeSubStyles() override {
 		subStyles.Free();
 	}
-	void SCI_METHOD SetIdentifiers(int style, const char *identifiers) {
+	void SCI_METHOD SetIdentifiers(int style, const char *identifiers) override {
 		subStyles.SetIdentifiers(style, identifiers);
 	}
-	int SCI_METHOD DistanceToSecondaryStyles() {
+	int SCI_METHOD DistanceToSecondaryStyles() override {
 		return activeFlag;
 	}
-	const char * SCI_METHOD GetSubStyleBases() {
+	const char * SCI_METHOD GetSubStyleBases() override {
 		return styleSubable;
 	}
+	int SCI_METHOD NamedStyles() override {
+		return std::max(subStyles.LastAllocated() + 1,
+			static_cast<int>(ELEMENTS(lexicalClasses))) +
+			activeFlag;
+	}
+	const char * SCI_METHOD NameOfStyle(int style) override {
+		if (style >= NamedStyles())
+			return "";
+		if (style < static_cast<int>(ELEMENTS(lexicalClasses)))
+			return lexicalClasses[style].name;
+		// TODO: inactive and substyles
+		return "";
+	}
+	const char * SCI_METHOD TagsOfStyle(int style) override {
+		if (style >= NamedStyles())
+			return "Excess";
+		returnBuffer.clear();
+		const int firstSubStyle = subStyles.FirstAllocated();
+		if (firstSubStyle >= 0) {
+			const int lastSubStyle = subStyles.LastAllocated();
+			if (((style >= firstSubStyle) && (style <= (lastSubStyle))) ||
+				((style >= firstSubStyle + activeFlag) && (style <= (lastSubStyle + activeFlag)))) {
+				int styleActive = style;
+				if (style > lastSubStyle) {
+					returnBuffer = "inactive ";
+					styleActive -= activeFlag;
+				}
+				const int styleMain = StyleFromSubStyle(styleActive);
+				returnBuffer += lexicalClasses[styleMain].tags;
+				return returnBuffer.c_str();
+			}
+		}
+		if (style < static_cast<int>(ELEMENTS(lexicalClasses)))
+			return lexicalClasses[style].tags;
+		if (style >= activeFlag) {
+			returnBuffer = "inactive ";
+			const int styleActive = style - activeFlag;
+			if (styleActive < static_cast<int>(ELEMENTS(lexicalClasses)))
+				returnBuffer += lexicalClasses[styleActive].tags;
+			else
+				returnBuffer = "";
+			return returnBuffer.c_str();
+		}
+		return "";
+	}
+	const char * SCI_METHOD DescriptionOfStyle(int style) override {
+		if (style >= NamedStyles())
+			return "";
+		if (style < static_cast<int>(ELEMENTS(lexicalClasses)))
+			return lexicalClasses[style].description;
+		// TODO: inactive and substyles
+		return "";
+	}
 
 	static ILexer *LexerFactoryCPP() {
 		return new LexerCPP(true);
@@ -552,7 +642,7 @@ public:
 	static ILexer *LexerFactoryCPPInsensitive() {
 		return new LexerCPP(false);
 	}
-	static int MaskActive(int style) {
+	static int MaskActive(int style) noexcept {
 		return style & ~activeFlag;
 	}
 	void EvaluateTokens(std::vector<std::string> &tokens, const SymbolTable &preprocessorDefinitions);
@@ -611,8 +701,8 @@ Sci_Position SCI_METHOD LexerCPP::WordListSet(int n, const char *wl) {
 					if (cpEquals) {
 						std::string name(cpDefinition, cpEquals - cpDefinition);
 						std::string val(cpEquals+1);
-						size_t bracket = name.find('(');
-						size_t bracketEnd = name.find(')');
+						const size_t bracket = name.find('(');
+						const size_t bracketEnd = name.find(')');
 						if ((bracket != std::string::npos) && (bracketEnd != std::string::npos)) {
 							// Macro
 							std::string args = name.substr(bracket + 1, bracketEnd - bracket - 1);
@@ -633,15 +723,6 @@ Sci_Position SCI_METHOD LexerCPP::WordListSet(int n, const char *wl) {
 	return firstModification;
 }
 
-// Functor used to truncate history
-struct After {
-	Sci_Position line;
-	explicit After(Sci_Position line_) : line(line_) {}
-	bool operator()(PPDefinition &p) const {
-		return p.line > line;
-	}
-};
-
 void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {
 	LexAccessor styler(pAccess);
 
@@ -675,7 +756,7 @@ void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int i
       (MaskActive(initStyle) == SCE_C_COMMENTLINEDOC)) {
 		// Set continuationLine if last character of previous line is '\'
 		if (lineCurrent > 0) {
-			Sci_Position endLinePrevious = styler.LineEnd(lineCurrent - 1);
+			const Sci_Position endLinePrevious = styler.LineEnd(lineCurrent - 1);
 			if (endLinePrevious > 0) {
 				continuationLine = styler.SafeGetCharAt(endLinePrevious-1) == '\\';
 			}
@@ -692,7 +773,7 @@ void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int i
 		}
 	}
 
-	StyleContext sc(startPos, length, initStyle, styler, static_cast<unsigned char>(0xff));
+	StyleContext sc(startPos, length, initStyle, styler);
 	LinePPState preproc = vlls.ForLine(lineCurrent);
 
 	bool definitionsChanged = false;
@@ -702,18 +783,19 @@ void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int i
 	if (!options.updatePreprocessor)
 		ppDefineHistory.clear();
 
-	std::vector<PPDefinition>::iterator itInvalid = std::find_if(ppDefineHistory.begin(), ppDefineHistory.end(), After(lineCurrent-1));
+	std::vector<PPDefinition>::iterator itInvalid = std::find_if(ppDefineHistory.begin(), ppDefineHistory.end(),
+		[lineCurrent](const PPDefinition &p) { return p.line >= lineCurrent; });
 	if (itInvalid != ppDefineHistory.end()) {
 		ppDefineHistory.erase(itInvalid, ppDefineHistory.end());
 		definitionsChanged = true;
 	}
 
 	SymbolTable preprocessorDefinitions = preprocessorDefinitionsStart;
-	for (std::vector<PPDefinition>::iterator itDef = ppDefineHistory.begin(); itDef != ppDefineHistory.end(); ++itDef) {
-		if (itDef->isUndef)
-			preprocessorDefinitions.erase(itDef->key);
+	for (const PPDefinition &ppDef : ppDefineHistory) {
+		if (ppDef.isUndef)
+			preprocessorDefinitions.erase(ppDef.key);
 		else
-			preprocessorDefinitions[itDef->key] = SymbolValue(itDef->value, itDef->arguments);
+			preprocessorDefinitions[ppDef.key] = SymbolValue(ppDef.value, ppDef.arguments);
 	}
 
 	std::string rawStringTerminator = rawStringTerminators.ValueAt(lineCurrent-1);
@@ -829,7 +911,7 @@ void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int i
 						const bool raw = literalString && sc.chPrev == 'R' && !setInvalidRawFirst.Contains(sc.chNext);
 						if (raw)
 							s[lenS--] = '\0';
-						bool valid =
+						const bool valid =
 							(lenS == 0) ||
 							((lenS == 1) && ((s[0] == 'L') || (s[0] == 'u') || (s[0] == 'U'))) ||
 							((lenS == 2) && literalString && (s[0] == 'u') && (s[1] == '8'));
@@ -1060,7 +1142,7 @@ void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int i
 				}
 				break;
 			case SCE_C_TRIPLEVERBATIM:
-				if (sc.Match("\"\"\"")) {
+				if (sc.Match(R"(""")")) {
 					while (sc.Match('"')) {
 						sc.Forward();
 					}
@@ -1091,7 +1173,7 @@ void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int i
 			if (sc.Match('@', '\"')) {
 				sc.SetState(SCE_C_VERBATIM|activitySet);
 				sc.Forward();
-			} else if (options.triplequotedStrings && sc.Match("\"\"\"")) {
+			} else if (options.triplequotedStrings && sc.Match(R"(""")")) {
 				sc.SetState(SCE_C_TRIPLEVERBATIM|activitySet);
 				sc.Forward(2);
 			} else if (options.hashquotedStrings && sc.Match('#', '\"')) {
@@ -1141,7 +1223,7 @@ void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int i
 						sc.SetState(SCE_C_STRINGRAW|activitySet);
 						rawStringTerminator = ")";
 						for (Sci_Position termPos = sc.currentPos + 1;; termPos++) {
-							char chTerminator = styler.SafeGetCharAt(termPos, '(');
+							const char chTerminator = styler.SafeGetCharAt(termPos, '(');
 							if (chTerminator == '(')
 								break;
 							rawStringTerminator += chTerminator;
@@ -1172,14 +1254,14 @@ void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int i
 				} else {
 					if (options.trackPreprocessor) {
 						if (sc.Match("ifdef") || sc.Match("ifndef")) {
-							bool isIfDef = sc.Match("ifdef");
-							int i = isIfDef ? 5 : 6;
-							std::string restOfLine = GetRestOfLine(styler, sc.currentPos + i + 1, false);
+							const bool isIfDef = sc.Match("ifdef");
+							const int startRest = isIfDef ? 5 : 6;
+							std::string restOfLine = GetRestOfLine(styler, sc.currentPos + startRest + 1, false);
 							bool foundDef = preprocessorDefinitions.find(restOfLine) != preprocessorDefinitions.end();
 							preproc.StartSection(isIfDef == foundDef);
 						} else if (sc.Match("if")) {
 							std::string restOfLine = GetRestOfLine(styler, sc.currentPos + 2, true);
-							bool ifGood = EvaluateExpression(restOfLine, preprocessorDefinitions);
+							const bool ifGood = EvaluateExpression(restOfLine, preprocessorDefinitions);
 							preproc.StartSection(ifGood);
 						} else if (sc.Match("else")) {
 							if (!preproc.CurrentIfTaken()) {
@@ -1197,8 +1279,8 @@ void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int i
 							// Ensure only one chosen out of #if .. #elif .. #elif .. #else .. #endif
 							if (!preproc.CurrentIfTaken()) {
 								// Similar to #if
-								std::string restOfLine = GetRestOfLine(styler, sc.currentPos + 2, true);
-								bool ifGood = EvaluateExpression(restOfLine, preprocessorDefinitions);
+								std::string restOfLine = GetRestOfLine(styler, sc.currentPos + 4, true);
+								const bool ifGood = EvaluateExpression(restOfLine, preprocessorDefinitions);
 								if (ifGood) {
 									preproc.InvertCurrentLevel();
 									activitySet = preproc.IsInactive() ? activeFlag : 0;
@@ -1246,6 +1328,8 @@ void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int i
 									while ((startValue < restOfLine.length()) && IsSpaceOrTab(restOfLine[startValue]))
 										startValue++;
 									std::string value = restOfLine.substr(startValue);
+									if (OnlySpaceOrTab(value))
+										value = "1";	// No value defaults to 1
 									preprocessorDefinitions[key] = value;
 									ppDefineHistory.push_back(PPDefinition(lineCurrent, key, value));
 									definitionsChanged = true;
@@ -1294,7 +1378,7 @@ void SCI_METHOD LexerCPP::Fold(Sci_PositionU startPos, Sci_Position length, int
 
 	LexAccessor styler(pAccess);
 
-	Sci_PositionU endPos = startPos + length;
+	const Sci_PositionU endPos = startPos + length;
 	int visibleChars = 0;
 	bool inLineComment = false;
 	Sci_Position lineCurrent = styler.GetLine(startPos);
@@ -1309,12 +1393,12 @@ void SCI_METHOD LexerCPP::Fold(Sci_PositionU startPos, Sci_Position length, int
 	int style = MaskActive(initStyle);
 	const bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty();
 	for (Sci_PositionU i = startPos; i < endPos; i++) {
-		char ch = chNext;
+		const char ch = chNext;
 		chNext = styler.SafeGetCharAt(i + 1);
-		int stylePrev = style;
+		const int stylePrev = style;
 		style = styleNext;
 		styleNext = MaskActive(styler.StyleAt(i + 1));
-		bool atEOL = i == (lineStartNext-1);
+		const bool atEOL = i == (lineStartNext-1);
 		if ((style == SCE_C_COMMENTLINE) || (style == SCE_C_COMMENTLINEDOC))
 			inLineComment = true;
 		if (options.foldComment && options.foldCommentMultiline && IsStreamCommentStyle(style) && !inLineComment) {
@@ -1334,7 +1418,7 @@ void SCI_METHOD LexerCPP::Fold(Sci_PositionU startPos, Sci_Position length, int
 				}
 			} else {
 				if ((ch == '/') && (chNext == '/')) {
-					char chNext2 = styler.SafeGetCharAt(i + 2);
+					const char chNext2 = styler.SafeGetCharAt(i + 2);
 					if (chNext2 == '{') {
 						levelNext++;
 					} else if (chNext2 == '}') {
@@ -1354,7 +1438,7 @@ void SCI_METHOD LexerCPP::Fold(Sci_PositionU startPos, Sci_Position length, int
 				} else if (styler.Match(j, "end")) {
 					levelNext--;
 				}
-				
+
 				if (options.foldPreprocessorAtElse && (styler.Match(j, "else") || styler.Match(j, "elif"))) {
 					levelMinCurrent--;
 				}
@@ -1433,6 +1517,7 @@ void LexerCPP::EvaluateTokens(std::vector<std::string> &tokens, const SymbolTabl
 				if (it != preprocessorDefinitions.end()) {
 					val = "1";
 				}
+				tokens.erase(tokens.begin() + i + 1, tokens.begin() + i + 2);
 			}
 			tokens[i] = val;
 		} else {
@@ -1495,8 +1580,8 @@ void LexerCPP::EvaluateTokens(std::vector<std::string> &tokens, const SymbolTabl
 					tokens.insert(tokens.begin() + i, macroTokens.begin(), macroTokens.end());
 				}
 			} else {
-				// Identifier not found
-				tokens.erase(tokens.begin() + i);
+				// Identifier not found and value defaults to zero
+				tokens[i] = "0";
 			}
 		} else {
 			i++;
@@ -1537,14 +1622,14 @@ void LexerCPP::EvaluateTokens(std::vector<std::string> &tokens, const SymbolTabl
 	for (int prec=precArithmetic; prec <= precLogical; prec++) {
 		// Looking at 3 tokens at a time so end at 2 before end
 		for (size_t k=0; (k+2)<tokens.size();) {
-			char chOp = tokens[k+1][0];
+			const char chOp = tokens[k+1][0];
 			if (
 				((prec==precArithmetic) && setArithmethicOp.Contains(chOp)) ||
 				((prec==precRelative) && setRelOp.Contains(chOp)) ||
 				((prec==precLogical) && setLogicalOp.Contains(chOp))
 				) {
-				int valA = atoi(tokens[k].c_str());
-				int valB = atoi(tokens[k+2].c_str());
+				const int valA = atoi(tokens[k].c_str());
+				const int valB = atoi(tokens[k+2].c_str());
 				int result = 0;
 				if (tokens[k+1] == "+")
 					result = valA + valB;
@@ -1631,7 +1716,7 @@ bool LexerCPP::EvaluateExpression(const std::string &expr, const SymbolTable &pr
 	EvaluateTokens(tokens, preprocessorDefinitions);
 
 	// "0" or "" -> false else true
-	bool isFalse = tokens.empty() ||
+	const bool isFalse = tokens.empty() ||
 		((tokens.size() == 1) && ((tokens[0] == "") || tokens[0] == "0"));
 	return !isFalse;
 }

+ 3 - 3
maxguitextareascintilla.mod/scintilla/lexers/LexCSS.cxx

@@ -1,7 +1,8 @@
 // Scintilla source code edit control
+// Encoding: UTF-8
 /** @file LexCSS.cxx
  ** Lexer for Cascading Style Sheets
- ** Written by Jakub Vrána
+ ** Written by Jakub Vrána
  ** Improved by Philippe Lhoste (CSS2)
  ** Improved by Ross McKay (SCSS mode; see http://sass-lang.com/ )
  **/
@@ -31,9 +32,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 
 static inline bool IsAWordChar(const unsigned int ch) {
@@ -347,6 +346,7 @@ static void ColouriseCssDoc(Sci_PositionU startPos, Sci_Position length, int ini
 				case SCE_CSS_DEFAULT:
 					if (isLessDocument) // give priority to pseudo elements
 						break;
+					// Falls through.
 				case SCE_CSS_VALUE:
 					lastStateVar = sc.state;
 					sc.SetState(SCE_CSS_VARIABLE);

+ 5 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexCaml.cxx

@@ -37,6 +37,10 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wcomma"
+#endif
+
 //	Since the Microsoft __iscsym[f] funcs are not ANSI...
 inline int  iscaml(int c) {return isalnum(c) || c == '_';}
 inline int iscamlf(int c) {return isalpha(c) || c == '_';}
@@ -46,9 +50,7 @@ static const int baseT[24] = {
 	0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,16	/* M - X */
 };
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 #ifdef BUILD_AS_EXTERNAL_LEXER
 /*
@@ -368,6 +370,7 @@ void ColouriseCamlDoc(
 				break;
 			}/* else
 				// fall through for SML char literal (handle like string) */
+			// Falls through.
 
 		case SCE_CAML_STRING:
 			// [try to] interpret as [additional] [SML char/] string literal char

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexCmake.cxx

@@ -24,9 +24,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static bool isCmakeNumber(char ch)
 {

+ 74 - 5
maxguitextareascintilla.mod/scintilla/lexers/LexCoffeeScript.cxx

@@ -14,7 +14,8 @@
 #include <assert.h>
 #include <ctype.h>
 
-#include "Platform.h"
+#include <algorithm>
+
 #include "ILexer.h"
 #include "Scintilla.h"
 #include "SciLexer.h"
@@ -26,9 +27,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static bool IsSpaceEquiv(int state) {
 	return (state == SCE_COFFEESCRIPT_DEFAULT
@@ -40,6 +39,36 @@ static bool IsSpaceEquiv(int state) {
 	    || state == SCE_COFFEESCRIPT_REGEX);
 }
 
+// Store the current lexer state and brace count prior to starting a new
+// `#{}` interpolation level.
+// Based on LexRuby.cxx.
+static void enterInnerExpression(int  *p_inner_string_types,
+                                 int  *p_inner_expn_brace_counts,
+                                 int&  inner_string_count,
+                                 int   state,
+                                 int&  brace_counts
+                                 ) {
+	p_inner_string_types[inner_string_count] = state;
+	p_inner_expn_brace_counts[inner_string_count] = brace_counts;
+	brace_counts = 0;
+	++inner_string_count;
+}
+
+// Restore the lexer state and brace count for the previous `#{}` interpolation
+// level upon returning to it.
+// Note the previous lexer state is the return value and needs to be restored
+// manually by the StyleContext.
+// Based on LexRuby.cxx.
+static int exitInnerExpression(int  *p_inner_string_types,
+                               int  *p_inner_expn_brace_counts,
+                               int&  inner_string_count,
+                               int&  brace_counts
+                              ) {
+	--inner_string_count;
+	brace_counts = p_inner_expn_brace_counts[inner_string_count];
+	return p_inner_string_types[inner_string_count];
+}
+
 // Preconditions: sc.currentPos points to a character after '+' or '-'.
 // The test for pos reaching 0 should be redundant,
 // and is in only for safety measures.
@@ -88,6 +117,27 @@ static void ColouriseCoffeeScriptDoc(Sci_PositionU startPos, Sci_Position length
 	int chPrevNonWhite = ' ';
 	int visibleChars = 0;
 
+	// String/Regex interpolation variables, based on LexRuby.cxx.
+	// In most cases a value of 2 should be ample for the code the user is
+	// likely to enter. For example,
+	//   "Filling the #{container} with #{liquid}..."
+	// from the CoffeeScript homepage nests to a level of 2
+	// If the user actually hits a 6th occurrence of '#{' in a double-quoted
+	// string (including regexes), it will stay as a string.  The problem with
+	// this is that quotes might flip, a 7th '#{' will look like a comment,
+	// and code-folding might be wrong.
+#define INNER_STRINGS_MAX_COUNT 5
+	// These vars track our instances of "...#{,,,'..#{,,,}...',,,}..."
+	int inner_string_types[INNER_STRINGS_MAX_COUNT];
+	// Track # braces when we push a new #{ thing
+	int inner_expn_brace_counts[INNER_STRINGS_MAX_COUNT];
+	int inner_string_count = 0;
+	int brace_counts = 0;   // Number of #{ ... } things within an expression
+	for (int i = 0; i < INNER_STRINGS_MAX_COUNT; i++) {
+		inner_string_types[i] = 0;
+		inner_expn_brace_counts[i] = 0;
+	}
+
 	// look back to set chPrevNonWhite properly for better regex colouring
 	Sci_Position endPos = startPos + length;
         if (startPos > 0 && IsSpaceEquiv(initStyle)) {
@@ -109,7 +159,7 @@ static void ColouriseCoffeeScriptDoc(Sci_PositionU startPos, Sci_Position length
 
 	StyleContext sc(startPos, endPos - startPos, initStyle, styler);
 
-	for (; sc.More(); sc.Forward()) {
+	for (; sc.More();) {
 
 		if (sc.atLineStart) {
 			// Reset states to beginning of colourise so no surprises
@@ -164,6 +214,15 @@ static void ColouriseCoffeeScriptDoc(Sci_PositionU startPos, Sci_Position length
 					}
 				} else if (sc.ch == '\"') {
 					sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT);
+				} else if (sc.ch == '#' && sc.chNext == '{' && inner_string_count < INNER_STRINGS_MAX_COUNT) {
+					// process interpolated code #{ ... }
+					enterInnerExpression(inner_string_types,
+					                     inner_expn_brace_counts,
+					                     inner_string_count,
+					                     sc.state,
+					                     brace_counts);
+					sc.SetState(SCE_COFFEESCRIPT_OPERATOR);
+					sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT);
 				}
 				break;
 			case SCE_COFFEESCRIPT_CHARACTER:
@@ -255,6 +314,15 @@ static void ColouriseCoffeeScriptDoc(Sci_PositionU startPos, Sci_Position length
 				// Handle '..' and '...' operators correctly.
 				if (sc.ch == '.') {
 					for (int i = 0; i < 2 && sc.chNext == '.'; i++, sc.Forward()) ;
+				} else if (sc.ch == '{') {
+					++brace_counts;
+				} else if (sc.ch == '}' && --brace_counts <= 0 && inner_string_count > 0) {
+					// Return to previous state before #{ ... }
+					sc.ForwardSetState(exitInnerExpression(inner_string_types,
+					                                       inner_expn_brace_counts,
+					                                       inner_string_count,
+					                                       brace_counts));
+					continue; // skip sc.Forward() at loop end
 				}
 			}
 		}
@@ -263,6 +331,7 @@ static void ColouriseCoffeeScriptDoc(Sci_PositionU startPos, Sci_Position length
 			chPrevNonWhite = sc.ch;
 			visibleChars++;
 		}
+		sc.Forward();
 	}
 	sc.Complete();
 }
@@ -357,7 +426,7 @@ static void FoldCoffeeScriptDoc(Sci_PositionU startPos, Sci_Position length, int
 		}
 
 		const int levelAfterComments = indentNext & SC_FOLDLEVELNUMBERMASK;
-		const int levelBeforeComments = Platform::Maximum(indentCurrentLevel,levelAfterComments);
+		const int levelBeforeComments = std::max(indentCurrentLevel,levelAfterComments);
 
 		// Now set all the indent levels on the lines we skipped
 		// Do this from end to start.  Once we encounter one line

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexConf.cxx

@@ -27,9 +27,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static void ColouriseConfDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *keywordLists[], Accessor &styler)
 {

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexCrontab.cxx

@@ -25,9 +25,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static void ColouriseNncrontabDoc(Sci_PositionU startPos, Sci_Position length, int, WordList
 *keywordLists[], Accessor &styler)

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexCsound.cxx

@@ -24,9 +24,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static inline bool IsAWordChar(const int ch) {
 	return (ch < 0x80) && (isalnum(ch) || ch == '.' ||

+ 13 - 14
maxguitextareascintilla.mod/scintilla/lexers/LexD.cxx

@@ -27,10 +27,9 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 #include "OptionSet.h"
+#include "DefaultLexer.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 /* Nested comments require keeping the value of the nesting level for every
    position in the document.  But since scintilla always styles line by line,
@@ -145,7 +144,7 @@ struct OptionSetD : public OptionSet<OptionsD> {
 	}
 };
 
-class LexerD : public ILexer {
+class LexerD : public DefaultLexer {
 	bool caseSensitive;
 	WordList keywords;
 	WordList keywords2;
@@ -162,30 +161,30 @@ public:
 	}
 	virtual ~LexerD() {
 	}
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvOriginal;
 	}
-	const char * SCI_METHOD PropertyNames() {
+	const char * SCI_METHOD PropertyNames() override {
 		return osD.PropertyNames();
 	}
-	int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return osD.PropertyType(name);
 	}
-	const char * SCI_METHOD DescribeProperty(const char *name) {
+	const char * SCI_METHOD DescribeProperty(const char *name) override {
 		return osD.DescribeProperty(name);
 	}
-	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
-	const char * SCI_METHOD DescribeWordListSets() {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
+	const char * SCI_METHOD DescribeWordListSets() override {
 		return osD.DescribeWordListSets();
 	}
-	Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-	void * SCI_METHOD PrivateCall(int, void *) {
+	void * SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexDMAP.cxx

@@ -25,9 +25,7 @@
 #include "LexerModule.h"
 /***************************************/
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 /***********************************************/
 static inline bool IsAWordChar(const int ch) {

+ 13 - 14
maxguitextareascintilla.mod/scintilla/lexers/LexDMIS.cxx

@@ -21,10 +21,9 @@
 #include "StyleContext.h"
 #include "CharacterSet.h"
 #include "LexerModule.h"
+#include "DefaultLexer.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 
 static const char *const DMISWordListDesc[] = {
@@ -38,7 +37,7 @@ static const char *const DMISWordListDesc[] = {
 };
 
 
-class LexerDMIS : public ILexer
+class LexerDMIS : public DefaultLexer
 {
 	private:
 		char *m_wordListSets;
@@ -56,33 +55,33 @@ class LexerDMIS : public ILexer
 		LexerDMIS(void);
 		virtual ~LexerDMIS(void);
 
-		int SCI_METHOD Version() const {
+		int SCI_METHOD Version() const override {
 			return lvOriginal;
 		}
 
-		void SCI_METHOD Release() {
+		void SCI_METHOD Release() override {
 			delete this;
 		}
 
-		const char * SCI_METHOD PropertyNames() {
+		const char * SCI_METHOD PropertyNames() override {
 			return NULL;
 		}
 
-		int SCI_METHOD PropertyType(const char *) {
+		int SCI_METHOD PropertyType(const char *) override {
 			return -1;
 		}
 
-		const char * SCI_METHOD DescribeProperty(const char *) {
+		const char * SCI_METHOD DescribeProperty(const char *) override {
 			return NULL;
 		}
 
-		Sci_Position SCI_METHOD PropertySet(const char *, const char *) {
+		Sci_Position SCI_METHOD PropertySet(const char *, const char *) override {
 			return -1;
 		}
 
-		Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
+		Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
 
-		void * SCI_METHOD PrivateCall(int, void *) {
+		void * SCI_METHOD PrivateCall(int, void *) override {
 			return NULL;
 		}
 
@@ -90,9 +89,9 @@ class LexerDMIS : public ILexer
 			return new LexerDMIS;
 		}
 
-		const char * SCI_METHOD DescribeWordListSets();
-		void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);
-		void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);
+		const char * SCI_METHOD DescribeWordListSets() override;
+		void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override;
+		void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override;
 };
 
 

+ 12 - 4
maxguitextareascintilla.mod/scintilla/lexers/LexDiff.cxx

@@ -23,9 +23,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static inline bool AtEOL(Accessor &styler, Sci_PositionU i) {
 	return (styler[i] == '\n') ||
@@ -51,8 +49,10 @@ static void ColouriseDiffLine(char *lineBuffer, Sci_Position endLine, Accessor &
 			styler.ColourTo(endLine, SCE_DIFF_POSITION);
 		else if (lineBuffer[3] == '\r' || lineBuffer[3] == '\n')
 			styler.ColourTo(endLine, SCE_DIFF_POSITION);
-		else
+		else if (lineBuffer[3] == ' ')
 			styler.ColourTo(endLine, SCE_DIFF_HEADER);
+		else
+			styler.ColourTo(endLine, SCE_DIFF_DELETED);
 	} else if (0 == strncmp(lineBuffer, "+++ ", 4)) {
 		// I don't know of any diff where "+++ " is a position marker, but for
 		// consistency, do the same as with "--- " and "*** ".
@@ -78,6 +78,14 @@ static void ColouriseDiffLine(char *lineBuffer, Sci_Position endLine, Accessor &
 		styler.ColourTo(endLine, SCE_DIFF_POSITION);
 	} else if (lineBuffer[0] >= '0' && lineBuffer[0] <= '9') {
 		styler.ColourTo(endLine, SCE_DIFF_POSITION);
+	} else if (0 == strncmp(lineBuffer, "++", 2)) {
+		styler.ColourTo(endLine, SCE_DIFF_PATCH_ADD);
+	} else if (0 == strncmp(lineBuffer, "+-", 2)) {
+		styler.ColourTo(endLine, SCE_DIFF_PATCH_DELETE);
+	} else if (0 == strncmp(lineBuffer, "-+", 2)) {
+		styler.ColourTo(endLine, SCE_DIFF_REMOVED_PATCH_ADD);
+	} else if (0 == strncmp(lineBuffer, "--", 2)) {
+		styler.ColourTo(endLine, SCE_DIFF_REMOVED_PATCH_DELETE);
 	} else if (lineBuffer[0] == '-' || lineBuffer[0] == '<') {
 		styler.ColourTo(endLine, SCE_DIFF_DELETED);
 	} else if (lineBuffer[0] == '+' || lineBuffer[0] == '>') {
@@ -124,7 +132,7 @@ static void FoldDiffDoc(Sci_PositionU startPos, Sci_Position length, int, WordLi
 	int nextLevel;
 
 	do {
-		int lineType = styler.StyleAt(curLineStart);
+		const int lineType = styler.StyleAt(curLineStart);
 		if (lineType == SCE_DIFF_COMMAND)
 			nextLevel = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;
 		else if (lineType == SCE_DIFF_HEADER)

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexECL.cxx

@@ -42,9 +42,7 @@
 #define SET_UPPER "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 #define SET_DIGITS "0123456789"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 static bool IsSpaceEquiv(int state) {
 	switch (state) {

+ 336 - 0
maxguitextareascintilla.mod/scintilla/lexers/LexEDIFACT.cxx

@@ -0,0 +1,336 @@
+// Scintilla Lexer for EDIFACT
+// Written by Iain Clarke, IMCSoft & Inobiz AB.
+// EDIFACT documented here: https://www.unece.org/cefact/edifact/welcome.html
+// and more readably here: https://en.wikipedia.org/wiki/EDIFACT
+// This code is subject to the same license terms as the rest of the scintilla project:
+// The License.txt file describes the conditions under which this software may be distributed.
+//
+
+// Header order must match order in scripts/HeaderOrder.txt
+#include <cstdlib>
+#include <cassert>
+#include <cstring>
+#include <cctype>
+
+#include "ILexer.h"
+#include "Scintilla.h"
+#include "SciLexer.h"
+
+#include "LexAccessor.h"
+#include "LexerModule.h"
+#include "DefaultLexer.h"
+
+using namespace Scintilla;
+
+class LexerEDIFACT : public DefaultLexer
+{
+public:
+	LexerEDIFACT();
+	virtual ~LexerEDIFACT() {} // virtual destructor, as we inherit from ILexer
+
+	static ILexer *Factory() {
+		return new LexerEDIFACT;
+	}
+
+	int SCI_METHOD Version() const override
+	{
+		return lvOriginal;
+	}
+	void SCI_METHOD Release() override
+	{
+		delete this;
+	}
+
+	const char * SCI_METHOD PropertyNames() override
+	{
+		return "fold\nlexer.edifact.highlight.un.all";
+	}
+	int SCI_METHOD PropertyType(const char *) override
+	{
+		return SC_TYPE_BOOLEAN; // Only one property!
+	}
+	const char * SCI_METHOD DescribeProperty(const char *name) override
+	{
+		if (!strcmp(name, "fold"))
+			return "Whether to apply folding to document or not";
+		if (!strcmp(name, "lexer.edifact.highlight.un.all"))
+			return "Whether to apply UN* highlighting to all UN segments, or just to UNH";
+		return NULL;
+	}
+
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override
+	{
+		if (!strcmp(key, "fold"))
+		{
+			m_bFold = strcmp(val, "0") ? true : false;
+			return 0;
+		}
+		if (!strcmp(key, "lexer.edifact.highlight.un.all"))	// GetProperty
+		{
+			m_bHighlightAllUN = strcmp(val, "0") ? true : false;
+			return 0;
+		}
+		return -1;
+	}
+	const char * SCI_METHOD DescribeWordListSets() override
+	{
+		return NULL;
+	}
+	Sci_Position SCI_METHOD WordListSet(int, const char *) override
+	{
+		return -1;
+	}
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override;
+	void * SCI_METHOD PrivateCall(int, void *) override
+	{
+		return NULL;
+	}
+
+protected:
+	Sci_Position InitialiseFromUNA(IDocument *pAccess, Sci_PositionU MaxLength);
+	Sci_Position FindPreviousEnd(IDocument *pAccess, Sci_Position startPos) const;
+	Sci_Position ForwardPastWhitespace(IDocument *pAccess, Sci_Position startPos, Sci_Position MaxLength) const;
+	int DetectSegmentHeader(char SegmentHeader[3]) const;
+
+	bool m_bFold;
+
+	// property lexer.edifact.highlight.un.all
+	//	Set to 0 to highlight only UNA segments, or 1 to highlight all UNx segments.
+	bool m_bHighlightAllUN;
+
+	char m_chComponent;
+	char m_chData;
+	char m_chDecimal;
+	char m_chRelease;
+	char m_chSegment;
+};
+
+LexerModule lmEDIFACT(SCLEX_EDIFACT, LexerEDIFACT::Factory, "edifact");
+
+///////////////////////////////////////////////////////////////////////////////
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+
+LexerEDIFACT::LexerEDIFACT()
+{
+	m_bFold = false;
+	m_bHighlightAllUN = false;
+	m_chComponent = ':';
+	m_chData = '+';
+	m_chDecimal = '.';
+	m_chRelease = '?';
+	m_chSegment = '\'';
+}
+
+void LexerEDIFACT::Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int, IDocument *pAccess)
+{
+	Sci_PositionU posFinish = startPos + lengthDoc;
+	InitialiseFromUNA(pAccess, posFinish);
+
+	// Look backwards for a ' or a document beginning
+	Sci_PositionU posCurrent = FindPreviousEnd(pAccess, startPos);
+	// And jump past the ' if this was not the beginning of the document
+	if (posCurrent != 0)
+		posCurrent++;
+
+	// Style buffer, so we're not issuing loads of notifications
+	LexAccessor styler (pAccess);
+	pAccess->StartStyling(posCurrent, '\377');
+	styler.StartSegment(posCurrent);
+	Sci_Position posSegmentStart = -1;
+
+	while ((posCurrent < posFinish) && (posSegmentStart == -1))
+	{
+		posCurrent = ForwardPastWhitespace(pAccess, posCurrent, posFinish);
+		// Mark whitespace as default
+		styler.ColourTo(posCurrent - 1, SCE_EDI_DEFAULT);
+		if (posCurrent >= posFinish)
+			break;
+
+		// Does is start with 3 charaters? ie, UNH
+		char SegmentHeader[4] = { 0 };
+		pAccess->GetCharRange(SegmentHeader, posCurrent, 3);
+
+		int SegmentStyle = DetectSegmentHeader(SegmentHeader);
+		if (SegmentStyle == SCE_EDI_BADSEGMENT)
+			break;
+		if (SegmentStyle == SCE_EDI_UNA)
+		{
+			posCurrent += 9;
+			styler.ColourTo(posCurrent - 1, SCE_EDI_UNA); // UNA
+			continue;
+		}
+		posSegmentStart = posCurrent;
+		posCurrent += 3;
+
+		styler.ColourTo(posCurrent - 1, SegmentStyle); // UNH etc
+
+		// Colour in the rest of the segment
+		for (char c; posCurrent < posFinish; posCurrent++)
+		{
+			pAccess->GetCharRange(&c, posCurrent, 1);
+
+			if (c == m_chRelease) // ? escape character, check first, in case of ?'
+				posCurrent++;
+			else if (c == m_chSegment) // '
+			{
+				// Make sure the whole segment is on one line. styler won't let us go back in time, so we'll settle for marking the ' as bad.
+				Sci_Position lineSegmentStart = pAccess->LineFromPosition(posSegmentStart);
+				Sci_Position lineSegmentEnd = pAccess->LineFromPosition(posCurrent);
+				if (lineSegmentStart == lineSegmentEnd)
+					styler.ColourTo(posCurrent, SCE_EDI_SEGMENTEND);
+				else
+					styler.ColourTo(posCurrent, SCE_EDI_BADSEGMENT);
+				posSegmentStart = -1;
+				posCurrent++;
+				break;
+			}
+			else if (c == m_chComponent) // :
+				styler.ColourTo(posCurrent, SCE_EDI_SEP_COMPOSITE);
+			else if (c == m_chData) // +
+				styler.ColourTo(posCurrent, SCE_EDI_SEP_ELEMENT);
+			else
+				styler.ColourTo(posCurrent, SCE_EDI_DEFAULT);
+		}
+	}
+	styler.Flush();
+
+	if (posSegmentStart == -1)
+		return;
+
+	pAccess->StartStyling(posSegmentStart, -1);
+	pAccess->SetStyleFor(posFinish - posSegmentStart, SCE_EDI_BADSEGMENT);
+}
+
+void LexerEDIFACT::Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int, IDocument *pAccess)
+{
+	if (!m_bFold)
+		return;
+
+	// Fold at UNx lines. ie, UNx segments = 0, other segments = 1.
+	// There's no sub folding, so we can be quite simple.
+	Sci_Position endPos = startPos + lengthDoc;
+	char SegmentHeader[4] = { 0 };
+
+	int iIndentPrevious = 0;
+	Sci_Position lineLast = pAccess->LineFromPosition(endPos);
+
+	for (Sci_Position lineCurrent = pAccess->LineFromPosition(startPos); lineCurrent <= lineLast; lineCurrent++)
+	{
+		Sci_Position posLineStart = pAccess->LineStart(lineCurrent);
+		posLineStart = ForwardPastWhitespace(pAccess, posLineStart, endPos);
+		Sci_Position lineDataStart = pAccess->LineFromPosition(posLineStart);
+		// Fill in whitespace lines?
+		for (; lineCurrent < lineDataStart; lineCurrent++)
+			pAccess->SetLevel(lineCurrent, SC_FOLDLEVELBASE | SC_FOLDLEVELWHITEFLAG | iIndentPrevious);
+		pAccess->GetCharRange(SegmentHeader, posLineStart, 3);
+		//if (DetectSegmentHeader(SegmentHeader) == SCE_EDI_BADSEGMENT) // Abort if this is not a proper segment header
+
+		int level = 0;
+		if (memcmp(SegmentHeader, "UNH", 3) == 0) // UNH starts blocks
+			level = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;
+		// Check for UNA,B and Z. All others are inside messages
+		else if (!memcmp(SegmentHeader, "UNA", 3) || !memcmp(SegmentHeader, "UNB", 3) || !memcmp(SegmentHeader, "UNZ", 3))
+			level = SC_FOLDLEVELBASE;
+		else
+			level = SC_FOLDLEVELBASE | 1;
+		pAccess->SetLevel(lineCurrent, level);
+		iIndentPrevious = level & SC_FOLDLEVELNUMBERMASK;
+	}
+}
+
+Sci_Position LexerEDIFACT::InitialiseFromUNA(IDocument *pAccess, Sci_PositionU MaxLength)
+{
+	MaxLength -= 9; // drop 9 chars, to give us room for UNA:+.? '
+
+	Sci_PositionU startPos = 0;
+	startPos += ForwardPastWhitespace(pAccess, 0, MaxLength);
+	if (startPos < MaxLength)
+	{
+		char bufUNA[9];
+		pAccess->GetCharRange(bufUNA, startPos, 9);
+
+		// Check it's UNA segment
+		if (!memcmp(bufUNA, "UNA", 3))
+		{
+			m_chComponent = bufUNA[3];
+			m_chData = bufUNA[4];
+			m_chDecimal = bufUNA[5];
+			m_chRelease = bufUNA[6];
+			// bufUNA [7] should be space - reserved.
+			m_chSegment = bufUNA[8];
+
+			return 0; // success!
+		}
+	}
+
+	// We failed to find a UNA, so drop to defaults
+	m_chComponent = ':';
+	m_chData = '+';
+	m_chDecimal = '.';
+	m_chRelease = '?';
+	m_chSegment = '\'';
+
+	return -1;
+}
+
+Sci_Position LexerEDIFACT::ForwardPastWhitespace(IDocument *pAccess, Sci_Position startPos, Sci_Position MaxLength) const
+{
+	char c;
+
+	while (startPos < MaxLength)
+	{
+		pAccess->GetCharRange(&c, startPos, 1);
+		switch (c)
+		{
+		case '\t':
+		case '\r':
+		case '\n':
+		case ' ':
+			break;
+		default:
+			return startPos;
+		}
+
+		startPos++;
+	}
+
+	return MaxLength;
+}
+
+int LexerEDIFACT::DetectSegmentHeader(char SegmentHeader[3]) const
+{
+	if (
+		SegmentHeader[0] < 'A' || SegmentHeader[0] > 'Z' ||
+		SegmentHeader[1] < 'A' || SegmentHeader[1] > 'Z' ||
+		SegmentHeader[2] < 'A' || SegmentHeader[2] > 'Z')
+		return SCE_EDI_BADSEGMENT;
+
+	if (!memcmp(SegmentHeader, "UNA", 3))
+		return SCE_EDI_UNA;
+
+	if (m_bHighlightAllUN && !memcmp(SegmentHeader, "UN", 2))
+		return SCE_EDI_UNH;
+	else if (memcmp(SegmentHeader, "UNH", 3) == 0)
+		return SCE_EDI_UNH;
+
+	return SCE_EDI_SEGMENTSTART;
+}
+
+// Look backwards for a ' or a document beginning
+Sci_Position LexerEDIFACT::FindPreviousEnd(IDocument *pAccess, Sci_Position startPos) const
+{
+	for (char c; startPos > 0; startPos--)
+	{
+		pAccess->GetCharRange(&c, startPos, 1);
+		if (c == m_chSegment)
+			return startPos;
+	}
+	// We didn't find a ', so just go with the beginning
+	return 0;
+}
+
+

+ 0 - 2
maxguitextareascintilla.mod/scintilla/lexers/LexEScript.cxx

@@ -22,9 +22,7 @@
 #include "CharacterSet.h"
 #include "LexerModule.h"
 
-#ifdef SCI_NAMESPACE
 using namespace Scintilla;
-#endif
 
 
 static inline bool IsAWordChar(const int ch) {

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio