| Lexilla

# History of Lexilla

Lexilla was originally code that was part of the Scintilla project. Thus it shares much of the history and contributors of Scintilla before it was extracted as its own project.

## Contributors

Thanks to all the people that have contributed patches, bug reports and suggestions.

Source code and documentation have been contributed by

Atsuo Ishimoto | Mark Hammond | Francois Le Coguiec | Dale Nagata
Ralf Reinhardt | Philippe Lhoste | Andrew McKinlay | Stephan R. A. Deibel
Hans Eckardt | Vassili Bourdo | Maksim Lin | Robin Dunn
John Ehresman | Steffen Goeldner | Deepak S. | DevelopMentor
Yann Gaillard | Aubin Paul | Jason Diamond | Ahmad Baitalmal
Paul Winwood | Maxim Baranov | Ragnar Højland | Christian Obrecht
Andreas Neukoetter | Adam Gates | Steve Lhomme | Ferdinand Prantl
Jan Dries | Markus Gritsch | Tahir Karaca | Ahmad Zawawi
Laurent le Tynevez | Walter Braeu | Ashley Cambrell | Garrett Serack
Holger Schmidt | ActiveState | James Larcombe | Alexey Yutkin
Jan Hercek | Richard Pecl | Edward K. Ream | Valery Kondakoff
Smári McCarthy | Clemens Wyss | Simon Steele | Serge A. Baranov
Xavier Nodet | Willy Devaux | David Clain | Brendon Yenson
Vamsi Potluru | Praveen Ambekar | Alan Knowles | Kengo Jinno
Valentin Valchev | Marcos E. Wurzius | Martin Alderson | Robert Gustavsson
José Fonseca | Holger Kiemes | Francis Irving | Scott Kirkwood
Brian Quinlan | Ubi | Michael R. Duerig | Deepak T
Don Paul Beletsky | Gerhard Kalab | Olivier Dagenais | Josh Wingstrom
Bruce Dodson | Sergey Koshcheyev | Chuan-jian Shen | Shane Caraveo
Alexander Scripnik | Ryan Christianson | Martin Steffensen | Jakub Vrána
The Black Horus | Bernd Kreuss | Thomas Lauer | Mike Lansdaal
Yukihiro Nakai | Jochen Tucht | Greg Smith | Steve Schoettler
Mauritius Thinnes | Darren Schroeder | Pedro Guerreiro | Steven te Brinke
Dan Petitt | Biswapesh Chattopadhyay | Kein-Hong Man | Patrizio Bekerle
Nigel Hathaway | Hrishikesh Desai | Sergey Puljajev | Mathias Rauen
Angelo Mandato | Denis Sureau | Kaspar Schiess | Christoph Hösler
João Paulo F Farias | Ron Schofield | Stefan Wosnik | Marius Gheorghe
Naba Kumar | Sean O'Dell | Stefanos Togoulidis | Hans Hagen
Jim Cape | Roland Walter | Brian Mosher | Nicholas Nemtsev
Roy Wood | Peter-Henry Mander | Robert Boucher | Christoph Dalitz
April White | S. Umar | Trent Mick | Filip Yaghob
Avi Yegudin | Vivi Orunitia | Manfred Becker | Dimitris Keletsekis
Yuiga | Davide Scola | Jason Boggs | Reinhold Niesner
Jos van der Zande | Pescuma | Pavol Bosik | Johannes Schmid
Blair McGlashan | Mikael Hultgren | Florian Balmer | Hadar Raz
Herr Pfarrer | Ben Key | Gene Barry | Niki Spahiev
Carsten Sperber | Phil Reid | Iago Rubio | Régis Vaquette
Massimo Corà | Elias Pschernig | Chris Jones | Josiah Reynolds
Robert Roessler rftp.com | Steve Donovan | Jan Martin Pettersen | Sergey Philippov
Borujoa | Michael Owens | Franck Marcia | Massimo Maria Ghisalberti
Frank Wunderlich | Josepmaria Roca | Tobias Engvall | Suzumizaki Kimitaka
Michael Cartmell | Pascal Hurni | Andre | Randy Butler
Georg Ritter | Michael Goffioul | Ben Harper | Adam Strzelecki
Kamen Stanev | Steve Menard | Oliver Yeoh | Eric Promislow
Joseph Galbraith | Jeffrey Ren | Armel Asselin | Jim Pattee
Friedrich Vedder | Sebastian Pipping | Andre Arpin | Stanislav Maslovski
Martin Stone | Fabien Proriol | mimir | Nicola Civran
Snow | Mitchell Foral | Pieter Holtzhausen | Waldemar Augustyn
Jason Haslam | Sebastian Steinlechner | Chris Rickard | Rob McMullen
Stefan Schwendeler | Cristian Adam | Nicolas Chachereau | Istvan Szollosi
Xie Renhui | Enrico Tröger | Todd Whiteman | Yuval Papish
instanton | Sergio Lucato | VladVRO | Dmitry Maslov
chupakabra | Juan Carlos Arevalo Baeza | Nick Treleaven | Stephen Stagg
Jean-Paul Iribarren | Tim Gerundt | Sam Harwell | Boris
Jason Oster | Gertjan Kloosterman | alexbodn | Sergiu Dotenco
Anders Karlsson | ozlooper | Marko Njezic | Eugen Bitter
Christoph Baumann | Christopher Bean | Sergey Kishchenko | Kai Liu
Andreas Rumpf | James Moffatt | Yuzhou Xin | Nic Jansma
Evan Jones | Mike Lischke | Eric Kidd | maXmo
David Severwright | Jon Strait | Oliver Kiddle | Etienne Girondel
Haimag Ren | Andrey Moskalyov | Xavi | Toby Inkster
Eric Forgeot | Colomban Wendling | Neo | Jordan Russell
Farshid Lashkari | Sam Rawlins | Michael Mullin | Carlos SS
vim | Martial Demolins | Tino Weinkauf | Jérôme Laforge
Udo Lechner | Marco Falda | Dariusz Knociński | Ben Fisher
Don Gobin | John Yeung | Adobe | Elizabeth A. Irizarry
Mike Schroeder | Morten MacFly | Jaime Gimeno | Thomas Linder Puls
Artyom Zuikov | Gerrit | Occam's Razor | Ben Bluemel
David Wolfendale | Chris Angelico | Marat Dukhan | Stefan Weil
Rex Conn | Ross McKay | Bruno Barbieri | Gordon Smith
dimitar | Sébastien Granjoux | zeniko | James Ribe
Markus Nißl | Martin Panter | Mark Yen | Philippe Elsass
Dimitar Zhekov | Fan Yang | Denis Shelomovskij | darmar
John Vella | Chinh Nguyen | Sakshi Verma | Joel B. Mohler
Isiledhel | Vidya Wasi | G. Hu | Byron Hawkins
Alpha | John Donoghue | kudah | Igor Shaula
Pavel Bulochkin | Yosef Or Boczko | Brian Griffin | Özgür Emir
Neomi | OmegaPhil | SiegeLord | Erik
TJF | Mark Robinson | Thomas Martitz | felix
Christian Walther | Ebben | Robert Gieseke | Mike M
nkmathew | Andreas Tscharner | Lee Wilmott | johnsonj
Vicente | Nick Gravgaard | Ian Goldby | Holger Stenger
danselmi | Mat Berchtold | Michael Staszewski | Baurzhan Muftakhidinov
Erik Angelin | Yusuf Ramazan Karagöz | Markus Heidelberg | Joe Mueller
Mika Attila | JoMazM | Markus Moser | Stefan Küng
Jiří Techet | Jonathan Hunt | Serg Stetsuk | Jordan Jueckstock
Yury Dubinsky | Sam Hocevar | Luyomi | Matt Gilarde
Mark C | Johannes Sasongko | fstirlitz | Robin Haberkorn
Pavel Sountsov | Dirk Lorenzen | Kasper B. Graversen | Chris Mayo
Van de Bugger | Tse Kit Yam | SmartShare Systems | Morten Brørup
Alexey Denisov | Justin Dailey | oirfeodent | A-R-C-A
Roberto Rossi | Kenny Liu | Iain Clarke | desto
John Flatness | Thorsten Kani | Bernhard M. Wiedemann | Baldur Karlsson
Martin Kleusberg | Jannick | Zufu Liu | Simon Sobisch
Georger Araújo | Tobias Kühne | Dimitar Radev | Liang Bai
Gunter Königsmann | Nicholai Benalal | Uniface | Raghda Morsy
Giuseppe Corbelli | Andreas Rönnquist | Henrik Hank | Luke Rasmussen
Philipp | maboroshin | Gokul Krishnan | John Horigan
jj5 | Jad Altahan | Andrea Ricchi | Juarez Rudsatz
Wil van Antwerpen | Hodong Kim | Michael Conrad | Dejan Budimir
Andreas Falkenhahn | Mark Reay | David Shuman | McLoo
Shmuel Zeigerman | Chris Graham | Hugues Larrive | Prakash Sahni
Michel Sauvard | uhf7 | gnombat | Derek Brown
Robert Di Pardo | riQQ | YX Hao | Bertrand Lacoste
Ivan Ustûžanin | Rainer Kottenhoff | feitoi | vsl7
Michael Heath | Antonio Cebrián | David Yu Yang | Arkadiusz Michalski
Red_M | cdbdev | Andrey Smolyakov | Knut Leimbert
German Aizek | Tsuyoshi Miyake

## Releases

### Release 5.2.7

- Released 22 September 2023.
- Fix building on Windows with non-English environment. Pull request #200.
- Bash: fix line continuation for comments and when multiple backslashes at line end. Issue #195.
- Bash: treat += as operator and, inside arithmetic expressions, treat ++ and -- as operators. Issue #197.
- Bash: improve backslash handling inside backquoted command substitution and fix $ at end of backtick expression. Issue #194.
- Bash: treat words that are similar to numbers but invalid wholly as identifiers. Issue #199.
- Bash: consistently handle '-' options at line start and after '|' as identifiers. Issue #202.
- Bash: handle '-' options differently in [ single ] and [[ double ]] bracket constructs. Issue #203.
- F#: improve speed of folding long lines. Issue #198.
- HTML: fix invalid entity at line end and terminate invalid entity before invalid character. Issue #192.

### Release 5.2.6

- Released 26 July 2023.
- Include empty word list names in value returned by DescribeWordListSets and SCI_DESCRIBEKEYWORDSETS. Issue #175, Pull request #176.
- Bash: style here-doc end delimiters as SCE_SH_HERE_DELIM instead of SCE_SH_HERE_Q. Issue #177.
- Bash: allow '$' as last character in string. Issue #180, Pull request #181.
- Bash: fix state after expansion. Highlight all numeric and file test operators. Don't highlight dash in long option as operator. Issue #182, Pull request #183.
- Bash: strict checking of special parameters ($*, $@, $$, ...) with property lexer.bash.special.parameter to specify valid parameters. Issue #184, Pull request #186.
- Bash: recognize keyword before redirection operators (< and >). Issue #188, Pull request #189.
- Errorlist: recognize Bash diagnostic messages.
- HTML: allow ASP block to terminate inside line comment. Issue #185.
- HTML: fix folding with JSP/ASP.NET <%-- comment. Issue #191.
- HTML: fix incremental styling of multi-line ASP.NET directive. Issue #191.
- Matlab: improve arguments blocks. Add support for multiple arguments blocks. Prevent "arguments" from being keyword in function declaration line. Fix semicolon handling. Pull request #179.
- Visual Prolog: add support for embedded syntax with SCE_VISUALPROLOG_EMBEDDED and SCE_VISUALPROLOG_PLACEHOLDER.
  Styling of string literals changed with no differentiation between literals with quotes and those that are prefixed with "@". Quote characters are in a separate style (SCE_VISUALPROLOG_STRING_QUOTE) to contents (SCE_VISUALPROLOG_STRING).
  SCE_VISUALPROLOG_CHARACTER, SCE_VISUALPROLOG_CHARACTER_TOO_MANY, SCE_VISUALPROLOG_CHARACTER_ESCAPE_ERROR, SCE_VISUALPROLOG_STRING_EOL_OPEN, and SCE_VISUALPROLOG_STRING_VERBATIM_SPECIAL were removed (replaced with SCE_VISUALPROLOG_UNUSED[1-5]). Pull request #178.

### Release 5.2.5

- Released 31 May 2023.
- Add CharacterSetArray constructor without setBase initial argument for common case where this is setNone and the initialSet argument completely defines the characters. This shortens and clarifies use of CharacterSetArray.
- Bash: implement highlighting inside quoted elements and here-docs. Controlled with properties lexer.bash.styling.inside.string, lexer.bash.styling.inside.backticks, lexer.bash.styling.inside.parameter, and lexer.bash.styling.inside.heredoc. Issue #154, Issue #153, Feature #1033.
- Bash: add property lexer.bash.command.substitution to choose how to style command substitutions. 0 → SCE_SH_BACKTICKS; 1 → surrounding "$(" and ")" as operators and contents styled as bash code; 2 → use distinct styles (base style + 64) for contents. Choice (2) is a provisional feature and details may change before it is finalized. Issue #153.
- Bash: fix nesting of parameters (SCE_SH_PARAM) like ${var/$sub/"${rep}}"}. Issue #154.
- Bash: fix single character special parameters like $? by limiting style. Issue #154.
- Bash: treat "$$" as special parameter and end scalars before "$". Issue #154.
- Bash: treat "<<" in arithmetic contexts as left bitwise shift operator instead of here-doc. Issue #137.
- Batch: style SCE_BAT_AFTER_LABEL used for rest of line after label which is not executed. Issue #148.
- F#: Lex interpolated verbatim strings as verbatim. Issue #156.
- VB: allow multiline strings when lexer.vb.strings.multiline set. Issue #151.

### Release 5.2.4

- Released 13 March 2023.
- C++: Fix failure to recognize keywords containing upper case. Issue #149.
- GDScript: Support % and $ node paths. Issue #145, Pull request #146.

### Release 5.2.3

- Released 8 March 2023.
- Add scripts/PromoteNew.bat script to promote .new files after checking.
- Makefile: Remove 1024-byte line length limit..
- Ruby: Add new lexical classes for % literals SCE_RB_STRING_W (%w non-interpolable string array), SCE_RB_STRING_I (%i non-interpolable symbol array), SCE_RB_STRING_QI (%I interpolable symbol array), and SCE_RB_STRING_QS (%s symbol). Issue #124.
- Ruby: Disambiguate %= which may be a quote or modulo assignment. Issue #124, Bug #1255, Bug #2182.
- Ruby: Fix additional fold level for single character in SCE_RB_STRING_QW. Issue #132.
- Ruby: Set SCE_RB_HERE_QQ for unquoted and double-quoted heredocs and SCE_RB_HERE_QX for backticks-quoted heredocs. Issue #134.
- Ruby: Recognise #{} inside SCE_RB_HERE_QQ and SCE_RB_HERE_QX. Issue #134.
- Ruby: Improve regex and heredoc recognition. Issue #136.
- Ruby: Highlight #@, #@@ and #$ style interpolation. Issue #140.
- Ruby: Fix folding for multiple heredocs started on one line. Fix folding when there is a space after heredoc opening delimiter. Issue #135.
- YAML: Remove 1024-byte line length limit.

### Release 5.2.2

- Released 8 February 2023.
- C++: Fix keywords that start with non-ASCII. Also affects other lexers. Issue #130.
- Matlab: Include more prefix and suffix characters in numeric literals. Issue #120.
- Matlab: More accurate treatment of line ends inside strings. Matlab and Octave are different here. Issue #18.
- Modula-3: Don't treat identifier suffix that matches keyword as keyword. Issue #129.
- Modula-3: Fix endless loop in folder. Issue #128.
- Modula-3: Fix access to lines beyond document end in folder. Issue #131.
- Python: Don't highlight match and case as keywords in contexts where they probably aren't used as keywords. Pull request #122.
- X12: Support empty envelopes. Bug #2369.

### Release 5.2.1

- Released 6 December 2022.
- Update to Unicode 14. Feature #1461.
- Change default compilation optimization option to favour speed over space. -O2 for MSVC and -O3 for gcc and clang.
- Batch: Fix comments starting inside strings. Issue #115.
- F#: Lex signed numeric literals more accurately. Issue #110, Issue #111.
- F#: Add specifiers for 64-bit integer and floating point literals. Issue #112.
- Markdown: Stop styling numbers at line start in PRECHAR style. Issue #117.
- PowerShell: Recognise numeric literals more accurately. Issue #118.

### Release 5.2.0

- Released 12 October 2022.
- PowerShell: End comment before \r carriage return so \r and \n in same SCE_POWERSHELL_DEFAULT style. Pull request #99.
- PowerShell: Fix character truncation bug that lead to 'ġ' styled as an operator since its low 8 bits are equal to '!'.
- R: Support hexadecimal, float exponent and number suffix. Issue #101.
- R: Highlight backticks. Pull request #102.
- R: Highlight raw strings. Issue #100.
- R: Optionally highlight escape sequences in strings. Issue #100.
- Fix early truncation from LexAccessor::GetRange and LexAccessor::GetRangeLowered. Issue #17.

### Release 5.1.9

- Released 27 August 2022.
- Julia: Parse unicode forall and exists as identifiers #42314. Pull request #98.
- Julia: Parse apostrophe as char and not adjoint after exclamation. Issue #97, Pull request #98.
- Properties: Don't set header flag for empty section. Issue #96.

### Release 5.1.8

- Released 10 July 2022.
- F#: Recognize nested comments in F#. Issue #93.
- MS SQL: Recognize nested comments in Transact-SQL. Issue #87.
- MS SQL: Preference data types more consistently to not depend on how lexing is broken up into segments. This is needed because there are keywords that are both data type names and function names such as 'CHAR'. Issue #90.
- PowerShell: Fix single quoted strings to not treat backtick as escape. Pull request #92.
- Visual Prolog: Treat \r\n line ends the same as \n. This makes testing easier. Add test case. Issue #83.
- Visual Prolog: Allow disabling verbatim strings. Pull request #89.
- Visual Prolog: Support backquoted strings. Pull request #89.

### Release 5.1.7

- Released 22 May 2022.
- Add LexAccessor::StyleIndexAt to retrieve style values as unsigned to handle styles > 127 better. Issue #61.
- Associate more than one file extension with a setting for testing. Issue #81.
- CMake: Fix folding of "ElseIf". Issue #77, Pull request #78, Bug #2213.
- HTML: Fix folding of JavaScript doc comments. Bug #2219.
- Matlab: add "classdef" and "spmd" to folding keywords. Pull request #70.
- Matlab: handle "arguments" contextual keyword. Pull request #70.
- Matlab: improve support of class definition syntax. Pull request #75.
- Raku: fix escape detection. Pull request #76.
- Ruby: fix character sequence "?\\#" to not include '#' in SCE_RB_NUMBER as only second '\' is quoted. Issue #69.
- Ruby: improve styling of ternary expressions as commonly used. Issue #69.
- VHDL: support folding for VHDL 08 else-generate and case-generate. Pull request #80.

### Release 5.1.6

- Released 31 March 2022.
- Implement conditional statements "if" and "match", comparison function "$(=", and "FileNameExt" property in TestLexers to allow varying lexer properties over different files. Issue #62.
- Add LexAccessor::BufferStyleAt to retrieve style values to simplify logic and improve performance. Issue #54.
- Markdown: Optionally style all of Markdown header lines. Enabled with lexer.markdown.header.eolfill=1. Issue #60.
- Ruby: Fix operator method styling so next word not treated as method name. Issue #65.
- Ruby: Fix folding for Ruby 3 endless method definition. Issue #65.
- Ruby: Fold string array SCE_RB_STRING_QW. Issue #65.
- Ruby: Fix final \n in indented heredoc to be SCE_RB_HERE_Q. Issue #66.
- Ruby: Fix heredoc recognition when '.' and ',' used in method calls and after SCE_RB_GLOBAL. Classify word after heredoc delimiter instead of styling as keyword. Issue #67.
- Ruby: Improve method highlighting so method name is styled as SCE_RB_DEFNAME and class/object is styled appropriately. Issue #68.

### Release 5.1.5

- Released 9 February 2022.
- Bash: Treat \r\n line ends the same as \n. This makes testing easier. Issue #57.
- Batch: Recognise "::" comments when second command on line. Bug #2304.
- F#: Recognise format specifiers in interpolated strings and %B for binary. Issue #46.
- F#: More accurate line-based folding. Issue #56.
- HTML: Fix folding inside script blocks. Issue #47, Issue #53.
- Inno Setup: Fix multiline comments in code. Issue #44.
- Python: Add attribute style with properties lexer.python.identifier.attributes and lexer.python.decorator.attributes. Pull request #49.
- Allow choice of object file directory with makefile by setting DIR_O. Issue #50.

### Release 5.1.4

- Released 7 December 2021.
- Add AsciiDoc lexer. Pull request #39.
- Add GDScript lexer. Some behaviour and lexical states may change before this lexer is stable. Pull request #41.
- Fix strings ending in escaped '\' in F#. Issue #38.
- Better handling of bad terminators and folding for X12. Feature #1420.

### Release 5.1.3

- Released 8 November 2021.
- Fix parsing of 128-bit integer literals in Rust. Issue #33.
- Fix different styles between \r and \n at end of line comments for Rust. Issue #34.
- For Rust, don't go past end when file ends with unterminated block comment. Issue #35.

### Release 5.1.2

- Released 23 September 2021.
- Implement conditional group rules in CSS. Issue #25, Pull request #28.
- Allow F# triple-quoted strings to interpolate string literals. Issue #21.
- Highlight F# printf specifiers in type-checked interpolated strings. Issue #24.
- Fix styling for Inno Setup scripts handling unterminated strings, message sections, and avoid terminating comments between CR and LF. Pull request #29. Feature #1415.
- Fix Markdown hang when document ends with "`", "*", "_", or similar. Issue #23.
- Treat '.' as an operator instead of part of a word for PHP. Issue #22. Bug #2225.
- Check PHP numeric literals, showing invalid values with default style instead of numeric. Issue #20.
- For PHP, recognize start of comment after numeric literal. Issue #20. Bug #2143.
- For PHP, recognize PHP code within JavaScript strings. Pull request #27.

### Release 5.1.1

- Released 26 July 2021.
- On 32-bit Win32 using Visual C++ projects, stop exported functions ending with @n causing failures with GetProcAddress.
- Fixed crash when calling TagsOfStyle on C++ lexer after allocating substyles.
- Fixed folding for Julia which could be inconsistent depending on range folded. Added SCE_JULIA_KEYWORD4 and SCE_JULIA_TYPEOPERATOR lexical styles and changed keyword set 4 from "Raw string literals" to "Built in functions". Property lexer.julia.string.interpolation removed. Updated set of characters for identifiers. Pull request #13.
- Fixed Markdown emphasis spans to only be recognized when closed in same paragraph. Bug #1216.
- Fixed Markdown code block to terminate when end marker is indented. Display all of end marker in code block style. Only recognize inline code when closed in same paragraph. Bug #2247.
- Fixed Matlab to not allow escape sequences in double-quoted strings. Issue #18.
- Support flexible heredoc and nowdoc syntax for PHP. Issue #19.
- Enabled '_' digit separator in numbers for PHP. Issue #19.
- Stop styling attributes as comments for PHP. Issue #19.

### Release 5.1.0

- Released 23 June 2021.
- This is a stable release. The Lexilla protocol should remain compatible through 5.x releases.
- Fixed bugs with styling Erlang by handling \n and \r\n line endings consistently.
- Fixed folding for F# open statements and for strings that contain comment prefixes.
- Format specifiers lexed in F# strings.
- Fixed folding for ASP files where scripts were treated inconsistently when '<%' was included or not included in range examined.
- Fixed folding of Raku heredocs that start with "q:to" or "qq:to".
- Fixed folding at end of Ruby files where these is no final new line.
- Made folding of Tcl files more consistent by always treating completely empty lines as whitespace.
- Fixed styling of "a:b" with no spaces in YAML as a single piece of text instead of a key-value pair. Pull request #15.

### Release 5.0.3

- Released 2 June 2021.
- Add namespace feature with GetNameSpace function.
- Add Julia lexer. Feature #1380.
- Fix transition to comment for --> inside JavaScript string. Bug #2207.
- Fix variable expansion in Batch. Issue #4.
- Fix empty link titles in Markdown. Bug #2235. Also fix detection of whether the previous line had content which treated '\n' and '\r\n' line endings differently.
- Remove nested comment and long string support as these were removed from Lua. Bug #2205.
- Update to Unicode 13. Feature #1379.
- AddStaticLexerModule function adds a static lexer to Lexilla's list.
- On Win32 enable hardware-enforced stack protection. Feature #1405.
- On 32-bit Win32 using g++, stop exported functions ending with @n causing failures with GetProcAddress. Issue #10.

### Release 5.0.2

- Released 23 April 2021.
- Fix assertion in cpp lexer handling of preprocessor. Empty preprocessor statement '#' caused preprocessor history to be stored on incorrect line number. Dangling #else or #elif without corresponding #if led to inconsistent state. Change treatment of empty preprocessor statement to set subsequent line end characters in preprocessor style as this is more consistent with other preprocessor directives and avoids differences between \n and \r\n line ends. Bug #2245.

### Release 5.0.1

- Released 9 April 2021.
- Add LexerNameFromID function to Lexilla protocol as optional and temporary to help applications migrate to Lexilla. It is marked deprecated and will be removed in a future release.
- The cpp lexer supports XML styled comment doc keywords. Pull request #2.
- The errorlist lexer detects NMAKE fatal errors and Microsoft linker errors as SCE_ERR_MS.

### Release 5.0.0

- Released 5 March 2021.
- First version that separates Lexilla from Scintilla. Each of the 3 projects now has a separate history page but history before 5.0.0 remains combined.
- Lexer added for F#.

### Lexilla became a separate project at this point.

### Release 4.4.6

- Released 1 December 2020.
- Fix building with Xcode 12. Bug #2187.

### Release 4.4.5

- Released 11 September 2020.
- Lexilla interface supports setting initialisation properties on lexer libraries with SetLibraryProperty and GetLibraryPropertyNames functions. These are called by SciTE which will forward properties to lexer libraries that are prefixed with "lexilla.context.".
- Allow cross-building for GTK by choosing pkg-config. Bug #2189.
- On GTK, allow setting CPPFLAGS (and LDFLAGS for SciTE) to support hardening. Bug #2191.
- Changed SciTE's indent.auto mode to set tab size to indent size when file uses tabs for indentation. Bug #2198.
- Fix position of marker symbols for SC_MARGIN_RTEXT which were being moved based on width of text.
- Fixed bug on Win32 where cursor was flickering between hand and text over an indicator with hover style. Bug #2170.
- Fixed bug where hovered indicator was not returning to non-hover appearance when mouse moved out of window or into margin. Bug #2193.
- Fixed bug where a hovered INDIC_TEXTFORE indicator was not applying the hover colour to the whole range. Bug #2199.
- Fixed bug where gradient indicators were not showing hovered appearance.
- Fixed bug where layout caching was ineffective. Bug #2197.
- For SciTE, don't show the output pane for quiet jobs. Feature #1365.
- Support command.quiet for SciTE on GTK. Feature #1365.
- Fixed a bug in SciTE with stack balance when a syntax error in the Lua startup script caused continuing failures to find functions after the syntax error was corrected. Bug #2176.
- Added method for iterating through multiple vertical edges: SCI_GETMULTIEDGECOLUMN. Feature #1350.

### Release 4.4.4

- Released 21 July 2020.
- End of line annotations implemented. Bug #2141.
- Add SCI_BRACEMATCHNEXT API. Feature #1368.
- The latex lexer supports lstlisting environment that is similar to verbatim. Feature #1358.
- For SciTE on Linux, place liblexilla.so and libscintilla.so in /usr/lib/scite. Bug #2184.
- Round SCI_TEXTWIDTH instead of truncating as this may be more accurate when sizing application elements to match text. Feature #1355.
- Display DEL control character as visible "DEL" block like other control characters. Feature #1369.
- Allow caret width to be up to 20 pixels. Feature #1361.
- SciTE on Windows adds create.hidden.console option to stop console window flashing when Lua script calls os.execute or io.popen.
- Fix translucent rectangle drawing on Qt. When drawing a translucent selection, there were edge artifacts as the calls used were drawing outlines over fill areas. Make bottom and right borders on INDIC_ROUNDBOX be same intensity as top and left. Replaced some deprecated Qt calls with currently supported calls.
- Fix printing on Windows to use correct text size. Bug #2185.
- Fix bug on Win32 where calling WM_GETTEXT for more text than in document could return less text than in document.
- Fixed a bug in SciTE with Lua stack balance causing failure to find functions after reloading script. Bug #2176.

### Release 4.4.3

- Released 3 June 2020.
- Fix syntax highlighting for SciTE on Windows by setting executable directory for loading Lexilla. Bug #2181.

### Release 4.4.2

- Released 2 June 2020.
- On Cocoa using Xcode changed Lexilla.dylib install path to @rpath as would otherwise try /usr/lib which won't work for sandboxed applications.
- On Cocoa using Xcode made work on old versions of macOS by specifying deployment target as 10.8 instead of 10.15.
- On Win32 fix static linking of Lexilla by specifying calling convention in Lexilla.h.
- SciTE now uses default shared library extension even when directory contains '.'.

### Release 4.4.0

- Released 1 June 2020.
- Added Xcode project files for Lexilla and Scintilla with no lexers (cocoa/Scintilla).
- For GTK, build a shared library with no lexers libscintilla.so or libscintilla.dll.
- Lexilla used as a shared library for most builds of SciTE except for the single file executable on Win32. On GTK, Scintilla shared library used. LexillaLibrary code can be copied out of SciTE for other applications that want to interface to Lexilla.
- Constants in Scintilla.h can be disabled with SCI_DISABLE_AUTOGENERATED.
- Implement per-monitor DPI Awareness on Win32 so both Scintilla and SciTE will adapt to the display scale when moved between monitors. Applications should forward WM_DPICHANGED to Scintilla. Bug #2171, Bug #2063.
- Optimized performance when opening huge files. Feature #1347.
- Add Appearance and Contrast properties to SciTE that allow customising visuals for dark mode and high contrast modes.
- Fixed bug in Batch lexer where a single character line with a single character line end continued state onto the next line.
- Added SCE_ERR_GCC_EXCERPT style for GCC 9 diagnostics in errorlist lexer.
- Fixed buffer over-read bug with absolute references in MMIXAL lexer. Bug #2019.
- Fixed bug with GTK on recent Linux distributions where underscores were invisible. Bug #2173.
- Fixed GTK on Linux bug when pasting from closed application. Bug #2175.
- Fixed bug in SciTE with Lua stack balance. Bug #2176.
- For macOS, SciTE reverts to running python (2) due to python3 not being available in the sandbox.

### Release 4.3.3

- Released 27 April 2020.
- Added Visual Studio project files for Lexilla and Scintilla with no lexers.
- Add methods for iterating through the marker handles and marker numbers on a line: SCI_MARKERHANDLEFROMLINE and SCI_MARKERNUMBERFROMLINE. Feature #1344.
- Assembler lexers asm and as can change comment character with lexer.as.comment.character property. Feature #1314.
- Fix brace styling in Batch lexer so that brace matching works. Bug #1624, Bug #1906, Bug #1997, Bug #2065.
- Change Perl lexer to style all line ends of comment lines in comment line style. Previously, the last character was in default style which made the characters in \r\n line ends have mismatching styles. Bug #2164.
- When a lexer has been set with SCI_SETILEXER, fix SCI_GETLEXER and avoid sending SCN_STYLENEEDED notifications.
- On Win32 fix handling Japanese IME input when both GCS_COMPSTR and GCS_RESULTSTR set.
- With Qt on Win32 add support for line copy format on clipboard, compatible with Visual Studio. Bug #2167.
- On Qt with default encoding (ISO 8859-1) fix bug where 'µ' (Micro Sign) case-insensitively matches '?' Bug #2168.
- On GTK with Wayland fix display of windowed IME. Bug #2149.
- For Python programs, SciTE defaults to running python3 on Unix and pyw on Windows which will run the most recently installed Python in many cases. Set the "python.command" property to override this. Scripts distributed with Scintilla and SciTE are checked with Python 3 and may not work with Python 2.

### Release 4.3.2

- Released 6 March 2020.
- On Win32 fix new bug that treated all dropped text as rectangular.

### Release 4.3.1

- Released 4 March 2020.
- Add default argument for StyleContext::GetRelative. Feature #1336.
- Fix drag and drop between different encodings on Win32 by always providing CF_UNICODETEXT only. Bug #2151.
- Automatically scroll while dragging text. Feature #497.
- On Win32, the numeric keypad with Alt pressed can be used to enter characters by number. This can produce unexpected results in non-numlock mode when function keys are assigned. Potentially problematic keys like Alt+KeypadUp are now ignored. Bug #2152.
- Crash fixed with Direct2D on Win32 when updating driver. Bug #2138.
- For SciTE on Win32, fix crashes when Lua script closes application. Bug #2155.

### Release 4.3.0

- Released 16 January 2020.
- Lexers made available as Lexilla library. TestLexers program with tests for Lexilla and lexers added in lexilla/test.
- SCI_SETILEXER implemented to use lexers from Lexilla or other sources.
- ILexer5 interface defined provisionally to support use of Lexilla. The details of this interface may change before being stabilised in Scintilla 5.0.
- SCI_LOADLEXERLIBRARY implemented on Cocoa.
- Build Scintilla with SCI_EMPTYCATALOGUE to avoid making lexers available.
- Lexer and folder added for Raku language. Feature #1328.
- Don't clear clipboard before copying text with Qt. Bug #2147.
- On Win32, remove support for CF_TEXT clipboard format as Windows will convert to CF_UNICODETEXT.
- Improve IME behaviour on GTK. Set candidate position for windowed IME. Improve location of candidate window. Prevent movement of candidate window while typing. Bug #2135.

### Release 4.2.3

- Released 11 December 2019.
- Fix failure in SciTE's Complete Symbol command.

### Release 4.2.2

- Released 7 December 2019.
- Move rather than grow selection when insertion at start. Bug #2140.
- Allow target to have virtual space. Add methods for finding the virtual space at start and end of multiple selections. Feature #1316.
- SciTE on Win32 adds mouse button "Forward" and "Backward" key definitions for use in properties like user.shortcuts. Feature #1317.
- Lexer and folder added for Hollywood language. Feature #1324.
- HTML lexer treats custom tags from HTML5 as known tags. These contain "-" like "custom-tag". Feature #1299.
- HTML lexer fixes bug with some non-alphabetic characters in unknown tags. Feature #1320.
- Fix bug in properties file lexer where long lines were only styled for the first 1024 characters. Bug #1933.
- Ruby lexer recognizes squiggly heredocs. Feature #1326.
- Avoid unnecessary IME caret movement on Win32. Feature #1304.
- Clear IME state when switching language on Win32. Bug #2137.
- Fixed drawing of translucent rounded rectangles on Win32 with Direct2D. Bug #2144.
- Setting rectangular selection made faster. Bug #2130.
- SciTE reassigns *.s extension to the GNU Assembler language from the S+ statistical language.

### Release 4.2.1

- Released 24 October 2019.
- Add SCI_SETTABMINIMUMWIDTH to set the minimum width of tabs. This allows minimaps or overviews to be layed out to match the full size editing view. Bug #2118.
- SciTE enables use of SCI_ commands in user.context.menu.
- XML folder adds fold.xml.at.tag.open option to fold tags at the start of the tag "<" instead of the end ">". Bug #2128.
- Metapost lexer fixes crash with 'interface=none' comment. Bug #2129.
- Perl lexer supports indented here-docs. Bug #2121.
- Perl folder folds qw arrays. Feature #1306.
- TCL folder can turn off whitespace flag by setting fold.compact property to 0. Bug #2131.
- Optimize setting up keyword lists in lexers. Feature #1305.
- Updated case conversion and character categories to Unicode 12.1. Feature #1315.
- On Win32, stop the IME candidate window moving unnecessarily and position it better.
  Stop candidate window overlapping composition text and taskbar.
  Position candidate window closer to composition text.
  Stop candidate window moving while typing.
  Align candidate window to target part of composition text.
  Stop Google IME on Windows 7 moving while typing.
  Bug #2120. Feature #1300.

### Release 4.2.0

- Released 5 July 2019.
- Scintilla.iface adds line and pointer types, increases use of the position type, uses enumeration types in methods and properties, and adds enumeration aliases to produce better CamelCase identifiers. Feature #1297.
- Source of input (direct / IME composition / IME result) reported in SCN_CHARADDED so applications can treat temporary IME composition input differently. Bug #2038.
- Lexer added for DataFlex. Feature #1295.
- Matlab lexer now treats keywords as case-sensitive. Bug #2112.
- SQL lexer fixes single quoted strings where '" (quote, double quote) was seen as continuing the string. Bug #2098.
- Platform layers should use InsertCharacter method to perform keyboard and IME input, replacing AddCharUTF method. Feature #1293.
- Add CARETSTYLE_BLOCK_AFTER option to always display block caret after selection. Bug #1924.
- On Win32, limit text returned from WM_GETTEXT to the length specified in wParam. This could cause failures when using assistive technologies like NVDA. Bug #2110, Bug #2114.
- Fix deletion of isolated invalid bytes. Bug #2116.
- Fix position of line caret when overstrike caret set to block. Bug #2106.

### Release 4.1.7

- Released 13 June 2019.
- Fixes an incorrect default setting in SciTE which caused multiple visual features to fail to display.

### Release 4.1.6

- Released 10 June 2019.
- For Visual C++ 2019, /std:c++latest now includes some C++20 features so switch to /std:c++17.
- SciTE supports editing files larger than 2 gigabytes when built as a 64-bit application.
- Lexer added for X12. Feature #1280.
- CMake folder folds function - endfunction. Feature #1289.
- VB lexer adds support for VB2017 binary literal &B and digit separators 123_456. Feature #1288.
- Improved performance of line folding code on large files when no folds are contracted. This improves the time taken to open or close large files.
- Fix bug where changing identifier sets in lexers preserved previous identifiers.
- Fixed bug where changing to Unicode would rediscover line end positions even if still sticking to ASCII (not Unicode NEL, LS, PS) line ends. Only noticeable on huge files with over 100,000 lines.
- Changed behaviour of SCI_STYLESETCASE(*,SC_CASE_CAMEL) so that it only treats 'a-zA-Z' as word characters because this covers the feature's intended use (viewing case-insensitive ASCII-only keywords in a specified casing style) and simplifies the behaviour and code. Feature #1238.
- In SciTE added Camel case option "case:c" for styles to show keywords with initial capital.

### Release 4.1.5

- Released 17 April 2019.
- On Win32, removed special handling of non-0 wParam to WM_PAINT.
- Implement high-priority idle on Win32 to make redraw smoother and more efficient.
- Add vertical bookmark symbol SC_MARK_VERTICALBOOKMARK. Feature #1276.
- Set default fold display text SCI_SETDEFAULTFOLDDISPLAYTEXT(text). Feature #1272.
- Add SCI_SETCHARACTERCATEGORYOPTIMIZATION API to optimize speed of character category features like determining whether a character is a space or number at the expense of memory. Feature #1259.
- Improve the styling of numbers in Nim. Feature #1268.
- Fix exception when inserting DBCS text. Bug #2093.
- Improve performance of accessibility on GTK. Bug #2094.
- Fix text reported for deletion with accessibility on GTK. Bug #2095.
- Fix flicker when inserting primary selection on GTK. Bug #2087.
- Support coloured text in Windows 8.1+. Feature #1277.
- Avoid potential long hangs with idle styling for huge documents on Cocoa and GTK.

### Release 4.1.4

- Released 7 March 2019.
- Calltips implemented on Qt. Bug #1548.
- Block caret in overtype mode SCI_SETCARETSTYLE(caretStyle | CARETSTYLE_OVERSTRIKE_BLOCK). Feature #1217.
- SciTE supports changing caret style via caret.style property. Feature #1264.
- Lexer added for .NET's Common Intermediate Language CIL. Feature #1265.
- The C++ lexer, with styling.within.preprocessor on, now interprets "(" in preprocessor "#if(" as an operator instead of part of the directive. This improves folding as well which could become unbalanced.
- Fix raw strings in Nim. Feature #1253.
- Fix inconsistency with dot styling in Nim. Feature #1260.
- Enhance the styling of backticks in Nim. Feature #1261.
- Enhance raw string identifier styling in Nim. Feature #1262.
- Fix fold behaviour with comments in Nim. Feature #1254.
- Fix TCL lexer recognizing '"' after "," inside a bracketed substitution. Bug #1947.
- Fix garbage text from SCI_MOVESELECTEDLINESUP and SCI_MOVESELECTEDLINESDOWN for rectangular or thin selection by performing no action. Bug #2078.
- Ensure container notified if Insert pressed when caret off-screen. Bug #2083.
- Fix memory leak when checking running instance on GTK. Feature #1267.
- Platform layer font cache removed on Win32 as there is a platform-independent cache.
- SciTE for GTK easier to build on macOS. Bug #2084.

### Release 4.1.3

- Released 10 January 2019.
- Add SCI_SETCOMMANDEVENTS API to allow turning off command events as they can be a significant performance cost.
- Improve efficiency of idle wrapping by wrapping in blocks as large as possible while still remaining responsive.
- Updated case conversion and character categories to Unicode 11.
- Errorlist lexer recognizes negative line numbers as some programs show whole-file errors occurring on line -1. SciTE's parsing of diagnostics also updated to handle this case.
- Added "nim" lexer (SCLEX_NIM) for the Nim language which was previously called Nimrod. For compatibility, the old "nimrod" lexer is still present but is deprecated and will be removed at the next major version. Feature #1242.
- The Bash lexer implements substyles for multiple sets of keywords and supports SCI_PROPERTYNAMES. Bug #2054.
- The C++ lexer interprets continued preprocessor lines correctly by reading all of the logical line. Bug #2062.
- The C++ lexer interprets preprocessor arithmetic expressions containing multiplicative and additive operators correctly by following operator precedence rules. Bug #2069.
- The EDIFACT lexer handles message groups as well as messages. Feature #1247.
- For SciTE's Find in Files, allow case-sensitivity and whole-word options when running a user defined command. Bug #2053.
- Notify with SC_UPDATE_SELECTION when user performs a multiple selection add.
- On macOS 10.14 Cocoa, fix incorrect horizontal offset. Bug #2022.
- On Cocoa, fix a crash that occurred when entering a dead key diacritic then a character that can not take that diacritic, such as option+e (acute accent) followed by g. Bug #2061.
- On Cocoa, use dark info bar background when system is set to Dark Appearance. Bug #2055.
- Fixed a crash on Cocoa in bidirectional mode where some patterns of invalid UTF-8 caused failures to create Unicode strings.
- SCI_MARKERADD returns -1 for invalid lines as documented instead of 0. Bug #2051.
- Improve performance of text insertion when Unicode line indexing off.
- For Qt on Windows, stop specifying -std:c++latest as that is no longer needed to enable C++17 with MSVC 2017 and Qt 5.12 and it caused duplicate flag warnings.
- On Linux, enable Lua to access dynamic libraries. Bug #2058.

### Release 4.1.2

- Released 2 October 2018.
- C++ lexer fixes evaluation of "#elif". Bug #2045.
- Markdown lexer fixes highlighting of non-ASCII characters in links.
- SciTE on Win32 drops menukey feature, makes Del key work again in find and replace strips and disables F5 while command running. Bug #2044.

### Release 4.1.1

- Released 9 September 2018.
- Optional indexing of line starts in UTF-8 documents by UTF-32 code points and UTF-16 code units added. This can improve performance for clients that provide UTF-32 or UTF-16 interfaces or that need to interoperate with UTF-32 or UTF-16 components.
- Lexers added for SAS and Stata. Feature #1185.
- Shell folder folds "if", "do", and "case". Feature #1144.
- SciTE's menukey feature implemented on Windows.
- For SciTE on Windows, user defined strip lists are now scrollable. Cursor no longer flickers in edit and combo boxes. Focus in and out events occur for combo boxes.
- Fix a leak in the bidirectional code on Win32.
- Fix crash on Win32 when switching technology to default after setting bidirectional mode.
- Fix margin cursor on Cocoa to point more accurately.
- Fix SciTE crash on GTK+ when using director interface.

### Release 4.1.0

- Released 19 June 2018.
- Experimental and incomplete support added for bidirectional text on Windows using DirectWrite and Cocoa for UTF-8 documents by calling SCI_SETBIDIRECTIONAL(SC_BIDIRECTIONAL_L2R). This allows documents that contain Arabic or Hebrew to be edited more easily in a way that is similar to other editors.
- INDIC_GRADIENT and INDIC_GRADIENTCENTRE indicator types added. INDIC_GRADIENT starts with a specified colour and alpha at top of line and fades to fully transparent at bottom. INDIC_GRADIENTCENTRE starts with a specified colour and alpha at centre of line and fades to fully transparent at top and bottom.
- Wrap indent mode SC_WRAPINDENT_DEEPINDENT added which indents two tabs from previous line.
- Indicators are drawn for line end characters when displayed.
- Most invalid bytes in DBCS encodings are displayed as blobs to make problems clear and ensure something is shown.
- On Cocoa, invalid text in DBCS encodings will be interpreted through the single-byte MacRoman encoding as that will accept any byte.
- Diff lexer adds styles for diffs containing patches.
- Crashes fixed on macOS for invalid DBCS characters when dragging text, changing case of text, case-insensitive searching, and retrieving text as UTF-8.
- Regular expression crash fixed on macOS when linking to libstdc++.
- SciTE on GTK+, when running in single-instance mode, now forwards all command line arguments to the already running instance. This allows "SciTE filename -goto:line" to work.

### Release 4.0.5

- Released 10 May 2018.
- Add experimental SC_DOCUMENTOPTION_TEXT_LARGE option to accommodate documents larger than 2 GigaBytes.
- Additional print option SC_PRINT_SCREENCOLOURS prints with the same colours used on screen including line numbers.
- SciTE can read settings in EditorConfig format when enabled with editor.config.enable property.
- EDIFACT lexer adds property lexer.edifact.highlight.un.all to highlight all UN* segments. Feature #1166.
- Fortran folder understands "change team" and "endteam". Feature #1216.
- Set the last X chosen when SCI_REPLACESEL called to ensure macros work when text insertion followed by caret up or down.
- Bugs fixed in regular expression searches in Scintilla where some matches did not occur in an effort to avoid infinite loops when replacing on empty matches like "^" and "$". Applications should always handle empty matches in a way that avoids infinite loops, commonly by incrementing the search position after replacing an empty match. SciTE fixes a bug where replacing "^" always matched on the first line even when it was an "in selection" replace and the selection started after the line start.
- Bug fixed in SciTE where invalid numeric properties could crash.
- Runtime warnings fixed with SciTE on GTK after using Find in Files.
- SciTE on Windows find and replace strips place caret at end of text after search.
- Bug fixed with SciTE on macOS where corner debris appeared in the margin when scrolling. Fixed by not completely hiding the status bar so the curved corner is no longer part of the scrolling region. By default, 4 pixels of the status bar remain visible and this can be changed with the statusbar.minimum.height property or turned off if the debris are not a problem by setting the property to 0.

### Release 4.0.4

- Released 10 April 2018.
- On Win32, the standard makefiles build a libscintilla static library as well as the existing dynamic libraries. The statically linked version of SciTE, Sc1, links to this static library. A new file, ScintillaDLL.cxx, provides the DllMain function required for a stand-alone Scintilla DLL. Build and project files should include this file when producing a DLL and omit it when producing a static library or linking Scintilla statically. The STATIC_BUILD preprocessor symbol is no longer used.
- On Win32, Direct2D support is no longer automatically detected during build. DISABLE_D2D may still be defined to remove Direct2D features.
- In some cases, invalid UTF-8 is handled in a way that is a little friendlier. For example, when copying to the clipboard on Windows, an invalid lead byte will be copied as the equivalent ISO 8859-1 character and will not hide the following byte. Feature #1211.
- Lexer added for the Maxima computer algebra language. Feature #1210.
- Fix hang in Lua lexer when lexing a label upto the terminating "::". Bug #1999.
- Lua lexer matches identifier chains with dots and colons. Bug #1952.
- For rectangular selections, pressing Home or End now moves the caret to the Home or End position instead of the limit of the rectangular selection.
- Fix move-extends-selection mode for rectangular and line selections.
- On GTK+, change lifetime of selection widget to avoid runtime warnings.
- Fix building on Mingw/MSYS to perform file copies and deletions. Bug #1993.
- SciTE can match a wider variety of file patterns where '*' is in the middle of the pattern and where there are multiple '*'. A '?' matches any single character.
- SciTE on Windows can execute Python scripts directly by name when on path. Feature #1209.
- SciTE on Windows Find in Files checks for cancel after every 10,000 lines read so can be stopped on huge files.
- SciTE remembers entered values in lists in more cases for find, replace and find in files. Bug #1715.

### Release 4.0.3

- Released 12 February 2018.
- Features from C++14 and C++17 are used more often, with build files now specifying c++17, gnu++17, c++1z, or std:c++latest (MSVC). Requires Microsoft Visual C++ 2017.5, GCC 7, Xcode 9.2 or Clang 4.0 or newer.
- SCI_CREATEDOCUMENT adds a bytes argument to allocate memory for an initial size. SCI_CREATELOADER and SCI_CREATEDOCUMENT add a documentOption argument to allow choosing different document capabilities.
- Add SC_DOCUMENTOPTION_STYLES_NONE option to stop allocating memory for styles.
- Add SCI_GETMOVEEXTENDSSELECTION to allow applications to add more complex selection commands.
- SciTE property bookmark.symbol allows choosing symbol used for bookmarks. Feature #1208.
- Improve VHDL lexer's handling of character literals and escape characters in strings.
- Fix double tap word selection on Windows 10 1709 Fall Creators Update. Bug #1983.
- Fix closing autocompletion lists on Cocoa for macOS 10.13 where the window was emptying but staying visible. Bug #1981.
- Fix drawing failure on Cocoa with animated find indicator in large files with macOS 10.12 by disabling animation.
- SciTE on GTK+ installs its desktop file as non-executable and supports the common LDLIBS make variable. Bug #1989, Bug #1990.
- SciTE shows correct column number when caret in virtual space. Bug #1991.
- SciTE preserves selection positions when saving with strip.trailing.spaces and virtual space turned on. Bug #1992.

### Release 4.0.2

- Released 26 October 2017.
- Fix HTML lexer handling of Django so that nesting a {{ }} or {% %} Django tag inside of a {# #} Django comment does not break highlighting of rest of file
- The Matlab folder now treats "while" as a fold start. Bug #1985.
- Fix failure on Cocoa with animated find indicator in large files with macOS 10.13 by disabling animation on 10.13.
- Fix Cocoa hang when Scintilla loaded from SMB share on macOS 10.13. Bug #1979.

### Release 4.0.1

- Released 23 October 2017.
- The ILoader interface is defined in its own header ILoader.h as it is not related to lexing so doesn't belong in ILexer.h.
- The Scintilla namespace is always active for internal symbols and for the lexer interfaces ILexer4 and IDocument.
- The Baan lexer checks that matches to 3rd set of keywords are function calls and leaves as identifiers if not. Baan lexer and folder support #context_on / #context_off preprocessor feature.
- The C++ lexer improved preprocessor conformance.
  Default value of 0 for undefined preprocessor symbols.
  #define A is treated as #define A 1.
  "defined A" removes "A" before replacing "defined" with value. Bug #1966.
- The Python folder treats triple-quoted f-strings like triple-quoted strings. Bug #1977.
- The SQL lexer uses sql.backslash.escapes for double quoted strings. Bug #1968.
- Minor undefined behaviour fixed. Bug #1978.
- On Cocoa, improve scrolling on macOS 10.12. Bug #1885.
- On Cocoa, fix line selection by clicking in the margin when scrolled. Bug #1971.

### Release 4.0.0

- Released 16 August 2017.
- This is an unstable release with changes to interfaces used for lexers and platform access. Some more changes may occur to internal and external interfaces before stability is regained with 4.1.0.
- Uses C++14 features. Requires Microsoft Visual C++ 2017, GCC 7, and Clang 4.0 or newer.
- Support dropped for GTK+ versions before 2.24.
- The lexer interfaces ILexer and ILexerWithSubStyles, along with additional style metadata methods, were merged into ILexer4. Most lexers will need to be updated to match the new interfaces.
- The IDocumentWithLineEnd interface was merged into IDocument.
- The platform layer interface has changed with unused methods removed, a new mechanism for reporting events, removal of methods that take individual keyboard modifiers, and removal of old timer methods.
- Style metadata may be retrieved from lexers that support this through the SCI_GETNAMEDSTYLES, SCI_NAMEOFSTYLE, SCI_TAGSOFSTYLE, and SCI_DESCRIPTIONOFSTYLE APIs.
- The Cocoa platform layer uses Automatic Reference Counting (ARC).
- The default encoding in Scintilla is UTF-8.
- An SCN_AUTOCSELECTIONCHANGE notification is sent when items are highlighted in an autocompletion or user list.
- The data parameter to ILoader::AddData made const. Bug #1955.
- SciTE's embedded Lua interpreter updated to Lua 5.3.
- SciTE allows event handlers to be arbitrary callables, not just functions. Feature #1190.
- SciTE allows user.shortcuts to be defined with symbolic Scintilla messages like 'Ctrl+L|SCI_LINEDELETE|'.
- The Matlab lexer treats 'end' as a number rather than a keyword when used as a index. This also stops incorrect folding. Bug #1951.
- The Matlab folder implements "fold", "fold.comment", and "fold.compact" properties. Bug #1965.
- The Rust lexer recognizes 'usize' numeric literal suffixes. Bug #1919.
- Ensure redraw when application changes overtype mode so caret change visible even when not blinking. Notify application with SC_UPDATE_SELECTION when overtype changed - previously sent SC_UPDATE_CONTENT.
- Fix drawing failure when in wrap mode for delete to start/end of line which affects later lines but did not redraw them. Also fixed drawing for wrap mode on GTK+ 2.x. Bug #1949.
- On GTK+ fix drawing problems including incorrect scrollbar redrawing and flickering of text. Bug #1876.
- On Linux, both for GTK+ and Qt, the default modifier key for rectangular selection is now Alt. This is the same as Windows and macOS. This was changed from Ctrl as window managers are less likely to intercept Alt+Drag for moving windows than in the past.
- On Cocoa, fix doCommandBySelector but avoid double effect of 'delete' key. Bug #1958.
- On Qt, the updateUi signal includes the 'updated' flags. No updateUi signal is sent for focus in events. These changes make Qt behave more like the other platforms.
- On Qt, dropping files on Scintilla now fires the SCN_URIDROPPED notification instead of inserting text.
- On Qt, focus changes send the focusChanged signal. Bug #1957.
- On Qt, mouse tracking is reenabled when the window is reshown. Bug #1948.
- On Windows, the DirectWrite modes SC_TECHNOLOGY_DIRECTWRITEDC and SC_TECHNOLOGY_DIRECTWRITERETAIN are no longer provisional.
- SciTE on macOS fixes a crash when platform-specific and platform-independent session restoration clashed. Bug #1960.
- SciTE on GTK+ implements find.close.on.find. Bug #1152, Bug #1254, Bug #1762, Feature #849.

### Release 3.7.6

- Released 8 August 2017.
- This is the first release of the long term branch which avoids using features from C++14 or later in order to support older systems.
- The Baan lexer correctly highlights numbers when followed by an operator.
- On Cocoa, fix a bug with retrieving encoded bytes.

### Release 3.7.5

- Released 26 May 2017.
- This is the final release of SciTE 3.x.
- Support dropped for Microsoft Visual C++ 2013 due to increased use of C++11 features.
- Added a caret line frame as an alternative visual for highlighting the caret line.
- Added "Reverse Selected Lines" feature.
- SciTE adds "Select All Bookmarks" command.
- SciTE adds a save.path.suggestion setting to suggest a file name when saving an unnamed buffer.
- Updated case conversion and character categories to Unicode 9.
- The Baan lexer recognizes numeric literals in a more compliant manner including hexadecimal numbers and exponentials.
- The Bash lexer recognizes strings in lists in more cases. Bug #1944.
- The Fortran lexer recognizes a preprocessor line after a line continuation &. Bug #1935.
- The Fortran folder can fold comments. Bug #1936.
- The PowerShell lexer recognizes escaped quotes in strings. Bug #1929.
- The Python lexer recognizes identifiers more accurately when they include non-ASCII characters.
- The Python folder treats comments at the end of the file as separate from the preceding structure.
- The YAML lexer recognizes comments in more situations and styles a "..." line like a "---" line. Bug #1931.
- Update scroll bar when annotations added, removed, or visibility changed. Feature #1187.
- Canceling modes with the Esc key preserves a rectangular selection. Bug #1940.
- Builds are made with a sorted list of lexers to be more reproducible. Bug #1946.
- On Cocoa, a leak of mouse tracking areas was fixed.
- On Cocoa, the autocompletion is 4 pixels wider to avoid text truncation.
- On Windows, stop drawing a focus rectangle on the autocompletion list and raise the default list length to 9 items.
- SciTE examines at most 1 MB of a file to automatically determine indentation for indent.auto to avoid a lengthy pause when loading very large files.
- SciTE user interface uses lighter colours and fewer 3D elements to match current desktop environments.
- SciTE sets buffer dirty and shows message when file deleted if load.on.activate on.
- SciTE on Windows Find strip Find button works in incremental no-close mode. Bug #1926.

### Release 3.7.4

- Released 21 March 2017.
- Requires a C++11 compiler. GCC 4.8 and MSVC 2015 are supported.
- Support dropped for Windows NT 4.
- Accessibility support may be queried with SCI_GETACCESSIBILITY. On GTK+, accessibility may be disabled by calling SCI_SETACCESSIBILITY.
- Lexer added for "indent" language which is styled as plain text but folded by indentation level.
- The Progress ABL lexer handles nested comments where comment starts or ends are adjacent like "/*/*" or "*/*/".
- In the Python lexer, improve f-string support. Add support for multiline expressions in triple quoted f-strings. Handle nested "()", "[]", and "{}" in f-string expressions and terminate expression colouring at ":" or "!". End f-string if ending quote is seen in a "{}" expression. Fix terminating single quoted f-string at EOL. Bug #1918.
- The VHDL folder folds an "entity" on the first line of the file.
- For IMEs, do not clear selected text when there is no composition text to show.
- Fix to crash with fold tags where line inserted at start.
- Fix to stream selection mode when moving caret up or down. Bug #1905.
- Drawing fixes for fold tags include fully drawing lines and not overlapping some drawing and ensuring edges and mark underlines are visible.
- Fix Cocoa failure to display accented character chooser for European languages by partially reverting a change made to prevent a crash with Chinese input by special-casing the Cangjie input source. Bug #1881.
- Fix potential problems with IME on Cocoa when document contains invalid UTF-8.
- Fix crash on Cocoa with OS X 10.9 due to accessibility API not available. Bug #1915.
- Improved speed of accessibility code on GTK+ by using additional memory as a cache. Bug #1910.
- Fix crash in accessibility code on GTK+ < 3.3.6 caused by previous bug fix. Bug #1907.
- Fix to prevent double scrolling on GTK+ with X11. Bug #1901.
- SciTE on GTK+ adds an "accessibility" property to allow disabling accessibility on GTK+ as an optimization.
- SciTE on GTK+ has changed file chooser behaviour for some actions: overwriting an existing file shows a warning; the default session file name "SciTE.session" is shown and a "*.session" filter is applied; appropriate filters are applied when exporting; the current file name is displayed in "Save As" even when that file no longer exists.
- SciTE fixed a bug where, on GTK+, when the output pane had focus, menu commands performed by mouse were sent instead to the edit pane.
- SciTE on Windows 8+ further restricts the paths searched for DLLs to the application and system directories which may prevent some binary planting attacks.
- Fix failure to load Direct2D on Windows when used on old versions of Windows. Bug #1653.

### Release 3.7.3

- Released 19 February 2017.
- Display block caret over the character at the end of a selection to be similar to other editors.
- In SciTE can choose colours for fold markers. Feature #1172.
- In SciTE can hide buffer numbers in tabs. Feature #1173.
- The Diff lexer recognizes deleted lines that start with "--- ".
- The Lua lexer requires the first line to start with "#!" to be treated as a shebang comment, not just "#". Bug #1900.
- The Matlab lexer requires block comment start and end to be alone on a line. Bug #1902.
- The Python lexer supports f-strings with new styles, allows Unicode identifiers, and no longer allows @1 to be a decorator. Bug #1848.
- Fix folding inconsistency when fold header added above a folded part. Avoid unnecessary unfolding when a deletion does not include a line end. Bug #1896.
- Fix finalization crash on Cocoa. Bug #1909.
- SciTE on GTK+ can have a wide divider between the panes with the split.wide property.
- Fix display of autocompletion lists and calltips on GTK+ 3.22 on Wayland. Newer APIs used on GTK+ 3.22 as older APIs were deprecated.
- Fix crash in accessibility code on GTK+ due to signal receipt after destruction. Bug #1907.
- Make trackpad scrolling work on Wayland. Bug #1901.

### Release 3.7.2

- Released 30 December 2016.
- Minimize redrawing for SCI_SETSELECTIONN* APIs. Bug #1888.
- Use more precision to allow selecting individual lines in files with more than 16.7 million lines.
- For Qt 5, define QT_WS_MAC or QT_WS_X11 on those platforms. Bug #1887.
- For Cocoa, fix crash on view destruction with macOS 10.12.2. Bug #1891.
- Fix crash on GTK+ <3.8 due to incorrect lifetime of accessibility object. More accurate reporting of attribute ranges and deletion lengths for accessibility.
- In SciTE, if a Lua script causes a Scintilla failure exception, display error message in output pane instead of exiting. Bug #1773.

### Release 3.7.1

- Released 4 December 2016.
- The Scintilla namespace is no longer applied to struct definitions in Scintilla.h even when SCI_NAMESPACE defined. Client code should not define SCI_NAMESPACE.
- Structure names in Scintilla.h without prefixes are deprecated and will now only be usable with INCLUDE_DEPRECATED_FEATURES defined.
  Use the newer names with the "Sci_" prefix:
  CharacterRange → Sci_CharacterRange
  TextRange → Sci_TextRange
  TextToFind → Sci_TextToFind
  RangeToFormat → Sci_RangeToFormat
  NotifyHeader → Sci_NotifyHeader
- Previously deprecated features SC_CP_DBCS, SCI_SETUSEPALETTE. and SCI_GETUSEPALETTE have been removed and can no longer be used in client code.
- Single phase drawing SC_PHASES_ONE is deprecated along with the SCI_SETTWOPHASEDRAW and SCI_GETTWOPHASEDRAW messages.
- Accessibility support allowing screen readers to work added on GTK+ and Cocoa.
- Textual tags may be displayed to the right on folded lines with SCI_TOGGLEFOLDSHOWTEXT. This is commonly something like "{ ... }" or "<tr>...</tr>". It is displayed with the STYLE_FOLDDISPLAYTEXT style and may have a box drawn around it with SCI_FOLDDISPLAYTEXTSETSTYLE.
- A mouse right-click over the margin may send an SCN_MARGINRIGHTCLICK event. This only occurs when popup menus are turned off. SCI_USEPOPUP now has three states: SC_POPUP_NEVER, SC_POPUP_ALL, or SC_POPUP_TEXT.
- INDIC_POINT and INDIC_POINTCHARACTER indicators added to display small arrows underneath positions or characters.
- Added alternate appearance for visible tabs which looks like a horizontal line. Controlled with SCI_SETTABDRAWMODE. Feature #1165.
- On Cocoa, a modulemap file is included to allow Scintilla to be treated as a module. This makes it easier to use Scintilla from the Swift language.
- Baan folder accommodates sections and lexer fixes definition of SCE_BAAN_FUNCDEF.
- EDIFACT lexer and folder added. Feature #1166.
- JSON folder fixed where it didn't resume folding with the correct fold level.
- Matlab folder based on syntax instead of indentation so more accurate. Bug #1692.
- YAML lexer fixed style of references and keywords when followed by a comment. Bug #1872.
- Margin click to select line now clears rectangular and additional selections.
- Fixed a NULL access bug on GTK+ where the scrollbars could be used during destruction. Bug #1873.
- A potential bug on GTK+ fixed where asynchronous clipboard could be delivered after its target Scintilla instance was destroyed.
- Cocoa IME made more compliant with documented behaviour to avoid bugs that caused huge allocations. Bug #1881.
- On Win32 fix EM_SETSEL to match Microsoft documentation.. Bug #1886.
- SciTE on GTK+ allows localizing tool bar tool tips. Feature #1167.
- SciTE on Windows restores focus to edit pane after closing user strip.
- SciTE measures files larger that 2 GB which allows it to refuse to open huge files more consistently and to show better warning messages.

### Release 3.7.0

- Released 16 October 2016.
- Word selection, navigation, and manipulation is now performed on characters instead of bytes leading to more natural behaviour for multi-byte encodings like UTF-8. For UTF-8 characters 0x80 and above, classification into word; punctuation; space; or line-end is based on the Unicode general category of the character and is not customizable. Bug #1832.
- Two enums changed in Scintilla.iface which may lead to changed bindings. There were 2 FontQuality enums and the first is now PhasesDraw. The prefix for FoldAction was SC_FOLDACTION and is now SC_FOLDACTION_ which is similar to other enums. These changes do not affect the standard C/C++ binding.
- EDGE_MULTILINE and SCI_MULTIEDGEADDLINE added to allow displaying multiple vertical edges simultaneously.
- The number of margins can be changed with SCI_SETMARGINS.
- Margin type SC_MARGIN_COLOUR added so that the application may choose any colour for a margin with SCI_SETMARGINBACKN.
- On Win32, mouse wheel scrolling can be restricted to only occur when the mouse is within the window.
- The WordList class in lexlib used by lexers adds an InListAbridged method for matching keywords that have particular prefixes and/or suffixes.
- The Baan lexer was changed significantly with more lexical states, keyword sets, and support for abridged keywords.
- The CoffeeScript lexer styles interpolated code in strings. Bug #1865.
- The Progress lexer "progress" has been replaced with a new lexer "abl" (Advanced Business Language) with a different set of lexical states and more functionality. The lexical state prefix has changed from SCE_4GL_ to SCE_ABL_. Feature #1143.
- The PowerShell lexer understands the grave accent escape character. Bug #1868.
- The YAML lexer recognizes inline comments. Bug #1660.
- SciTE on Windows can retain coloured selection when inactive with selection.always.visible property.
- SciTE on Windows adds a state to close.on.find to close the find strip when a match is found.
- Fix caret position after left or right movement with rectangular selection. Bug #1861.
- In SciTE, optional prefix argument added to scite.ConstantName method. Bug #1860.
- On Cocoa, include ILexer.h in the public headers of the framework. Bug #1855.
- On Cocoa, allow subclass of SCIContentView to set cursor. Bug #1863.
- On Cocoa, recognize the numeric keypad '+', '-', and '/' keys as SCK_ADD, SCK_SUBTRACT, and SCK_DIVIDE. Bug #1867.
- On GTK+ 3.21+ fix incorrect font size in auto-completion list. Bug #1859.
- Fix SciTE crash when command.mode ends with comma. Bug #1857.
- SciTE on Windows has a full size toolbar icon for "Close".

### Release 3.6.7

- Released 4 September 2016.
- C++11 range-based for loops used in SciTE so GCC 4.6 is now the minimum supported version.
- SC_CHARSET_DEFAULT now means code page 1252 on Windows unless a code page is set. This prevents unexpected behaviour and crashes on East Asian systems where default locales are commonly DBCS. Projects which want to default to DBCS code pages in East Asian locales should set the code page and character set explicitly.
- SCVS_NOWRAPLINESTART option stops left arrow from wrapping to the previous line. Most commonly wanted when virtual space is used. Bug #1648.
- The C++ lexer can fold on #else and #elif with the fold.cpp.preprocessor.at.else property. Bug #210.
- The errorlist lexer detects warnings from Visual C++ which do not contain line numbers.
- The HTML lexer no longer treats "<?" inside a string in a script as potentially starting an XML document. Bug #767.
- The HTML lexer fixes a problem resuming at a script start where the starting state continued past where it should. Bug #1849.
- When inserting spaces for virtual space and the position is in indentation and tabs are enabled for indentation then use tabs. Bug #1850.
- Fix fold expand when some child text not styled. Caused by fixes for Bug #1799. Bug #1842.
- Fix key binding bug on Cocoa for control+. Bug #1854.
- Fix scroll bar size warnings on GTK+ caused by #1831. Bug #1851.
- Small fixes for GTK+ makefile. Bug #1844. Bug #1845. Bug #1846.
- Fix SciTE indentation after code like "void function () {}".
- Fix SciTE global regex replace of "^" with something which missed the line after empty lines with LF line ends. Bug #1839.
- Fix SciTE on GTK+ 3.20 bug where toggle buttons on find and replace strips did not show active state. Bug #1853.

### Release 3.6.6

- Released 24 May 2016.
- C++ 11 <regex> support built by default. Can be disabled by defining NO_CXX11_REGEX.
- SciTE_USERHOME environment variable allows separate location for writeable properties files. Feature #965.
- GObject introspection supports notify and command events.
- The Progress lexer now allows comments preceded by a tab.
- Scripts reading Scintilla.iface file include comments for enu and lex definitions. Bug #1829.
- Fix crashes on GTK+ if idle work active when destroyed. Bug #1827.
- Fixed bugs when used on GTK+ 3.20. Bug #1825. Bug #1831.
- Fix SciTE search field background with dark theme on GTK+ 2.x. Bug #1826.
- Fixed bug on Win32 that allowed resizing autocompletion from bottom when it was located above the caret.
- On Win32, when using a screen reader and selecting text using Shift+Arrow, fix bug when scrolling made the caret stay at the same screen location so the screen reader did not speak the added or removed selection.

### Release 3.6.5

- Released 26 April 2016.
- JSON lexer added. Feature #1140.
- The C++ lexer fixes a bug with multi-line strings with line continuation where the string style overflowed after an edit. Bug #1824.
- The Python lexer treats '@' as an operator except when it is the first visible character on a line. This is for Python 3.5.
- The Rust lexer allows '?' as an operator. Feature #1146.
- Doubled size of compiled regex buffer. Bug #1822.
- For GTK+, the Super modifier key can be used in key bindings. Feature #1142.
- For GTK+, fix some crashes when using multiple threads.
- Platform layer font cache removed on GTK+ as platform-independent caches are used. This avoids the use of thread locking and initialization of threads so any GTK+ applications that rely on Scintilla initializing threads will have to do that themselves.
- SciTE bug fixed with exported HTML where extra line shown. Bug #1816.
- SciTE on Windows fixes bugs with pop-up menus in the find and replace strips. For the replace strip, menu choices change the state. For the find strip, menu choices are reflected in the appearance of their corresponding buttons.
- SciTE on Windows on high DPI displays fixes the height of edit boxes in user strips.

### Release 3.6.4

- Released 13 March 2016.
- SciTE allows setting the autocompletion type separator character.
- The C++ folder folds code on '(' and ')' to allow multi-line calls to be folded. Feature #1138.
- For the HTML lexer, limit the extent of Mako line comments to finish before the line end characters.
- Folds unfolded when two fold regions are merged by either deleting an intervening line or changing its fold level by adding characters. This was fixed both in Scintilla and in SciTE's equivalent code. Bug #1799.
- The Progress lexer supports hexadecimal numeric literals, single-line comments, abbreviated keywords and extends nested comments to unlimited levels.
- Ruby lexer treats alternate hash key syntax "key:" as a symbol. Bug #1810.
- Rust lexer handles bracketed Unicode string escapes like "\u{123abc}". Bug #1809.
- For GTK+ on Windows fix 64-bit build which was broken in 3.6.3.
- For Qt, release builds have assertions turned off.
- For Qt on Windows, fix compilation failure for Qt 4.x.
- IME target range displayed on Qt for OS X.
- On Windows, make clipboard operations more robust by retrying OpenClipboard if it fails as this may occur when another application has opened the clipboard.
- On Windows back out change that removed use of def file to ensure Scintilla_DirectFunction exported without name mangling. Bug #1813.
- On GTK+ and Qt over Win32 in Korean fix bug caused by last release's word input change.
- For SciTE, more descriptive error messages are displayed when there are problems loading the Lua startup script. Feature #1139.

### Release 3.6.3

- Released 18 January 2016.
- Allow painting without first styling all visible text then styling in the background using idle-time. This helps performance when scrolling down in very large documents. Can also incrementally style after the visible area to the end of the document so that the document is already styled when the user scrolls to it.
- Support GObject introspection on GTK+.
- SciTE supports pasting to each selection with the selection.multipaste setting. Feature #1123.
- SciTE can optionally display a read-only indicator on tabs and in the Buffers menu.
- Bash lexer flags incomplete here doc delimiters as syntax errors. Bug #1789.
  Support added for using '#' in non-comment ways as is possible with zsh. Bug #1794.
  Recognize more characters as here-doc delimiters. Bug #1778.
- Errorlist lexer highlights warning messages from the Microsoft linker.
- Errorlist lexer fixes bug with final line in escape sequence recognition mode.
- Lua lexer includes '&' and '|' bitwise operators for Lua 5.3. Bug #1790.
- Perl lexer updated for Perl 5.20 and 5.22.
  Allow '_' for subroutine prototypes. Bug #1791.
  Double-diamond operator <<>>.
  Hexadecimal floating point literals.
  Repetition in list assignment. Bug #1793.
  Highlight changed subroutine prototype syntax for Perl 5.20. Bug #1797.
  Fix module ::-syntax when special characters such as 'x' are used.
  Added ' and " detection as prefix chars for x repetition operator. Bug #1800.
- Visual Prolog lexer recognizes numbers more accurately and allows non-ASCII verbatim quoting characters. Feature #1130.
- Send SCN_UPDATEUI with SC_UPDATE_SELECTION when the application changes multiple selection.
- Expand folded areas before deleting fold header line. Bug #1796.
- Treat Unicode line ends like common line ends when maintaining fold state.
- Highlight whole run for hover indicator when wrapped. Bug #1784.
- On Cocoa, fix crash when autocompletion list closed during scroll bounce-back. Bug #1788.
- On Windows, fix non-BMP input through WM_CHAR and allow WM_UNICHAR to work with non-BMP characters and on non-Unicode documents. Bug #1779.
- On Windows using DirectWrite, for ligatures and other character clusters, display caret and selections part-way through clusters so that the caret doesn't stick to the end of the cluster making it easier to understand editing actions.
- On Windows, Scintilla no longer uses a .DEF file during linking as it duplicates source code directives.
- On GTK+ and Qt, Korean input by word fixed.
- On GTK+, Qt, and Win32 block IME input when document is read-only or any selected text is protected.
- On GTK+ on OS X, fix warning during destruction. Bug #1777.
- Fix SciTE crashes when using LPEG lexers.

### Release 3.6.2

- Released 6 November 2015.
- Whitespace may be made visible just in indentation.
- Whitespace dots are centred when larger than 1 pixel.
- The Scintilla framework on Cocoa now contains version numbers.
- SciTE's standard properties collect values from all active .properties file to produce the Language menu and the file types pull-down in the File open dialog.
- The single executable version of SciTE, Sc1, uses 'module' statements within its embedded properties. This makes it act more like the full distribution allowing languages to be turned on and off by setting imports.include and imports.exclude. The default imports.exclude property adds eiffel, erlang, ps, and pov so these languages are turned off by default.
- SciTE adds an output.blank.margin.left property to allow setting the output pane margin to a different width than the edit pane.
- CoffeeScript lexer highlights ranges correctly. Bug #1765.
- Markdown lexer treats line starts consistently to always highlight *foo* or similar at line start. Bug #1766.
- Optimize marker redrawing by only drawing affected lines when markers shown in the text.
- On Cocoa, timers and idling now work in modal dialogs. This also stops some crashes.
- On Cocoa, fix crashes when deleting a ScintillaView. These crashes could occur when scrolling at the time the ScintillaView was deleted although there may have been other cases.
- On GTK+ 2.x, fix height of lines in autocompletion lists. Bug #1774.
- Fix bug with SCI_LINEENDDISPLAY where the caret moved to the next document line instead of the end of the display line. Bug #1772.
- Report error (SC_STATUS_FAILURE) when negative length passed to SCI_SETSTYLING. Bug #1768.
- When SC_MARK_UNDERLINE is not assigned to a margin, stop drawing the whole line.
- When reverting an untitled document in SciTE, just clear it with no message about a file. Bug #1764.
- SciTE on GTK+ allows use of Ctrl+A (Select All) inside find and replace strips. Bug #1769.

### Release 3.6.1

- Released 15 September 2015.
- The oldest version of GTK+ supported now is 2.18 and for glib it is 2.22.
- On GTK+, SC_CHARSET_OEM866 added to allow editing Russian files encoded in code page 866. Feature #1019.
- On Windows, reconversion is performed when requested by the IME.
- CoffeeScript lexer adds lexical class for instance properties and fixes some cases of regex highlighting. Bug #1749.
- The errorlist lexer understands some ANSI escape sequences to change foreground colour and intensity. This is sufficient to colour diagnostic output from gcc and clang when -fdiagnostics-color set.
- The errorlist lexer allows the line number to be 0 in GCC errors as some tools report whole file errors as line 0.
- MySql lexer fixes empty comments /**/ so the comment state does not continue.
- VHDL folder supports "protected" keyword.
- Treat CRLF line end as two characters in SCI_COUNTCHARACTERS. Bug #1757.
- On GTK+ 3.x, fix height of lines in autocompletion lists to match the font. Switch from deprecated style calls to CSS styling. Removed setting list colours on GTK+ 3.16+ as no longer appears needed.
- On GTK+, avoid "Invalid rectangle passed" warning messages by never reporting the client rectangle with a negative width or height. Bug #1743.
- On Cocoa, copy Sci_Position.h into the framework so clients can build.
- On Cocoa fix bug with drag and drop that could lead to crashes. Bug #1751.
- Fix SciTE disk exhaustion bug by reporting failures when writing files. Bug #1760.
- Fix find strip in SciTE on Windows XP to be visible.
- SciTE on Windows changes the way it detects that a tool has finished executing to ensure all output data from the process is read.
- SciTE on Windows improves the time taken to read output from tools that produce a large amount of output by a factor of around 10.
- On GTK+ the keyboard command for View | End of Line was changed to Ctrl+Shift+N to avoid clash with Search | Selection Add Next. Bug #1750.

### Release 3.6.0

- Released 3 August 2015.
- External interfaces use the Sci_Position and Sci_PositionU typedefs instead of int and unsigned int to allow for changes to a 64-bit interface on 64-bit platforms in the future. Applications and external lexers should start using the new type names so that they will be compatible when the 64-bit change occurs. There is also Sci_PositionCR (long) for use in the Sci_CharacterRange struct which will also eventually become 64-bit.
- Multiple selection now works over more key commands. The new multiple-selection handling commands include horizontal movement and selection commands, line up and down movement and selection commands, word and line deletion commands, and line end insertion. This change in behaviours is conditional on setting the SCI_SETADDITIONALSELECTIONTYPING property.
- Autocompletion lists send an SCN_AUTOCCOMPLETED notification after the text has been inserted. Feature #1109.
- The case mode style attribute can now be SC_CASE_CAMEL.
- The Python lexer supports substyles for identifiers.
- SciTE adds support for substyles.
- SciTE's Export as RTF and Copy as RTF commands support UTF-8.
- SciTE can display autocompletion on all IME input with ime.autocomplete property.
- SciTE properties files now discard trailing white space on variable names.
- Calling SCI_SETIDENTIFIERS resets styling to ensure any added identifier are highlighted.
- Avoid candidate box randomly popping up away from edit pane with (especially Japanese) IME input.
- On Cocoa fix problems with positioning of autocompletion lists near screen edge or under dock. Cancel autocompletion when window moved. Bug #1740.
- Fix drawing problem when control characters are in a hidden style as they then have a zero width rectangle to draw but modify that rectangle in a way that clears some pixels.
- Report error when attempt to resize buffer to more than 2GB with SC_STATUS_FAILURE.
- Fix bug on GTK+ with scroll bars leaking. Bug #1742.
- LexOthers.cxx file split into one file per lexer: LexBatch, LexDiff, LexErrorList, LexMake, LexNull, and LexProps.
- SciTE exporters handle styles > 127 correctly now.
- SciTE on Windows can scale window element sizes based on the system DPI setting.
- SciTE implements find.in.files.close.on.find on all platforms, not just Windows.

### Release 3.5.7

- Released 20 June 2015.
- Added SCI_MULTIPLESELECTADDNEXT to add the next occurrence of the main selection within the target to the set of selections as main. If the current selection is empty then select word around caret. SCI_MULTIPLESELECTADDEACH adds each occurrence of the main selection within the target to the set of selections.
- SciTE adds "Selection Add Next" and "Selection Add Each" commands to the Search menu.
- Added SCI_ISRANGEWORD to determine if the parameters are at the start and end of a word.
- Added SCI_TARGETWHOLEDOCUMENT to set the target to the whole document.
- Verilog lexer recognizes protected regions and the folder folds protected regions.
- A performance problem with markers when deleting many lines was fixed. Bug #1733.
- On Cocoa fix crash when ScintillaView destroyed if no autocompletion ever displayed. Bug #1728.
- On Cocoa fix crash in drag and drop.
- On GTK+ 3.4+, when there are both horizontal and vertical scrollbars, draw the lower-right corner so that it does not appear black when text selected. Bug #1611.
- Fixed most calls deprecated in GTK+ 3.16. Does not fix style override calls as they are more complex.
- SciTE on GTK+ 3.x uses a different technique for highlighting the search strip when there is no match which is more compatible with future and past versions and different themes.

### Release 3.5.6

- Released 26 May 2015.
- On Qt, use fractional positioning calls and avoid rounding to ensure consistency.
- SCI_TARGETASUTF8 and SCI_ENCODEDFROMUTF8 implemented on Win32 as well as GTK+ and Cocoa.
- C++ lexer fixes empty backquoted string. Bug #1711.
- C++ lexer fixes #undef directive. Bug #1719.
- Fortran folder fixes handling of "selecttype" and "selectcase". Bug #1724.
- Verilog folder folds interface definitions.
- VHDL folder folds units declarations and fixes a case insensitivity bug with not treating "IS" the same as "is".
- Fix bug when drawing text margins in buffered mode which would use default encoding instead of chosen encoding. Bug #1703.
- Fix bug with Korean Hanja conversions in DBCS encoding on Windows.
- Fix for reading a UTF-16 file in SciTE where a non-BMP character is split over a read buffer boundary. Bug #1710.
- Fix bug on GTK+ 2.x for Windows where there was an ABI difference between compiler version. Bug #1726.
- Fix undo bug on Cocoa that could lose data..
- Fix link error on Windows when SCI_NAMESPACE used.
- Fix exporting from SciTE when using Scintillua for lexing.
- SciTE does not report twice that a search string can not be found when "Replace" pressed. Bug #1716.
- SciTE on GTK+ 3.x disables arrow in search combo when no entries. Bug #1717.

### Release 3.5.5

- Released 17 April 2015.
- Scintilla on Windows is now always a wide character window so SCI_SETKEYSUNICODE has no effect and SCI_GETKEYSUNICODE always returns true. These APIs are deprecated and should not be called.
- The wxWidgets-specific ascent member of Font has been removed which breaks compatibility with current wxStyledTextCtrl. Bug #1682.
- IME on Qt supports multiple carets and behaves more like other platforms.
- Always use inline IME on GTK+ for Korean.
- SQL lexer fixes handling of '+' and '-' in numbers so the '-' in '1-1' is seen as an operator and for '1--comment' the comment is recognized.
- TCL lexer reverts change to string handling. Bug #1642.
- Verilog lexer fixes bugs with macro styling. Verilog folder fixes bugs with `end completing an `if* instead of `endif and fold.at.else, and implements folding at preprocessor `else.
- VHDL lexer supports extended identifiers.
- Fix bug on Cocoa where the calltip would display incorrectly when switching calltips and the new calltip required a taller window.
- Fix leak on Cocoa with autocompletion lists. Bug #1706.
- Fix potential crash on Cocoa with drag and drop. Bug #1709.
- Fix bug on Windows when compiling with MinGW-w64 which caused text to not be drawn when in wrap mode. Bug #1705.
- Fix SciTE bug with missing file open filters and add hex to excluded set of properties files so that its settings don't appear. Bug #1707.
- Fix SciTE bug where files without extensions like "makefile" were not highlighted correctly.

### Release 3.5.4

- Released 8 March 2015.
- Indicators may have a different colour and style when the mouse is over them or the caret is moved into them.
- An indicator may display in a large variety of colours with the SC_INDICFLAG_VALUEFORE flag taking the colour from the indicator's value, which may differ for every character, instead of its foreground colour attribute.
- On Cocoa, additional IME methods implemented so that more commands are enabled. For Japanese: Reverse Conversion, Convert to Related Character, and Search Similar Kanji can now be performed. The global definition hotkey Command+Control+D and the equivalent three finger tap gesture can be used.
- Minimum version of Qt supported is now 4.8 due to the use of QElapsedTimer::nsecsElapsed.
- On Windows, for Korean, the VK_HANJA key is implemented to choose Hanja for Hangul and to convert from Hanja to Hangul.
- C++ lexer adds lexer.cpp.verbatim.strings.allow.escapes option that allows verbatim (@") strings to contain escape sequences. This should remain off (0) for C# and be turned on (1) for Objective C.
- Rust lexer accepts new 'is'/'us' integer suffixes instead of 'i'/'u'. Bug #1098.
- Ruby folder can fold multiline comments. Bug #1697.
- SQL lexer fixes a bug with the q-quote operator.
- TCL lexer fixes a bug with some strings. Bug #1642.
- Verilog lexer handles escaped identifiers that begin with \ and end with space like \reset* . Verilog folder fixes one bug with inconsistent folding when fold.comment is on and another with typedef class statements creating a fold point, expecting an endclass statement.
- VHDL folder fixes hang in folding when document starts with "entity".
- Add new indicators INDIC_COMPOSITIONTHIN, INDIC_FULLBOX, and INDIC_TEXTFORE. INDIC_COMPOSITIONTHIN is a thin underline that mimics the appearance of non-target segments in OS X IME. INDIC_FULLBOX is similar to INDIC_STRAIGHTBOX but covers the entire character area which means that indicators with this style on contiguous lines may touch. INDIC_TEXTFORE changes the text foreground colour.
- Fix adaptive scrolling speed for GTK+ on OS X with GTK Quartz backend (as opposed to X11 backend). Bug #1696.
- Fix position of autocompletion and calltips on Cocoa when there were two screens stacked vertically.
- Fix crash in SciTE when saving large files in background when closing application. Bug #1691.
- Fix decoding of MSVC warnings in SciTE so that files in the C:\Program Files (x86)\ directory can be opened. This is a common location of system include files.
- Fix compilation failure of C++11 <regex> on Windows using gcc.

### Release 3.5.3

- Released 20 January 2015.
- Support removed for Windows 95, 98, and ME.
- Lexers added for Motorola S-Record files, Intel hex files, and Tektronix extended hex files with folding for Intel hex files. Feature #1091. Feature #1093. Feature #1095. Feature #1096.
- C++ folder allows folding on square brackets '['. Feature #1087.
- Shell lexer fixes three issues with here-documents. Bug #1672.
- Verilog lexer highlights doc comment keywords; has separate styles for input, output, and inout ports (lexer.verilog.portstyling); fixes a bug in highlighting numbers; can treat upper-case identifiers as keywords (lexer.verilog.allupperkeywords); and can use different styles for code that is inactive due to preprocessor commands (lexer.verilog.track.preprocessor, lexer.verilog.update.preprocessor).
- When the calltip window is taller than the Scintilla window, leave it in a position that avoids overlapping the Scintilla text.
- When a text margin is displayed, for annotation lines, use the background colour of the base line.
- On Windows GDI, assume font names are encoded in UTF-8. This matches the Direct2D code path.
- Fix paste for GTK+ on OS X. Bug #1677.
- Reverted a fix on Qt where Qt 5.3 has returned to the behaviour of 4.x. Bug #1575.
- When the mouse is on the line between margin and text changed to treat as within text. This makes the PLAT_CURSES character cell platform work better.
- Fix a crash in SciTE when the command line is just "-close:". Bug #1675.
- Fix unexpected dialog in SciTE on Windows when the command line has a quoted filename then ends with a space. Bug #1673.
- On Windows and GTK+, use indicators for inline IME.
- SciTE shuts down quicker when there is no user-written OnClose function and no directors are attached.

### Release 3.5.2

- Released 2 December 2014.
- For OS X Cocoa switch C++ runtime to libc++ to enable use of features that will never be added to libstdc++ including those part of C++11. Scintilla will now run only on OS X 10.7 or later and only in 64-bit mode.
- Include support for using C++11 <regex> for regular expression searches. Enabling this requires rebuilding Scintilla with a non-default option. This is a provisional feature and may change API before being made permanent.
- Allocate indicators used for Input Method Editors after 31 which was the previous limit of indicators to ensure no clash between the use of indicators for IME and for the application.
- ANNOTATION_INDENTED added which is similar to ANNOTATION_BOXED in terms of positioning but does not show a border. Feature #1086.
- Allow platform overrides for drawing tab arrows, wrap markers, and line markers. Size of double click detection area is a variable. These enable better visuals and behaviour for PLAT_CURSES as it is character cell based.
- CoffeeScript lexer fixes "/*" to not be a comment. Bug #1420.
- VHDL folder fixes "block" keyword. Bug #1664.
- Prevent caret blinking when holding down Delete key. Bug #1657.
- On Windows, allow right click selection in popup menu. Feature #1080.
- On Windows, only call ShowCaret in GDI mode as it interferes with caret drawing when using Direct2D. Bug #1643.
- On Windows, another DirectWrite mode SC_TECHNOLOGY_DIRECTWRITEDC added which may avoid drawing failures in some circumstances by drawing into a GDI DC. This feature is provisional and may be changed or removed if a better solution is found.
- On Windows, avoid processing mouse move events where the mouse has not moved as these can cause unexpected dwell start notifications. Bug #1670.
- For GTK+ on Windows, avoid extra space when pasting from external application.
- On GTK+ 2.x allow Scintilla to be used inside tool tips by changing when preedit window created. Bug #1662.
- Support MinGW compilation under Linux. Feature #1077.

### Release 3.5.1

- Released 30 September 2014.
- BibTeX lexer added. Feature #1071.
- SQL lexer supports the q-quote operator as SCE_SQL_QOPERATOR(24).
- VHDL lexer supports block comments. Bug #1527.
- VHDL folder fixes case where "component" used before name. Bug #613.
- Restore fractional pixel tab positioning which was truncated to whole pixels in 3.5.0. Bug #1652.
- Allow choice between windowed and inline IME on some platforms.
- On GTK+ cache autocomplete window to avoid platform bug where windows were sometimes lost. Bug #1649.
- On GTK+ size autocomplete window more accurately.
- On Windows only unregister windows classes registered. Bug #1639.
- On Windows another DirectWrite mode SC_TECHNOLOGY_DIRECTWRITERETAIN added which may avoid drawing failures on some cards and drivers. This feature is provisional and may be changed or removed if a better solution is found.
- On Windows support the Visual Studio 2010+ clipboard format that indicates a line copy. Bug #1636.
- SciTE session files remember the scroll position.

### Release 3.5.0

- Released 13 August 2014.
- Text may share space vertically so that extreme ascenders and descenders are not cut off by calling SCI_SETPHASESDRAW(SC_PHASES_MULTIPLE).
- Separate timers are used for each type of periodic activity and they are turned on and off as required. This saves power as there are fewer wake ups. On recent releases of OS X Cocoa and Windows, coalescing timers are used to further save power. Bug #1086. Bug #1532.
- Explicit tab stops may be set for each line.
- On Windows and GTK+, when using Korean input methods, IME composition is moved from a separate window into the Scintilla window.
- SciTE adds a "Clean" command to the "Tools" menu which is meant to be bound to a command like "make clean".
- Lexer added for Windows registry files.
- HTML lexer fixes a crash with SGML after a Mako comment. Bug #1622.
- KiXtart lexer adds a block comment state. Feature #1053.
- Matlab lexer fixes transpose operations like "X{1}'". Bug #1629.
- Ruby lexer fixes bugs with the syntax of symbols including allowing a symbol to end with '?'. Bug #1627.
- Rust lexer supports byte string literals, naked CR can be escaped in strings, and files starting with "#![" are not treated as starting with a hashbang comment. Feature #1063.
- Bug fixed where style data was stale when deleting a rectangular selection.
- Bug fixed where annotations disappeared when SCI_CLEARDOCUMENTSTYLE called.
- Bug fixed where selection not redrawn after SCI_DELWORDRIGHT. Bug #1633.
- Change the function prototypes to be complete for functions exported as "C". Bug #1618.
- Fix a memory leak on GTK+ with autocompletion lists. Bug #1638.
- On GTK+, use the full character width for the overstrike caret for multibyte characters.
- On Qt, set list icon size to largest icon. Add padding on OS X. Bug #1634.
- On Qt, fix building on FreeBSD 9.2. Bug #1635.
- On Qt, add a get_character method on the document. Feature #1064.
- On Qt, add SCI_* for methods to ScintillaConstants.py. Feature #1065.
- SciTE on GTK+ crash fixed with Insert Abbreviation command.
- For SciTE with read-only files and are.you.sure=0 reenable choice to save to another location when using Save or Close commands.
- Fix SciTE bug where toggle bookmark did not work after multiple lines with bookmarks merged. Bug #1617.

### Release 3.4.4

- Released 3 July 2014.
- Style byte indicators removed. They were deprecated in 2007. Standard indicators should be used instead. Some elements used by lexers no longer take number of bits or mask arguments so lexers may need to be updated for LexAccessor::StartAt, LexAccessor::SetFlags (removed), LexerModule::LexerModule.
- When multiple selections are active, autocompletion text may be inserted at each selection with new SCI_AUTOCSETMULTI method.
- C++ lexer fixes crash for "#define x(". Bug #1614.
- C++ lexer fixes raw string recognition so that R"xxx(blah)xxx" is styled as SCE_C_STRINGRAW.
- The Postscript lexer no longer marks token edges with indicators as this used style byte indicators.
- The Scriptol lexer no longer displays indicators for poor indentation as this used style byte indicators.
- TCL lexer fixes names of keyword sets. Bug #1615.
- Shell lexer fixes fold matching problem caused by "<<<". Bug #1605.
- Fix bug where indicators were not removed when fold highlighting on. Bug #1604.
- Fix bug on Cocoa where emoji were treated as being zero width.
- Fix crash on GTK+ with Ubuntu 12.04 and overlay scroll bars.
- Avoid creating a Cairo context when measuring text on GTK+ as future versions of GTK+ may prohibit calling gdk_cairo_create except inside drawing handlers. This prohibition may be required on Wayland.
- On Cocoa, the registerNotifyCallback method is now marked as deprecated so client code that uses it will display an error message. Client code should use the delegate mechanism or subclassing instead. The method will be removed in the next version.
- On Cocoa, package Scintilla more in compliance with platform conventions. Only publish public headers in the framework headers directory. Only define the Scintilla namespace in Scintilla.h when compiling as C++. Use the Cocoa NS_ENUM and NS_OPTIONS macros for exposed enumerations. Hide internal methods from public headers. These changes are aimed towards publishing Scintilla as a module which will allow it to be used from the Swift programming language, although more changes will be needed here.
- Fix crash in SciTE when stream comment performed at line end. Bug #1610.
- For SciTE on Windows, display error message when common dialogs fail. Bug #156.
- For SciTE on GTK+ fix bug with initialization of toggle buttons in find and replace strips. Bug #1612.

### Release 3.4.3

- Released 27 May 2014.
- Fix hangs and crashes in DLL at shutdown on Windows when using Direct2D.

### Release 3.4.2

- Released 22 May 2014.
- Insertions can be filtered or modified by calling SCI_CHANGEINSERTION inside a handler for SC_MOD_INSERTCHECK.
- DMIS lexer added. DMIS is a language for coordinate measuring machines. Feature #1049.
- Line state may be displayed in the line number margin to aid in debugging lexing and folding with SC_FOLDFLAG_LINESTATE (128).
- C++ lexer understands more preprocessor statements. #if defined SYMBOL is understood. Some macros with arguments can be understood and these may be predefined in keyword set 4 (keywords5 for SciTE) with syntax similar to CHECKVERSION(x)=(x<3). Feature #1051.
- C++ lexer can highlight task marker keywords in comments as SCE_C_TASKMARKER.
- C++ lexer can optionally highlight escape sequences in strings as SCE_C_ESCAPESEQUENCE.
- C++ lexer supports Go back quoted raw string literals with lexer.cpp.backquoted.strings option. Feature #1047.
- SciTE performs word and search match highlighting as an idle task to improve interactivity and allow use of these features on large files.
- Bug fixed on Cocoa where previous caret lines were visible. Bug #1593.
- Bug fixed where caret remained invisible when period set to 0. Bug #1592.
- Fixed display flashing when scrolling with GTK+ 3.10. Bug #1567.
- Fixed calls and constants deprecated in GTK+ 3.10.
- Fixed bug on Windows where WM_GETTEXT did not provide data in UTF-16 for Unicode window. Bug #685.
- For SciTE, protect access to variables used by threads with a mutex to prevent data races.
- For SciTE on GTK+ fix thread object leaks. Display the version of GTK+ compiled against in the about box.
- For SciTE on GTK+ 3.10, fix the size of the tab bar's content and use freedesktop.org standard icon names where possible.
- For SciTE on Windows, fix bug where invoking help resubmitted the running program. Bug #272.
- SciTE's highlight current word feature no longer matches the selection when it contains space.
- For building SciTE in Visual C++, the win\SciTE.vcxproj project file should be used. The boundscheck directory and its project and solution files have been removed.

### Release 3.4.1

- Released 1 April 2014.
- Display Unicode line ends as [LS], [PS], and [NEL] blobs.
- Bug fixed where cursor down failed on wrapped lines. Bug #1585.
- Caret positioning changed a little to appear inside characters less often by rounding the caret position to the pixel grid instead of truncating. Bug #1588.
- Bug fixed where automatic indentation wrong when caret in virtual space. Bug #1586.
- Bug fixed on Windows where WM_LBUTTONDBLCLK was no longer sent to window. Bug #1587.
- Bug fixed with SciTE on Windows XP where black stripes appeared inside the find and replace strips.
- Crash fixed in SciTE with recursive properties files. Bug #1507.
- Bug fixed with SciTE where Ctrl+E before an unmatched end brace jumps to file start. Bug #315.
- Fixed scrolling on Cocoa to avoid display glitches and be smoother.
- Fixed crash on Cocoa when character composition used when autocompletion list active.

### Release 3.4.0

- Released 22 March 2014.
- The Unicode line ends and substyles features added as provisional in 3.2.5 are now finalized. There are now no provisional features.
- Added wrap mode SC_WRAP_WHITESPACE which only wraps on whitespace, not on style changes.
- SciTE find and replace strips can perform incremental searching and temporary highlighting of all matches with the find.strip.incremental, replace.strip.incremental, and find.indicator.incremental settings.
- SciTE default settings changed to use strips for find and replace and to draw with Direct2D and DirectWrite on Windows.
- SciTE on Windows scales image buttons on the find and replace strips to match the current system scale factor.
- Additional assembler lexer variant As(SCLEX_AS) for Unix assembly code which uses '#' for comments and ';' to separate statements.
- Fix Coffeescript lexer for keyword style extending past end of word. Also fixes styling 0...myArray.length all as a number. Bug #1583.
- Fix crashes and other bugs in Fortran folder by removing folding of do-label constructs.
- Deleting a whole line deletes the annotations on that line instead of the annotations on the next line. Bug #1577.
- Changed position of tall calltips to prefer lower half of screen to cut off end instead of start.
- Fix Qt bug where double click treated as triple click. Bug #1575.
- On Qt, selecting an item in an autocompletion list that is not currently visible positions it at the top.
- Fix bug on Windows when resizing autocompletion list with only short strings caused the list to move.
- On Cocoa reduce scrollable height by one line to fix bugs with moving caret up or down.
- On Cocoa fix calltips which did not appear when they were created in an off-screen position.

### Release 3.3.9

- Released 31 January 2014.
- Fix 3.3.8 bug where external lexers became inaccessible. Bug #1574.

### Release 3.3.8

- Released 28 January 2014.
- DropSelectionN API added to drop a selection from a multiple selection.
- CallTipSetPosStart API added to change the position at which backspacing removes the calltip.
- SC_MARK_BOOKMARK marker symbol added which looks like bookmark ribbons used in book reading applications.
- Basic lexer highlights hex, octal, and binary numbers in FreeBASIC which use the prefixes &h, &o and &b respectively. Feature #1041.
- C++ lexer fixes bug where keyword followed immediately by quoted string continued keyword style. Bug #1564.
- Matlab lexer treats '!' differently for Matlab and Octave languages. Bug #1571.
- Rust lexer improved with nested comments, more compliant doc-comment detection, octal literals, NUL characters treated as valid, and highlighting of raw string literals and float literals fixed. Feature #1038. Bug #1570.
- On Qt expose the EOLMode on the document object.
- Fix hotspot clicking where area was off by half a character width. Bug #1562.
- Tweaked scroll positioning by either 2 pixels or 1 pixel when caret is at left or right of view to ensure caret is inside visible area.
- Send SCN_UPDATEUI with SC_UPDATE_SELECTION for Shift+Tab inside text.
- On Windows update the system caret position when scrolling to help screen readers see the scroll quickly.
- On Cocoa, GTK+, and Windows/Direct2D draw circles more accurately so that circular folding margin markers appear circular, of consistent size, and centred. Make SC_MARK_ARROWS drawing more even. Fix corners of SC_MARK_ROUNDRECT with Direct2D to be similar to other platforms.
- SciTE uses a bookmark ribbon symbol for bookmarks as it scales better to higher resolutions than the previous blue gem bitmap.
- SciTE will change the width of margins while running when the margin.width and fold.margin.width properties are changed.
- SciTE on Windows can display a larger tool bar with the toolbar.large property.
- SciTE displays a warning message when asked to open a directory. Bug #1568.

### Release 3.3.7

- Released 12 December 2013.
- Lexer added for DMAP language. Feature #1026.
- Basic lexer supports multiline comments in FreeBASIC. Feature #1023.
- Bash lexer allows '#' inside words.. Bug #1553.
- C++ lexer recognizes C++11 user-defined literals and applies lexical class SCE_C_USERLITERAL.
- C++ lexer allows single quote characters as digit separators in numeric literals like 123'456 as this is included in C++14.
- C++ lexer fixes bug with #include statements without " or > terminating filename. Bug #1538.
- C++ lexer fixes split of Doxygen keywords @code{.fileExtension} and @param[in,out]. Bug #1551.
- C++ lexer styles Doxygen keywords at end of document.
- Cmake lexer fixes bug with empty comments. Bug #1550.
- Fortran folder improved. Treats "else" as fold header. Feature #962.
- Fix bug with adjacent instances of the same indicator with different values where only the first was drawn. Bug #1560.
- For DirectWrite, use the GDI ClearType gamma value for SC_EFF_QUALITY_LCD_OPTIMIZED as this results in text that is similar in colour intensity to GDI. For the duller default DirectWrite ClearType text appearance, use SC_EFF_QUALITY_DEFAULT. Feature #887.
- Fix another problem with drawing on Windows with Direct2D when returning from lock screen. The whole window is redrawn as just redrawing the initially required area left other areas black.
- When scroll width is tracked, take width of annotation lines into account.
- For Cocoa on OS X 10.9, responsive scrolling is supported.
- On Cocoa, apply font quality setting to line numbers. Bug #1544.
- On Cocoa, clicking in margin now sets focus. Bug #1542.
- On Cocoa, correct cursor displayed in margin after showing dialog.
- On Cocoa, multipaste mode now works. Bug #1541.
- On GTK+, chain up to superclass finalize so that all finalization is performed. Bug #1549.
- On GTK+, fix horizontal scroll bar range to not be double the needed width. Bug #1546.
- On OS X GTK+, report control key as SCI_META for mouse down events.
- On Qt, bug fixed with drawing of scrollbars, where previous contents were not drawn over with some themes.
- On Qt, bug fixed with finding monitor rectangle which could lead to autocomplete showing at wrong location.
- SciTE fix for multiple message boxes when failing to save a file with save.on.deactivate. Bug #1540.
- SciTE on GTK+ fixes SIGCHLD handling so that Lua scripts can determine the exit status of processes they start. Bug #1557.
- SciTE on Windows XP fixes bad display of find and replace values when using strips.

### Release 3.3.6

- Released 15 October 2013.
- Added functions to help convert between substyles and base styles and between secondary and primary styles. SCI_GETSTYLEFROMSUBSTYLE finds the base style of substyles. Can be used to treat all substyles of a style equivalent to that style. SCI_GETPRIMARYSTYLEFROMSTYLE finds the primary style of secondary styles. StyleFromSubStyle and PrimaryStyleFromStyle methods were added to ILexerWithSubStyles so each lexer can implement these.
- Lexer added for Rust language. Feature #1024.
- Avoid false matches in errorlist lexer which is used for the SciTE output pane by stricter checking of ctags lines.
- Perl lexer fixes bugs with multi-byte characters, including in HEREDOCs and PODs. Bug #1528.
- SQL folder folds 'create view' statements. Feature #1020.
- Visual Prolog lexer updated with better support for string literals and Unicode. Feature #1025.
- For SCI_SETIDENTIFIERS, \t, \r, and \n are allowed as well as space between identifiers. Bug #1521.
- Gaining and losing focus is now reported as a notification with the code set to SCN_FOCUSIN or SCN_FOCUSOUT. This allows clients to uniformly use notifications instead of commands. Since there is no longer a need for commands they will be deprecated in a future version. Clients should switch any code that currently uses SCEN_SETFOCUS or SCEN_KILLFOCUS.
- On Cocoa, clients should use the delegate mechanism or subclass ScintillaView in preference to registerNotifyCallback: which will be deprecated in the future.
- On Cocoa, the ScintillaView.h header hides internal implementation details from Platform.h and ScintillaCocoa.h. InnerView was renamed to SCIContentView and MarginView was renamed to SCIMarginView. dealloc removed from @interface.
- On Cocoa, clients may customize SCIContentView by subclassing both SCIContentView and ScintillaView and implementing the contentViewClass class method on the ScintillaView subclass to return the class of the SCIContentView subclass.
- On Cocoa, fixed appearance of alpha rectangles to use specified alpha and colour for outline as well as corner size. This makes INDIC_STRAIGHTBOX and INDIC_ROUNDBOX look correct.
- On Cocoa, memory leak fixed for MarginView.
- On Cocoa, make drag and drop work when destination view is empty. Bug #1534.
- On Cocoa, drag image fixed when view scrolled.
- On Cocoa, SCI_POSITIONFROMPOINTCLOSE fixed when view scrolled. Feature #1021.
- On Cocoa, don't send selection change notification when scrolling. Bug #1522.
- On Qt, turn off idle events on destruction to prevent repeatedly calling idle.
- Qt bindings in ScintillaEdit changed to use signed first parameter.
- Compilation errors fixed on Windows and GTK+ with SCI_NAMESPACE.
- On Windows, building with gcc will check if Direct2D headers are available and enable Direct2D if they are.
- Avoid attempts to redraw empty areas when lexing beyond the currently visible lines.
- Control more attributes of indicators in SciTE with find.mark.indicator and highlight.current.word.indicator properties.
- Fix SciTE bug with buffers becoming read-only. Bug #1525.
- Fix linking SciTE on non-Linux Unix systems with GNU toolchain by linking to libdl. Bug #1523.
- On Windows, SciTE's Incremental Search displays match failures by changing the background colour instead of not adding the character that caused failure.
- Fix SciTE on GTK+ 3.x incremental search to change foreground colour when no match as changing background colour is difficult.

### Release 3.3.5

- Released 31 August 2013.
- Characters may be represented by strings. In Unicode mode C1 control characters are represented by their mnemonics.
- Added SCI_POSITIONRELATIVE to optimize navigation by character.
- Option to allow mouse selection to switch to rectangular by pressing Alt after start of gesture. Feature #1007.
- Lexer added for KVIrc script. Feature #1008.
- Bash lexer fixed quoted HereDoc delimiters. Bug #1500.
- MS SQL lexer fixed ';' to appear as an operator. Bug #1509.
- Structured Text lexer fixed styling of enumeration members. Bug #1508.
- Fixed bug with horizontal caret position when margin changed. Bug #1512.
- Fixed bug on Cocoa where coordinates were relative to text subview instead of whole view.
- Ensure selection redrawn correctly in two cases. When switching from stream to rectangular selection with Alt+Shift+Up. When reducing the range of an additional selection by moving mouse up. Feature #1007.
- Copy and paste of rectangular selections compatible with Borland Delphi IDE on Windows. Feature #1002. Bug #1513.
- Initialize extended styles to the default style.
- On Windows, fix painting on an explicit HDC when first paint attempt abandoned.
- Qt bindings in ScintillaEdit made to work on 64-bit Unix systems.
- Easier access to printing on Qt with formatRange method.
- Fixed SciTE failure to save initial buffer in single buffer mode. Bug #1339.
- Fixed compilation problem with Visual C++ in non-English locales. Bug #1506.
- Disable Direct2D when compiling with MinGW gcc on Windows because of changes in the recent MinGW release.
- SciTE crash fixed for negative line.margin.width. Bug #1504.
- SciTE fix for infinite dialog boxes when failing to automatically save a file. Bug #1503.
- SciTE settings buffered.draw, two.phase.draw, and technology are applied to the output pane as well as the edit pane.

### Release 3.3.4

- Released 19 July 2013.
- Handling of UTF-8 and DBCS text in lexers improved with methods ForwardBytes and GetRelativeCharacter added to StyleContext. Bug #1483.
- For Unicode text, case-insensitive searching and making text upper or lower case is now compliant with Unicode standards on all platforms and is much faster for non-ASCII characters.
- A CategoriseCharacter function was added to return the Unicode general category of a character which can be useful in lexers.
- On Cocoa, the LCD Optimized font quality level turns font smoothing on.
- SciTE 'immediate' subsystem added to allow scripts that work while tools are executed.
- Font quality exposed in SciTE as font.quality setting.
- On Cocoa, message:... methods simplify direct access to Scintilla and avoid call layers..
- A68K lexer updated.
- CoffeeScript lexer fixes a bug with comment blocks. Bug #1495
- ECL lexer regular expression code fixed. Bug #1491.
- errorlist lexer only recognizes Perl diagnostics when there is a filename between "at" and "line". Had been triggering for MSVC errors containing "at line".
- Haskell lexer fixed to avoid unnecessary full redraws. Don't highlight CPP inside comments when styling.within.preprocessor is on. Bug #1459.
- Lua lexer fixes bug in labels with UTF-8 text. Bug #1483.
- Perl lexer fixes bug in string interpolation with UTF-8 text. Bug #1483.
- Fixed bugs with case conversion when the result was longer or shorter than the original text. Could access past end of string potentially crashing. Selection now updated to result length.
- Fixed bug where data being inserted and removed was not being reported in notification messages. Bug was introduced in 3.3.2.
- Word wrap bug fixed where the last line could be shown twice.
- Word wrap bug fixed for lines wrapping too short on Windows and GTK+.
- Word wrap performance improved.
- Minor memory leak fixed. Bug #1487.
- On Cocoa, fixed insertText: method which was broken when implementing a newer protocol.
- On Cocoa, fixed a crash when performing string folding for bytes that do not represent a character in the current encoding.
- On Qt, fixed layout problem when QApplication construction delayed.
- On Qt, find_text reports failure with -1 as first element of return value.
- Fixed SciTE on GTK+ bug where a tool command could be performed using the keyboard while one was already running leading to confusion and crashes. Bug #1486.
- Fixed SciTE bug in Copy as RTF which was limited to first 32 styles. Bug #1011.
- Fixed SciTE on Windows user strip height when the system text scaling factor is 125% or 150%.
- Compile time checks for Digital Mars C++ removed.
- Visual C++ 2013 supported. Bug #1492.
- Python scripts used for building and maintenance improved and moved into scripts directory.
- Testing scripts now work on Linux using Qt and PySide.
- Tk platform defined. Implementation for Tk will be available separately from main Scintilla distribution.

### Release 3.3.3

- Released 2 June 2013.
- Lexer and folder added for Structured Text language. Feature #959.
- Out of bounds access fixed for GTK+. Bug #1480.
- Crash fixed for GTK+ on Windows paste.
- Bug fixed with incorrect event copying on GTK+ 3.x. Bug #1481.
- Bug fixed with right to left locales, like Hebrew, on GTK+. Bug #1477.
- Bug fixed with undo grouping of tab and backtab commands. Bug #1478.

### Release 3.3.2

- Released 22 May 2013.
- Basic implementations of common folding methods added to Scintilla to make it easier for containers to implement folding.
- Add indicator INDIC_COMPOSITIONTHICK, a thick low underline, to mimic an appearance used for Asian language input composition.
- On Cocoa, implement font quality setting. Feature #988.
- On Cocoa, implement automatic enabling of commands and added clear command. Feature #987.
- C++ lexer adds style for preprocessor doc comment. Feature #990.
- Haskell lexer and folder improved. Separate mode for literate Haskell "literatehaskell" SCLEX_LITERATEHASKELL. Bug #1459 .
- LaTeX lexer bug fixed for Unicode character following '\'. Bug #1468 .
- PowerShell lexer recognizes here strings and doccomment keywords. #region folding added. Feature #985.
- Fix multi-typing when two carets are located in virtual space on one line so that spaces are preserved.
- Fixes to input composition on Cocoa and implementation of accented character input through press and hold. Set selection correctly so that changes to pieces of composition text are easier to perform. Restore undo collection after a sequence of composition actions. Composition popups appear near input.
- Fix lexer problem where no line end was seen at end of document.
- Fix crash on Cocoa when view deallocated. Bug #1466.
- Fix Qt window positioning to not assume the top right of a monitor is at 0, 0.
- Fix Qt to not track mouse when widget is hidden.
- Qt now supports Qt 5.0. Bug #1448.
- Fix drawing on Windows with Direct2D when returning from lock screen. The render target had to be recreated and an area would be black since the drawing was not retried.
- Fix display of DBCS documents on Windows Direct2D/DirectWrite with default character set.
- For SciTE on Windows, fixed most-recently-used menu when files opened through check.if.already.opened.
- In SciTE, do not call OnSave twice when files saved asynchronously.
- Scintilla no longer builds with Visual C++ 6.0.

### Release 3.3.1

- Released 11 April 2013.
- Autocompletion lists can now appear in priority order or be sorted by Scintilla. Feature #981.
- Most lexers now lex an extra NUL byte at the end of the document which makes it more likely they will classify keywords at document end correctly. Bug #574, Bug #588.
- Haskell lexer improved in several ways. Bug #1459.
- Matlab/Octave lexer recognizes block comments and ... comments. Bug #1414.
- Ruby lexer crash fixed with keyword at start of document.
- The PLAT_NCURSES platform now called PLAT_CURSES as may work on other implementations.
- Bug on Cocoa fixed where input composition with multiple selection or virtual space selection could make undo stop working.
- Direct2D/DirectWrite mode on Windows now displays documents in non-Latin1 8-bit encodings correctly.
- Character positioning corrected in Direct2D/DirectWrite mode on Windows to avoid text moving and cutting off lower parts of characters.
- Position of calltip and autocompletion lists fixed on Cocoa.
- While regular expression search in DBCS text is still not working, matching partial characters is now avoided by moving end of match to end of character.

### Release 3.3.0

- Released 30 March 2013.
- Overlay scrollers and kinetic scrolling implemented on Cocoa.
- To improve display smoothness, styling and UI Update notifications will, when possible, be performed in a high-priority idle task on Cocoa instead of during painting. Performing these jobs inside painting can cause paints to be abandoned and a new paint scheduled. On GTK+, the high-priority idle task is used in more cases.
- SCI_SCROLLRANGE added to scroll the view to display a range of text. If the whole range can not be displayed, priority is given to one end.
- C++ lexer no longer recognizes raw (R"") strings when the first character after " is invalid. Bug #1454.
- HTML lexer recognizes JavaScript RegEx literals in more contexts. Bug #1412.
- Fixed automatic display of folded text when return pressed at end of fold header and first folded line was blank. Bug #1455.
- SCI_VISIBLEFROMDOCLINE fixed to never return a line beyond the document end.
- SCI_LINESCROLL fixed for a negative column offset. Bug #1450.
- On GTK+, fix tab markers so visible if indent markers are visible. Bug #1453.

### Release 3.2.5

- Released 26 February 2013.
- To allow cooperation between different uses of extended (beyond 255) styles they should be allocated using SCI_ALLOCATEEXTENDEDSTYLES.
- For Unicode documents, lexers that use StyleContext will retrieve whole characters instead of bytes. LexAccessor provides a LineEnd method which can be a more efficient way to handle line ends and can enable Unicode line ends.
- The C++ lexer understands the #undef directive when determining preprocessor definitions. Feature #978.
- The errorlist lexer recognizes gcc include path diagnostics that appear before an error.
- Folding implemented for GetText (PO) translation language. Bug #1437.
- HTML lexer does not interrupt comment style for processing instructions. Bug #1447.
- Fix SciTE forgetting caret x-position when switching documents. Bug #1442.
- Fixed bug where vertical scrollbar thumb appeared at beginning of document when scrollbar shown. Bug #1446.
- Fixed brace-highlighting bug on OS X 10.8 where matching brace is on a different line.
- Provisional features are new features that may change or be removed if they cause problems but should become permanent if they work well. For this release Unicode line ends and substyles are provisional features.

### Release 3.2.4

- Released 17 January 2013.
- Caret line highlight can optionally remain visible when window does not have focus. Feature #964.
- Delegate mechanism for notifications added on Cocoa.
- NUL characters in selection are copied to clipboard as spaces to avoid truncating at the NUL. Bug #1289.
- C++ lexer fixes problem with showing inactive sections when preprocessor lines contain trailing comment. Bug #1413.
- C++ lexer fixes problem with JavaScript regular expressions with '/' in character ranges. Bug #1415.
- LaTeX folder added. Feature #970.
- LaTeX lexer improves styling of math environments. Feature #970.
- MySQL lexer implements hidden commands.
- Only produce a single undo step when autocompleting a single word. Bug #1421.
- Fixed crash when printing lines longer than 8000 characters. Bug #1430.
- Fixed problem in character movement extends selection mode where reversing direction collapsed the selection.
- Memory issues fixed on Cocoa, involving object ownership, lifetime of timers, and images held by the info bar. Bug #1436.
- Cocoa key binding for Alt+Delete changed to delete previous word to be more compatible with platform standards.
- Fixed crash on Cocoa with scrollbar when there is no scrolling possible. Bug #1416.
- On Cocoa with retina display fixed positioning of autocompletion lists.
- Fixed SciTE on Windows failure to run a batch file with a name containing a space by quoting the path in the properties file. Bug #1423.
- Fixed scaling bug when printing on GTK+. Bug #1427.
- SciTE on GTK toolbar.detachable feature removed.
- Fixed some background saving bugs in SciTE. Bug #1366. Bug #1339.

### Release 3.2.3

- Released 21 October 2012.
- Improve speed when performing multiple searches.
- SciTE adds definition of PLAT_UNIX for both PLAT_GTK and PLAT_MAC to allow consolidation of settings valid on all Unix variants.
- Signal autoCompleteCancelled added on Qt.
- Bash lexer supports nested delimiter pairs. Feature #3569352. Bug #1515556. Bug #3008483. Bug #3512208. Bug #3515392.
- For C/C++, recognize exponent in floating point hexadecimal literals. Bug #3576454.
- For C #include statements, do not treat // in the path as a comment. Bug #3519260.
- Lexer for GetText translations (PO) improved with additional styles and single instance limitation fixed.
- Ruby for loop folding fixed. Bug #3240902. Bug #3567391.
- Ruby recognition of here-doc after class or instance variable fixed. Bug #3567809.
- SQL folding of loop and case fixed. Bug #3567905.
- SQL folding of case with assignment fixed. Bug #3571820.
- Fix hang when removing all characters from indicator at end of document.
- Fix failure of \xhh in regular expression search for values greater than 0x79.
- On Cocoa on OS X 10.8, fix inverted drawing of find indicator.
- On Cocoa, fix double drawing when horizontal scroll range small and user swipes horizontally.
- On Cocoa, remove incorrect setting of save point when reading information through 'string' and 'selectedString'.
- On Cocoa, fix incorrect memory management of infoBar.
- On GTK+ 3 Ubuntu, fix crash when drawing margin.
- On ncurses, fix excessive spacing with italics line end.
- On Windows, search for D2D1.DLL and DWRITE.DLL in system directory to avoid loading from earlier in path where could be planted by malware.

### Release 3.2.2

- Released 31 August 2012.
- Retina display support for Cocoa. Text size fixed. Scale factor for images implemented so they can be displayed in high definition.
- Implement INDIC_SQUIGGLEPIXMAP as a faster version of INDIC_SQUIGGLE. Avoid poor drawing at right of INDIC_SQUIGGLE. Align INDIC_DOTBOX to pixel grid for full intensity.
- Implement SCI_GETSELECTIONEMPTY API. Bug #3543121.
- Added SCI_VCHOMEDISPLAY and SCI_VCHOMEDISPLAYEXTEND key commands. Feature #3561433.
- Allow specifying SciTE Find in Files directory with find.in.directory property. Feature #3558594.
- Override SciTE global strip.trailing.spaces with strip.trailing.spaces by pattern files. Feature #3556320.
- Fix long XML script tag handling in XML lexer. Bug #3534190.
- Fix rectangular selection range after backspace. Bug #3543097.
- Send SCN_UPDATEUI with SC_UPDATE_SELECTION for backspace in virtual space. Bug #3543121.
- Avoid problems when calltip highlight range is negative. Bug #3545938.
- On Cocoa, fix image drawing code so that image is not accessed after being freed and is drawn in the correct location.
- On Cocoa, limit horizontal touch scrolling to existing established width.
- On Cocoa, decrease sensitivity of pinch-zoom.
- Fix Cocoa drawing where style changes were not immediately visible.
- Fix Cocoa memory leak due to reference cycle.
- Fix Cocoa bug where notifications were sent after Scintilla was freed.
- SciTE on OS X user shortcuts treats "Ctrl+D" as equivalent to "Ctrl+d".
- On Windows, saving SciTE's Lua startup script causes it to run.
- Limit time allowed to highlight current word in SciTE to 0.25 seconds to remain responsive.
- Fixed SciTE read-only mode to stick with buffer.
- For SciTE on Windows, enable Ctrl+Z, Ctrl+X, and Ctrl+C (Undo, Cut, and Copy) in the editable fields of find and replace strips
- Remove limit on logical line length in SciTE .properties files. Bug #3544312.
- Improve performance of SciTE Save As command.
- Fix SciTE crash with empty .properties files. Bug #3545938. Bug #3555308.
- Fix repeated letter in SciTE calltips. Bug #3545938.
- Refine build time checking for Direct2D and DirectWrite.
- Avoid potential build problems on Windows with MultiMon.h by explicitly checking for multi-monitor APIs.
- Automatically disable themed drawing in SciTE when building on Windows 2000. Reenable building for Windows NT 4 on NT 4 .
- Added ncurses platform definitions. Implementation is maintained separately as Scinterm.

### Release 3.2.1

- Released 14 July 2012.
- In Scintilla.iface, specify features as properties instead of functions where possible and fix some enumerations.
- In SciTE Lua scripts, string properties in Scintilla API can be retrieved as well as set using property notation.
- Added character class APIs: SCI_SETPUNCTUATIONCHARS, SCI_GETWORDCHARS, SCI_GETWHITESPACECHARS, and SCI_GETPUNCTUATIONCHARS. Feature #3529805.
- Less/Hss support added to CSS lexer. Feature #3532413.
- C++ lexer style SCE_C_PREPROCESSORCOMMENT added for stream comments in preprocessor. Bug #3487406.
- Fix incorrect styling of inactive code in C++ lexer. Bug #3533036.
- Fix incorrect styling by C++ lexer after empty lines in preprocessor style.
- C++ lexer option "lexer.cpp.allow.dollars" fixed so can be turned off after being on. Bug #3541461.
- Fortran fixed format lexer fixed to style comments from column 73. Bug #3540486.
- Fortran folder folds CRITICAL .. END CRITICAL. Bug #3540486.
- Fortran lexer fixes styling after comment line ending with '&'. Bug #3087226.
- Fortran lexer styles preprocessor lines so they do not trigger incorrect folding. Bug #2906275.
- Fortran folder fixes folding of nested ifs. Bug #2809176.
- HTML folder fixes folding of CDATA when fold.html.preprocessor=0. Bug #3540491.
- On Cocoa, fix autocompletion font lifetime issue and row height computation.
- In 'choose single' mode, autocompletion will close an existing list if asked to display a single entry list.
- Fixed SCI_MARKERDELETE to only delete one marker per call. Bug #3535806.
- Properly position caret after undoing coalesced delete operations. Bug #3523326.
- Ensure margin is redrawn when SCI_MARGINSETSTYLE called.
- Fix clicks in first pixel of margins to send SCN_MARGINCLICK.
- Fix infinite loop when drawing block caret for a zero width space character at document start.
- Crash fixed for deleting negative range.
- For characters that overlap the beginning of their space such as italics descenders and bold serifs, allow start of text to draw 1 pixel into margin. Bug #699587. Bug #3537799.
- Fixed problems compiling Scintilla for Qt with GCC 4.7.1 x64.
- Fixed problem with determining GTK+ sub-platform caused when adding Qt support in 3.2.0.
- Fix incorrect measurement of untitled file in SciTE on Linux leading to message "File ...' is 2147483647 bytes long". Bug #3537764.
- In SciTE, fix open of selected filename with line number to go to that line.
- Fix problem with last visible buffer closing in SciTE causing invisible buffers to be active.
- Avoid blinking of SciTE's current word highlight when output pane changes.
- SciTE properties files can be longer than 60K.

### Release 3.2.0

- Released 1 June 2012.
- Platform layer added for the Qt open-source cross-platform application and user interface framework for development in C++ or in Python with the PySide bindings for Qt.
- Direct access provided to the document bytes for ranges within Scintilla. This is similar to the existing SCI_GETCHARACTERPOINTER API but allows for better performance.
- Ctrl+Double Click and Ctrl+Triple Click add the word or line to the set of selections. Feature #3520037.
- A SCI_DELETERANGE API was added for deleting a range of text.
- Line wrap markers may now be drawn in the line number margin. Feature #3518198.
- SciTE on OS X adds option to hide hidden files in the open dialog box.
- Lexer added for OScript language. Feature #3523197.
- Lexer added for Visual Prolog language. Feature #3523018.
- UTF-8 validity is checked more stringently and consistently. All 66 non-characters are now treated as invalid.
- HTML lexer bug fixed with inconsistent highlighting for PHP when attribute on separate line from tag. Bug #3520027.
- HTML lexer bug fixed for JavaScript block comments. Bug #3520032.
- Annotation drawing bug fixed when box displayed with different colours on different lines. Bug #3519872.
- On Windows with Direct2D, fix drawing with 125% and 150% DPI system settings.
- Virtual space selection bug fixed for rectangular selections. Bug #3519246.
- Replacing multiple selection with newline changed to only affect main selection. Bug #3522251.
- Replacing selection with newline changed to group deletion and insertion as a single undo action. Bug #3522250.
- Auto-completion lists on GTK+ 3 set height correctly instead of showing too few lines.
- Mouse wheel scrolling changed to avoid GTK+ bug in recent distributions.
- IME bug on Windows fixed for horizontal jump. Bug #3529728.
- SciTE case-insensitive autocompletion filters equal identifiers better. Calltip arrows work with bare word identifiers. Bug #3517810.
- SciTE bug fixed where shbang lines not setting file type when switching to file loaded in background.
- SciTE on GTK+ shows open and save dialogs with the directory of the current file displayed.

### Release 3.1.0

- Released 20 April 2012.
- Animated find indicator added on Cocoa.
- Buttons can be made default in SciTE user strips.
- SciTE allows find and replace histories to be saved in session.
- Option added to allow case-insensitive selection in auto-completion lists. Bug #3516538.
- Replace \0 by complete found text in regular expressions. Feature #3510979.
- Fixed single quoted strings in bash lexer. Bug #3512208.
- Incorrect highlighting fixed in C++ lexer for continued lines. Bug #3509317.
- Hang fixed in diff lexer. Bug #3508602.
- Folding improved for SQL CASE/MERGE statement. Bug #3503277.
- Fix extra drawing of selection inside word wrap indentation. Bug #3515555.
- Fix problem with determining the last line that needs styling when drawing. Bug #3514882.
- Fix problems with drawing in margins. Bug #3514882.
- Fix printing crash when using Direct2D to display on-screen. Bug #3513946.
- Fix SciTE bug where background.*.size disabled restoration of bookmarks and positions from session. Bug #3514885.
- Fixed the Move Selected Lines command when last line does not end with a line end character. Bug #3511023.
- Fix word wrap indentation printing to use printer settings instead of screen settings. Bug #3512961.
- Fix SciTE bug where executing an empty command prevented executing further commands Bug #3512976.
- Fix SciTE bugs with focus in user strips and made strips more robust with invalid definitions.
- Suppress SciTE regular expression option when searching with find next selection. Bug #3510985.
- SciTE Find in Files command matches empty pattern to all files. Feature #3495918.
- Fix scroll with mouse wheel on GTK+. Bug #3501321.
- Fix column finding method so that tab is counted correctly. Bug #3483713.

### Release 3.0.4

- Released 8 March 2012.
- SciTE scripts can create user interfaces as strips.
- SciTE can save files automatically in the background.
- Pinch zoom implemented on Cocoa.
- ECL lexer added. Feature #3488209.
- CPP lexer fixes styling after document comment keywords. Bug #3495445.
- Pascal folder improves handling of some constructs. Feature #3486385.
- XML lexer avoids entering a bad mode due to complex preprocessor instructions. Bug #3488060.
- Duplicate command is always remembered as a distinct command for undo. Bug #3495836.
- SciTE xml.auto.close.tags no longer closes with PHP code similar to <a $this-> Bug #3488067.
- Fix bug where setting an indicator for the whole document would fail. Bug #3487440.
- Crash fixed for SCI_MOVESELECTEDLINESDOWN with empty vertical selection. Bug #3496403.
- Differences between buffered and unbuffered mode on Direct2D eliminated. Bug #3495791.
- Font leading implemented for Direct2D to improve display of character blobs. Bug #3494744.
- Fractional widths used for line numbers, character markers and other situations. Bug #3494492.
- Translucent rectangles drawn using Direct2D with sharper corners. Bug #3494492.
- RGBA markers drawn sharper when centred using Direct2D. Bug #3494202.
- RGBA markers are drawn centred when taller than line. Bug #3494184.
- Image marker drawing problem fixed for markers taller than line. Bug #3493503.
- Markers are drawn horizontally off-centre based on margin type instead of dimensions. Bug #3488696.
- Fold tail markers drawn vertically centred. Feature #3488289.
- On Windows, Scintilla is more responsive in wrap mode. Bug #3487397.
- Unimportant "Gdk-CRITICAL" messages are no longer displayed. Bug #3488481.
- SciTE on Windows Find in Files sets focus to dialog when already created; allows opening dialog when a job is running. Bug #3480635. Bug #3486657.
- Fixed problems with multiple clicks in margin and with mouse actions combined with virtual space. Bug #3484370.
- Fixed bug with using page up and down and not returning to original line. Bug #3485669.
- Down arrow with wrapped text no longer skips lines. Bug #1776560.
- Fix problem with dwell ending immediately due to word wrap. Bug #3484416.
- Wrapped lines are rewrapped more consistently while resizing window. Bug #3484179.
- Selected line ends are highlighted more consistently. Bug #3484330.
- Fix grey background on files that use shbang to choose language. Bug #3482777.
- Fix failure messages from empty commands in SciTE. Bug #3480645.
- Redrawing reduced for some marker calls. Feature #3493530.
- Match brace and select brace commands work in SciTE output pane. Feature #3486598.
- Performing SciTE "Show Calltip" command when a calltip is already visible shows the next calltip. Feature #3487017.
- SciTE allows saving file even when file unchanged. Feature #3486654.
- SciTE allows optional use of character escapes in calltips. Feature #3495239.
- SciTE can open file:// URLs with Ctrl+Shift+O. Feature #3495389.
- Key modifiers updated for GTK+ on OS X to match upstream changes.
- SciTE hang when marking all occurrences of regular expressions fixed.

### Release 3.0.3

- Released 28 January 2012.
- Printing works on GTK+ version 2.x as well as 3.x.
- Lexer added for the AviSynth language. Feature #3475611.
- Lexer added for the Take Command / TCC scripting language. Feature #3462462.
- CSS lexer gains support for SCSS. Feature #3268017.
- CPP lexer fixes problems in the preprocessor structure caused by continuation lines. Bug #3458508.
- Errorlist lexer handles column numbers for GCC format diagnostics. In SciTE, Next Message goes to column where this can be decoded from GCC format diagnostics. Feature #3453075.
- HTML folder fixes spurious folds on some tags. Bug #3459262.
- Ruby lexer fixes bug where '=' at start of file caused whole file to appear as a comment. Bug #3452488.
- SQL folder folds blocks of single line comments. Feature #3467425.
- On Windows using Direct2D, defer invalidation of render target until completion of painting to avoid failures.
- Further support of fractional positioning. Spaces, tabs, and single character tokens can take fractional space and wrapped lines are positioned taking fractional positions into account. Bug #3471998.
- On Windows using Direct2D, fix extra carets appearing. Bug #3471998.
- For autocompletion lists Page Up and Down move by the list height instead of by 5 lines. Bug #3455493.
- For SCI_LINESCROLLDOWN/UP don't select into virtual space. Bug #3451681.
- Fix fold highlight not being fully drawn. Bug #3469936.
- Fix selection margin appearing black when starting in wrap mode.
- Fix crash when changing end of document after adding an annotation. Bug #3476637.
- Fix problems with building to make RPMs. Bug #3476149.
- Fix problem with building on GTK+ where recent distributions could not find gmodule. Bug #3469056.
- Fix problem with installing SciTE on GTK+ due to icon definition in .desktop file including an extension. Bug #3476117.
- Fix SciTE bug where new buffers inherited some properties from previously opened file. Bug #3457060.
- Fix focus when closing tab in SciTE with middle click. Focus moves to edit pane instead of staying on tab bar. Bug #3440142.
- For SciTE on Windows fix bug where Open Selected Filename for URL would append a file extension. Feature #3459185.
- For SciTE on Windows fix key handling of control characters in Parameters dialog so normal editing (Ctrl+C, ...) works. Bug #3459345.
- Fix SciTE bug where files became read-only after saving. Drop the "*" dirty marker after save completes. Bug #3467432.
- For SciTE handling of diffs with "+++" and "---" lines, also handle case where not followed by tab. Go to correct line for diff "+++" message. Bug #3467143. Bug #3467178.
- SciTE on GTK+ now performs threaded actions even on GTK+ versions before 2.12.

### Release 3.0.2

- Released 9 December 2011.
- SciTE saves files in the background without blocking the user interface.
- Printing implemented in SciTE on GTK+ 3.x.
- ILoader interface for background loading finalized and documented.
- CoffeeScript lexer added.
- C++ lexer fixes crash with "#if defined( XXX 1".
- Crash with Direct2D on Windows fixed.
- Backspace removing protected range fixed. Bug #3445911.
- Cursor setting failure on Windows when screen saver on fixed. Bug #3438780.
- SciTE on GTK+ hang fixed with -open:file option. Bug #3441980.
- Failure to evaluate shbang fixed in SciTE. Bug #3441801.
- SciTE failure to treat files starting with "<?xml" as XML fixed. Bug #3440718.
- Made untitled tab saveable when created by closing all files. Bug #3440244.
- SciTE crash fixed when using Scintillua.
- SciTE revert command fixed so that undo works on individual actions instead of undoing to revert point.
- Focus loss in SciTE when opening a recent file fixed. Bug #3440142.
- Fixed SciTE SelLength property to measure characters instead of bytes. Bug #3283519.

### Release 3.0.1

- Released 15 November 2011.
- SciTE on Windows now runs Lua scripts directly on the main thread instead of starting them on a secondary thread and then moving back to the main thread.
- Highlight "else" as a keyword for TCL in the same way as other languages. Bug #1836954.
- Fix problems with setting fonts for autocompletion lists on Windows where font handles were copied and later deleted causing a system default font to be used.
- Fix font size used on Windows for Asian language input methods which sometimes led to IME not being visible. Bug #3436753.
- Fixed polygon drawing on Windows so fold symbols are visible again. Bug #3433558.
- Changed background drawing on GTK+ to allow for fractional character positioning as occurs on OS X as this avoids faint lines at lexeme boundaries.
- Ensure pixmaps allocated before painting as there was a crash when Scintilla drew without common initialization calls. Bug #3432354.
- Fixed SciTE on Windows bug causing wrong caret position after indenting a selection. Bug #3433433.
- Fixed SciTE session saving to store buffer position matching buffer. Bug #3434372.
- Fixed leak of document objects in SciTE.
- Recognize URL characters '?' and '%' for Open Selected command in SciTE. Bug #3429409.

### Release 3.0.0

- Released 1 November 2011.
- Carbon platform support removed. OS X applications should switch to Cocoa.
- On Windows Vista or newer, drawing may be performed with Direct2D and DirectWrite instead of GDI.
- Cairo is now used for all drawing on GTK+. GDK drawing was removed.
- Paletted display support removed.
- Fractional font sizes can be specified.
- Different weights of text supported on some platforms instead of just normal and bold.
- Sub-pixel character positioning supported.
- SciTE loads files in the background without blocking the user interface.
- SciTE can display diagnostic messages interleaved with the text of files immediately after the line referred to by the diagnostic.
- New API to see if all lines are visible which can be used to optimize processing fold structure notifications.
- Scrolling optimized by avoiding invalidation of fold margin when redrawing whole window.
- Optimized SCI_MARKERNEXT.
- C++ lexer supports Pike hash quoted strings when turned on with lexer.cpp.hashquoted.strings.
- Fixed incorrect line height with annotations in wrapped mode when there are multiple views. Bug #3388159.
- Calltips may be displayed above the text as well as below. Bug #3410830.
- For huge files SciTE only examines the first megabyte for newline discovery.
- SciTE on GTK+ removes the fileselector.show.hidden property and check box as this was buggy and GTK+ now supports an equivalent feature. Bug #3413630.
- SciTE on GTK+ supports mnemonics in dynamic menus.
- SciTE on GTK+ displays the user's home directory as '~' in menus to make them shorter.

### Release 2.29

- Released 16 September 2011.
- To automatically discover the encoding of a file when opening it, SciTE can run a program set with command.discover.properties. Feature #3324341.
- Cairo always used for drawing on GTK+.
- The set of properties files imported by SciTE can be controlled with the properties imports.include and imports.exclude. The import statement has been extended to allow "import *". The properties files for some languages are no longer automatically loaded by default. The properties files affected are avenue, baan, escript, lot, metapost, and mmixal.
- C++ lexer fixed a bug with raw strings being recognized too easily. Bug #3388122.
- LaTeX lexer improved with more states and fixes to most outstanding bugs. Bug #1493111. Bug #1856356. Bug #3081692.
- Lua lexer updates for Lua 5.2 beta with goto labels and "\z" string escape. Feature #3386330.
- Perl string styling highlights interpolated variables. Feature #3394258. Bug #3076629.
- Perl lexer updated for Perl 5.14.0 with 0X and 0B numeric literal prefixes, break keyword and "+" supported in subroutine prototypes. Feature #3388802.
- Perl bug fixed with CRLF line endings.
- Markdown lexer fixed to not change state with "_" in middle of word. Bug #3398184.
- Cocoa restores compatibility with OS X 10.5.
- Mouse pointer changes over selection to an arrow near start when scrolled horizontally. Bug #3389055.
- Indicators that finish at the end of the document no longer expand when text is appended. Bug #3378718.
- SparseState merge fixed to check if other range is empty. Bug #3387053.
- On Windows, autocompletion lists will scroll instead of document when mouse wheel spun. Feature #3403600.
- SciTE performs more rapid polling for command completion so will return faster and report more accurate times.
- SciTE resizes panes proportionally when switched between horizontal and vertical layout. Feature #3376784.
- SciTE on GTK+ opens multiple files into a single instance more reliably. Bug #3363754.

### Release 2.28

- Released 1 August 2011.
- GTK+ Cairo support works back to GTK+ version 2.8. Requires changing Scintilla source code to enable before GTK+ 2.22. Bug #3322351.
- Translucent images in RGBA format can be used for margin markers and in autocompletion lists.
- INDIC_DOTBOX added as a translucent dotted rectangular indicator.
- Asian text input using IME works for GTK+ 3.x and GTK+ 2.x with Cairo.
- On GTK+, IME works for Ctrl+Shift+U Unicode input in Scintilla. For SciTE, Ctrl+Shift+U is still Make Selection Uppercase.
- Key bindings for GTK+ on OS X made compatible with Cocoa port and platform conventions.
- Cocoa port supports different character encodings, improves scrolling performance and drag image appearance. The control ID is included in WM_COMMAND notifications. Text may be deleted by dragging to the trash. ScrollToStart and ScrollToEnd key commands added to simplify implementation of standard OS X Home and End behaviour.
- SciTE on GTK+ uses a paned widget to contain the edit and output panes instead of custom code. This allows the divider to be moved easily on GTK+ 3 and its appearance follows GTK+ conventions more closely.
- SciTE builds and installs on BSD. Bug #3324644.
- Cobol supports fixed format comments. Bug #3014850.
- Mako template language block syntax extended and ## comments recognized. Feature #3325178. Bug #3318818.
- Folding of Mako template language within HTML fixed. Bug #3324563.
- Python lexer has lexer.python.keywords2.no.sub.identifiers option to avoid highlighting second set of keywords following '.'. Bug #3325333.
- Python folder fixes bug where fold would not extend to final line. Bug #3349157.
- SciTE treats LPEG lexers the same as script lexers by setting all 8 style bits.
- For Cocoa, crashes with unsupported font variants and memory leaks for colour objects fixed.
- Shift-JIS lead byte ranges modified to match Windows.
- Mouse pointer changes over selection to an arrow more consistently. Bug #3315756.
- Bug fixed with annotations beyond end of document. Bug #3347268.
- Incorrect drawing fixed for combination of background colour change and translucent selection. Bug #3377116.
- Lexers initialized correctly when started at position other than start of line. Bug #3377148.
- Fold highlight drawing fixed for some situations. Bug #3323015. Bug #3323805.
- Case insensitive search fixed for cases where folded character uses fewer bytes than base character. Bug #3362038.
- SciTE bookmark.alpha setting fixed. Bug #3373907.

### Release 2.27

- Released 20 June 2011.
- On recent GTK+ 2.x versions when using Cairo, bug fixed where wrong colours were drawn.
- SciTE on GTK+ slow performance in menu maintenance fixed. Bug #3315233.
- Cocoa platform supports 64-bit builds and uses only non-deprecated APIs. Asian Input Method Editors are supported. Autocompletion lists and calltips implemented. Control identifier used in notifications.
- On Cocoa, rectangular selection now uses Option/Alt key to be compatible with Apple Human Interface Guidelines and other applications. The Control key is reported with an SCMOD_META modifier bit.
- API added for setting and retrieving the identifier number used in notifications.
- SCI_SETEMPTYSELECTION added to set selection without scrolling or redrawing more than needed. Feature #3314877.
- Added new indicators. INDIC_DASH and INDIC_DOTS are variants of underlines. INDIC_SQUIGGLELOW indicator added as shorter alternative to INDIC_SQUIGGLE for small fonts. Bug #3314591
- Margin line selection can be changed to select display lines instead of document lines. Bug #3312763.
- On Windows, SciTE can perform reverse searches by pressing Shift+Enter in the Find or Replace strips or dialogs.
- Matlab lexer does not special case '\' in single quoted strings. Bug #948757 Bug #1755950 Bug #1888738 Bug #3316852.
- Verilog lexer supports SystemVerilog folding and keywords.
- Font leak fixed. Bug #3306156.
- Automatic scrolling works for long wrapped lines. Bug #3312763.
- Multiple typing works for cases where selections collapse together. Bug #3309906.
- Fold expanded when needed in word wrap mode. Bug #3291579.
- Bug fixed with edge drawn in wrong place on wrapped lines. Bug #3314807.
- Bug fixed with unnecessary scrolling for SCI_GOTOLINE. Bug #3303406.
- Bug fixed where extra step needed to undo SCI_CLEAR in virtual space. Bug #3159691.
- Regular expression search fixed for \$ on last line of search range. Bug #3313746.
- SciTE performance improved when switching to a tab with a very large file. Bug #3311421.
- On Windows, SciTE advanced search remembers the "Search only in this style" setting. Bug #3313344.
- On GTK+, SciTE opens help using "xdg-open" instead of "netscape" as "netscape" no longer commonly installed. Bug #3314377.
- SciTE script lexers can use 256 styles.
- SciTE word highlight works for words containing DBCS characters. Bug #3315173.
- Compilation fixed for wxWidgets. Bug #3306156.

### Release 2.26

- Released 25 May 2011.
- Folding margin symbols can be highlighted for the current folding block. Feature #3147069.
- Selected lines can be moved up or down together. Feature #3304850.
- SciTE can highlight all occurrences of the current word or selected text. Feature #3291636.
- Experimental GTK+ 3.0 support: build with "make GTK3=1".
- INDIC_STRAIGHTBOX added. Is similar to INDIC_ROUNDBOX but without rounded corners. Bug #3290435.
- Can show brace matching and mismatching with indicators instead of text style. Translucency of outline can be altered for INDIC_ROUNDBOX and INDIC_STRAIGHTBOX. Feature #3290434.
- SciTE can automatically indent python by examining previous line for scope-starting ':' with indent.python.colon.
- Batch file lexer allows braces '(' or ')' inside variable names.
- The cpp lexer only recognizes Vala triple quoted strings when lexer.cpp.triplequoted.strings property is set. Bug #3239234.
- Make file lexer treats a variable with a nested variable like $(f$(qx)b) as one variable. Bug #3298223.
- Folding bug fixed for JavaScript with nested PHP. Bug #3193530.
- HTML lexer styles Django's {# #} comments. Bug #3013798.
- HTML lexer styles JavaScript regular expression correctly for /abc/i.test('abc');. Bug #3209108.
- Inno Setup Script lexer now works properly when it restarts from middle of [CODE] section. Bug #3283880. Bug #3129044.
- Lua lexer updated for Lua 5.2 with hexadecimal floating-point numbers and '\*' whitespace escaping in strings. Feature #3243811.
- Perl folding folds "here doc"s and adds options fold.perl.at.else and fold.perl.comment.explicit. Fold structure for Perl fixed. Feature #3112671. Bug #3265401.
- Python lexer supports cpdef keyword for Cython. Bug #3279728.
- SQL folding option lexer.sql.fold.at.else renamed to fold.sql.at.else. Bug #3271474.
- SQL lexer no longer treats ';' as terminating a comment. Bug #3196071.
- Text drawing and measurement segmented into smaller runs to avoid platform bugs. Bug #3277449. Bug #3165743.
- SciTE on Windows adds temp.files.sync.load property to open dropped temporary files synchronously as they may be removed before they can be opened asynchronously. Bug #3072009.
- Bug fixed with indentation guides ignoring first line in SC_IV_LOOKBOTH mode. Bug #3291317.
- Bugs fixed in backward regex search. Bug #3292659.
- Bugs with display of folding structure fixed for wrapped lines and where there is a fold header but no body. Bug #3291579. Bug #3265401.
- SciTE on Windows cursor changes to an arrow now when over horizontal splitter near top of window. Bug #3286620.
- Fixed default widget size problem on GTK+. Bug #3267892.
- Fixed font size when using Cairo on GTK+. Bug #3272662.
- Fixed primary selection and cursor issues on GTK+ when unrealized then realized. Bug #3256153.
- Right click now cancels selection on GTK+ like on Windows. Bug #3235190.
- SciTE on GTK+ implements z-order buffer switching like on Windows. Bug #3228384.
- Improve selection position after SciTE Insert Abbreviation command when abbreviation expansion includes '|'.

### Release 2.25

- Released 21 March 2011.
- SparseState class makes it easier to write lexers which have to remember complex state between lines.
- Visual Studio project (.dsp) files removed. The make files should be used instead as described in the README.
- Modula 3 lexer added along with SciTE support. Feature #3173374.
- Asm, Basic, and D lexers add extra folding properties.
- Raw string literals for C++0x supported in C++ lexer.
- Triple-quoted strings used in Vala language supported in C++ lexer. Feature #3177601.
- The errorlist lexer used in SciTE's output pane colours lines that start with '<' as diff deletions. Feature #3172878.
- The Fortran lexer correctly folds type-bound procedures from Fortran 2003.
- LPeg lexer support‎ improved in SciTE.
- SciTE on Windows-64 fixes for menu localization and Lua scripts. Bug #3204502.
- SciTE on Windows avoids locking folders when using the open or save dialogs. Bug #1795484.
- Diff lexer fixes problem where diffs of diffs producing lines that start with "----". Bug #3197952.
- Bug fixed when searching upwards in Chinese code page 936. Bug #3176271.
- On Cocoa, translucent drawing performed as on other platforms instead of 2.5 times less translucent.
- Performance issue and potential bug fixed on GTK+ with caret line for long lines.

### Release 2.24

- Released 3 February 2011.
- Fixed memory leak in GTK+ Cairo code. Feature #3157655.
- Insert Abbreviation dialog added to SciTE on GTK+.
- SCN_UPDATEUI notifications received when window scrolled. An 'updated' bit mask indicates which types of update have occurred from SC_UPDATE_SELECTION, SC_UPDATE_CONTENT, SC_UPDATE_H_SCROLL or SC_UPDATE_V_SCROLL. Feature #3125977.
- On Windows, to ensure reverse arrow cursor matches platform default, it is now generated by reflecting the platform arrow cursor. Feature #3143968.
- Can choose mouse cursor used in margins. Feature #3161326.
- On GTK+, SciTE sets a mime type of text/plain in its .desktop file so that it will appear in the shell context menu. Feature #3137126.
- Bash folder handles here docs. Feature #3118223.
- C++ folder adds fold.cpp.syntax.based, fold.cpp.comment.multiline, fold.cpp.explicit.start, fold.cpp.explicit.end, and fold.cpp.explicit.anywhere properties to allow more control over folding and choice of explicit fold markers.
- C++ lexer fixed to always handle single quote strings continued past a line end. Bug #3150522.
- Ruby folder handles here docs. Feature #3118224.
- SQL lexer allows '.' to be part of words. Feature #3103129.
- SQL folder handles case statements in more situations. Feature #3135027.
- SQL folder adds fold points inside expressions based on bracket structure. Feature #3165488.
- SQL folder drops fold.sql.exists property as 'exists' is handled automatically. Bug #3164194.
- SciTE only forwards properties to lexers when they have been explicitly set so the defaults set by lexers are used rather than 0.
- Mouse double click word selection chooses the word around the character under the mouse rather than the inter-character position under the mouse. This makes double clicking select what the user is pointing at and avoids selecting adjacent non-word characters. Bug #3111174.
- Fixed mouse double click to always perform word select, not line select. Bug #3143635.
- Right click cancels autocompletion. Bug #3144531.
- Fixed multiPaste to work when additionalSelectionTyping off. Bug #3126221.
- Fixed virtual space problems when text modified at caret. Bug #3154986.
- Fixed memory leak in lexer object code. Bug #3133672.
- Fixed SciTE on GTK+ search failure when using regular expression. Bug #3156217.
- Avoid unnecessary full window redraw for SCI_GOTOPOS. Feature #3146650.
- Avoid unnecessary redraw when indicator fill range makes no real change.

### Release 2.23

- Released 7 December 2010.
- On GTK+ version 2.22 and later, drawing is performed with Cairo rather than GDK. This is in preparation for GTK+ 3.0 which will no longer support GDK drawing. The appearance of some elements will be different with Cairo as it is anti-aliased and uses sub-pixel positioning. Cairo may be turned on for GTK+ versions before 2.22 by defining USE_CAIRO although this has not been extensively tested.
- New lexer a68k for Motorola 68000 assembler. Feature #3101598.
- Borland C++ is no longer supported for building Scintilla or SciTE on Windows.
- Performance improved when creating large rectangular selections.
- PHP folder recognizes #region and #endregion comments. Feature #3101624.
- SQL lexer has a lexer.sql.numbersign.comment option to turn off use of '#' comments as these are a non-standard feature only available in some implementations. Feature #3098071.
- SQL folder recognizes case statements and understands the fold.at.else property. Bug #3104091. Bug #3107362.
- SQL folder fixes bugs with end statements when fold.sql.only.begin=1. Bug #3104091.
- SciTE on Windows bug fixed with multi-line tab bar not adjusting correctly when maximizing and demaximizing. Bug #3097517.
- Crash fixed on GTK+ when Scintilla widget destroyed while it still has an outstanding style idle pending.
- Bug fixed where searching backwards in DBCS text (code page 936 or similar) failed to find occurrences at the start of the line. Bug #3103936.
- SciTE on Windows supports Unicode file names when executing help applications with winhelp and htmlhelp subsystems.

### Release 2.22

- Released 27 October 2010.
- SciTE includes support for integrating with Scintillua which allows lexers to be implemented in Lua as a Parsing Expression Grammar (PEG).
- Regular expressions allow use of '?' for non-greedy matches or to match 0 or 1 instances of an item.
- SCI_CONTRACTEDFOLDNEXT added to allow rapid retrieval of folding state.
- SCN_HOTSPOTRELEASECLICK notification added which is similar to SCN_HOTSPOTCLICK but occurs when the mouse is released. Feature #3082409.
- Command added for centring current line in window. Feature #3064696.
- SciTE performance improved by not examining document for line ends when switching buffers and not storing folds when folding turned off.
- Bug fixed where scrolling to ensure the caret is visible did not take into account all pixels of the line. Bug #3081721.
- Bug fixed for autocompletion list overlapping text when WS_EX_CLIENTEDGE used. Bug #3079778.
- After autocompletion, the caret's X is updated. Bug #3079114.
- On Windows, default to the system caret blink time. Feature #3079784.
- PgUp/PgDn fixed to allow virtual space. Bug #3077452.
- Crash fixed when AddMark and AddMarkSet called with negative argument. Bug #3075074.
- Dwell notifications fixed so that they do not occur when the mouse is outside Scintilla. Bug #3073481.
- Bash lexer bug fixed for here docs starting with <<-. Bug #3063822.
- C++ lexer bug fixed for // comments that are continued onto a second line by a \. Bug #3066031.
- C++ lexer fixes wrong highlighting for float literals containing +/-. Bug #3058924.
- JavaScript lexer recognize regexes following return keyword.‎ Bug #3062287.
- Ruby lexer handles % quoting better and treats range dots as operators in 1..2 and 1...2. Ruby folder handles "if" keyword used as a modifier even when it is separated from the modified statement by an escaped new line. Bug #2093767. Bug #3058496.
- Bug fixed where upwards search failed with DBCS code pages. Bug #3065912.
- SciTE has a default Lua startup script name distributed in SciTEGlobal.properties. No error message is displayed if this file does not exist.
- SciTE on Windows tab control height is calculated better. Bug #2635702.
- SciTE on Windows uses better themed check buttons in find and replace strips.
- SciTE on Windows fixes bug with Find strip appearing along with Incremental Find strip.
- SciTE setting find.close.on.find added to allow preventing the Find dialog from closing.
- SciTE on Windows attempts to rerun commands that fail by prepending them with "cmd.exe /c". This allows commands built in to the command processor like "dir" to run.

### Release 2.21

- Released 1 September 2010.
- Asian Double Byte Character Set (DBCS) support improved. Case insensitive search works and other operations are much faster. Bug #2999125, Bug #2774616, Bug #2991942, Bug #3005688.
- Scintilla on GTK+ uses only non-deprecated APIs (for GTK+ 2.20) except for GdkFont and GdkFont use can be disabled with the preprocessor symbol DISABLE_GDK_FONT.
- IDocument interface used by lexers adds BufferPointer and GetLineIndentation methods.
- On Windows, clicking sets focus before processing the click or sending notifications.
- Bug on OS X (macosx platform) fixed where drag/drop overwrote clipboard. Bug #3039732.
- GTK+ drawing bug when the view was horizontally scrolled more than 32000 pixels fixed.
- SciTE bug fixed with invoking Complete Symbol from output pane. Bug #3050957.
- Bug fixed where it was not possible to disable folding. Bug #3040649.
- Bug fixed with pressing Enter on a folded fold header line not opening the fold. Bug #3043419.
- SciTE 'Match case' option in find and replace user interfaces changed to 'Case sensitive' to allow use of 'v' rather than 'c' as the mnemonic.
- SciTE displays stack trace for Lua when error occurs.. Bug #3051397.
- SciTE on Windows fixes bug where double clicking on error message left focus in output pane. Bug #1264835.
- SciTE on Windows uses SetDllDirectory to avoid a security problem.
- C++ lexer crash fixed with preprocessor expression that looked like division by 0. Bug #3056825.
- Haskell lexer improved. Feature #3039490.
- HTML lexing fixed around Django {% %} tags. Bug #3034853.
- HTML JavaScript lexing fixed when line end escaped. Bug #3038381.
- HTML lexer stores line state produced by a line on that line rather than on the next line.
- Markdown lexer fixes infinite loop. Bug #3045386.
- MySQL folding bugs with END statements fixed. Bug #3031742.
- PowerShell lexer allows '_' as a word character. Feature #3042228.
- SciTE on GTK+ abandons processing of subsequent commands if a command.go.needs command fails.
- When SciTE is closed, all buffers now receive an OnClose call. Bug #3033857.

### Release 2.20

- Released 30 July 2010.
- Lexers are implemented as objects so that they may retain extra state. The interfaces defined for this are tentative and may change before the next release. Compatibility classes allow current lexers compiled into Scintilla to run with few changes. The interface to external lexers has changed and existing external lexers will need to have changes made and be recompiled. A single lexer object is attached to a document whereas previously lexers were attached to views which could lead to different lexers being used for split views with confusing results.
- C++ lexer understands the preprocessor enough to grey-out inactive code due to conditional compilation.
- SciTE can use strips within the main window for find and replace rather than dialogs. On Windows SciTE always uses a strip for incremental search.
- Lexer added for Txt2Tags language. Feature #3018736.
- Sticky caret feature enhanced with additional SC_CARETSTICKY_WHITESPACE mode . Feature #3027559.
- Bash lexer implements basic parsing of compound commands and constructs. Feature #3033135.
- C++ folder allows disabling explicit fold comments.
- Perl folder works for array blocks, adjacent package statements, nested PODs, and terminates package folding at __DATA__, ^D and ^Z. Feature #3030887.
- PowerShell lexer supports multiline <# .. #> comments and adds 2 keyword classes. Feature #3015176.
- Lexing performed incrementally when needed by wrapping to make user interface more responsive.
- SciTE setting replaceselection:yes works on GTK+.
- SciTE Lua scripts calling io.open or io.popen on Windows have arguments treated as UTF-8 and converted to Unicode so that non-ASCII file paths will work. Lua files with non-ASCII paths run. Bug #3016951.
- Crash fixed when searching for empty string. Bug #3017572.
- Bugs fixed with folding and lexing when Enter pressed at start of line. Bug #3032652.
- Bug fixed with line selection mode not affecting selection range. Bug #3021480.
- Bug fixed where indicator alpha was limited to 100 rather than 255. Bug #3021473.
- Bug fixed where changing annotation did not cause automatic redraw.
- Regular expression bug fixed when a character range included non-ASCII characters.
- Compilation failure with recent compilers fixed on GTK+. Bug #3022027.
- Bug fixed on Windows with multiple monitors where autocomplete pop up would appear off-screen or straddling monitors. Bug #3017512.
- SciTE on Windows bug fixed where changing directory to a Unicode path failed. Bug #3011987.
- SciTE on Windows bug fixed where combo boxes were not allowing Unicode characters. Bug #3012986.
- SciTE on GTK+ bug fixed when dragging files into SciTE on KDE. Bug #3026555.
- SciTE bug fixed where closing untitled file could lose data if attempt to name file same as another buffer. Bug #3011680.
- COBOL number masks now correctly highlighted. Bug #3012164.
- PHP comments can include <?PHP without triggering state change. Bug #2854183.
- VHDL lexer styles unclosed string correctly. Bug #3029627.
- Memory leak fixed in list boxes on GTK+. Bug #3007669.

### Release 2.12

- Released 1 June 2010.
- Drawing optimizations improve speed and fix some visible flashing when scrolling.
- Copy Path command added to File menu in SciTE. Feature #2986745.
- Optional warning displayed by SciTE when saving a file which has been modified by another process. Feature #2975041.
- Flagship lexer for xBase languages updated to follow the language much more closely. Feature #2992689.
- HTML lexer highlights Django templates in more regions. Feature #3002874.
- Dropping files on SciTE on Windows, releases the drag object earlier and opens the files asynchronously, leading to smoother user experience. Feature #2986724.
- SciTE HTML exports take the Use Monospaced Font setting into account.
- SciTE window title "[n of m]" localized.
- When new line inserted at start of line, markers are moved down. Bug #2986727.
- On Windows, dropped text has its line ends converted, similar to pasting. Bug #3005328.
- Fixed bug with middle-click paste in block select mode where text was pasted next to selection rather than at cursor. Bug #2984460.
- Fixed SciTE crash where a style had a size parameter without a value. Bug #3003834.
- Debug assertions in multiple lexers fixed. Bug #3000566.
- CSS lexer fixed bug where @font-face displayed incorrectly Bug #2994224.
- CSS lexer fixed bug where open comment caused highlighting error. Bug #1683672.
- Shell file lexer fixed highlight glitch with here docs where the first line is a comment. Bug #2830239.
- Bug fixed in SciTE openpath property that caused Open Selected File to fail to open the selected file.
- Bug fixed in SciTE FileExt property when file name with no extension evaluated to whole path.
- Fixed SciTE on Windows printing bug where the $(CurrentTime), $(CurrentPage) variables were not expanded. Bug #2994612.
- SciTE compiles for 64-bit Windows and runs without crashing. Bug #2986312.
- Full Screen mode in Windows Vista/7 improved to hide Start button and size borders a little better. Bug #3002813.

### Release 2.11

- Released 9 April 2010.
- Fixes compatibility of Scintilla.h with the C language.
- With a rectangular selection SCI_GETSELECTIONSTART and SCI_GETSELECTIONEND return limits of the rectangular selection rather than the limits of the main selection.
- When SciTE on Windows is minimized to tray, only takes a single click to restore rather than a double click. Feature #981917.

### Release 2.10

- Released 4 April 2010.
- Version 1.x of GTK+ is no longer supported.
- SciTE is no longer supported on Windows 95, 98 or ME.
- Case-insensitive search works for non-ASCII characters in UTF-8 and 8-bit encodings. Non-regex search in DBCS encodings is always case-sensitive.
- Non-ASCII characters may be changed to upper and lower case.
- SciTE on Windows can access all files including those with names outside the user's preferred character encoding.
- SciTE may be extended with lexers written in Lua.
- When there are multiple selections, the paste command can go either to the main selection or to each selection. This is controlled with SCI_SETMULTIPASTE.
- More forms of bad UTF-8 are detected including overlong sequences, surrogates, and characters outside the valid range. Bad UTF-8 bytes are now displayed as 2 hex digits preceded by 'x'.
- SCI_GETTAG retrieves the value of captured expressions within regular expression searches.
- Django template highlighting added to the HTML lexer. Feature #2974889.
- Verilog line comments can be folded.
- SciTE on Windows allows specifying a filter for the Save As dialog. Feature #2943445.
- Bug fixed when multiple selection disabled where rectangular selections could be expanded into multiple selections. Bug #2948260.
- Bug fixed when document horizontally scrolled and up/down-arrow did not return to the same column after horizontal scroll occurred. Bug #2950799.
- Bug fixed to remove hotspot highlight when mouse is moved out of the document. Windows only fix. Bug #2951353.
- R lexer now performs case-sensitive check for keywords. Bug #2956543.
- Bug fixed on GTK+ where text disappeared when a wrap occurred. Bug #2958043.
- Bug fixed where regular expression replace cannot escape the '\' character by using '\\'. Bug #2959876.
- Bug fixed on GTK+ when virtual space disabled, middle-click could still paste text beyond end of line. Bug #2971618.
- SciTE crash fixed when double clicking on a malformed error message in the output pane. Bug #2976551.
- Improved performance on GTK+ when changing parameters associated with scroll bars to the same value. Bug #2964357.
- Fixed bug with pressing Shift+Tab with a rectangular selection so that it performs an un-indent similar to how Tab performs an indent.

### Release 2.03

- Released 14 February 2010.
- Added SCI_SETFIRSTVISIBLELINE to match SCI_GETFIRSTVISIBLELINE.
- Erlang lexer extended set of numeric bases recognized; separate style for module:function_name; detects built-in functions, known module attributes, and known preprocessor instructions; recognizes EDoc and EDoc macros; separates types of comments. Bug #2942448.
- Python lexer extended with lexer.python.strings.over.newline option that allows non-triple-quoted strings to extend past line ends. This allows use of the Ren'Py language. Feature #2945550.
- Fixed bugs with cursor movement after deleting a rectangular selection. Bug #2942131.
- Fixed bug where calling SCI_SETSEL when there is a rectangular selection left the additional selections selected. Bug #2947064.
- Fixed macro recording bug where not all bytes in multi-byte character insertions were reported through SCI_REPLACESEL.
- Fixed SciTE bug where using Ctrl+Enter followed by Ctrl+Space produced an autocompletion list with only a single line containing all the identifiers.
- Fixed SciTE on GTK+ bug where running a tool made the user interface completely unresponsive.
- Fixed SciTE on Windows Copy to RTF bug. Bug #2108574.

### Release 2.02

- Released on 25 January 2010.
- Markdown lexer added. Feature #2844081.
- On GTK+, include code that understands the ranges of lead bytes for code pages 932, 936, and 950 so that most Chinese and Japanese text can be used on systems that are not set to the corresponding locale.
- Allow changing the size of dots in visible whitespace using SCI_SETWHITESPACESIZE. Feature #2839427.
- Additional carets can be hidden with SCI_SETADDITIONALCARETSVISIBLE.
- Can choose anti-aliased, non-anti-aliased or lcd-optimized text using SCI_SETFONTQUALITY.
- Retrieve the current selected text in the autocompletion list with SCI_AUTOCGETCURRENTTEXT.
- Retrieve the name of the current lexer with SCI_GETLEXERLANGUAGE.
- Progress 4GL lexer improves handling of comments in preprocessor declaration. Feature #2902206.
- HTML lexer extended to handle Mako template language.
- SQL folder extended for SQL Anywhere "EXISTS" and "ENDIF" keywords. Feature #2887524.
- SciTE adds APIPath and AbbrevPath variables.
- SciTE on GTK+ uses pipes instead of temporary files for running tools. This should be more secure.
- Fixed crash when calling SCI_STYLEGETFONT for a style which does not have a font set. Bug #2857425.
- Fixed crash caused by not having sufficient styles allocated after choosing a lexer. Bug #2881279.
- Fixed crash in SciTE using autocomplete word when word characters includes space. Bug #2840141.
- Fixed bug with handling upper-case file extensions SciTE on GTK+.
- Fixed SciTE loading files from sessions with folded folds where it would not be scrolled to the correct location. Bug #2882775.
- Fixed SciTE loading files from sessions when file no longer exists. Bug #2883437.
- Fixed SciTE export to HTML using the wrong background colour.
- Fixed crash when adding an annotation and then adding a new line after the annotation. Bug #2929708.
- Fixed crash in SciTE setting a property to nil from Lua.
- SCI_GETSELTEXT fixed to return correct length. Bug #2929441.
- Fixed text positioning problems with selection in some circumstances.
- Fixed text positioning problems with ligatures on GTK+.
- Fixed problem pasting into rectangular selection with caret at bottom caused text to go from the caret down rather than replacing the selection.
- Fixed problem replacing in a rectangular selection where only the final line was changed.
- Fixed inability to select a rectangular area using Alt+Shift+Click at both corners. Bug #2899746.
- Fixed problem moving to start/end of a rectangular selection with left/right key. Bug #2871358.
- Fixed problem with Select All when there's a rectangular selection. Bug #2930488.
- Fixed SCI_LINEDUPLICATE on a rectangular selection to not produce multiple discontinuous selections.
- Virtual space removed when performing delete word left or delete line left. Virtual space converted to real space for delete word right. Preserve virtual space when pressing Delete key. Bug #2882566.
- Fixed problem where Shift+Alt+Down did not move through wrapped lines. Bug #2871749.
- Fixed incorrect background colour when using coloured lines with virtual space. Bug #2914691.
- Fixed failure to display wrap symbol for SC_WRAPVISUALFLAGLOC_END_BY_TEXT. Bug #2936108.
- Fixed blank background colour with EOLFilled style on last line. Bug #2890105.
- Fixed problem in VB lexer with keyword at end of file. Bug #2901239.
- Fixed SciTE bug where double clicking on a tab closed the file.
- Fixed SciTE brace matching commands to only work when the caret is next to the brace, not when it is in virtual space. Bug #2885560.
- Fixed SciTE on Windows Vista to access files in the Program Files directory rather than allow Windows to virtualize access. Bug #2916685.
- Fixed NSIS folder to handle keywords that start with '!'. Bug #2872157.
- Changed linkage of Scintilla_LinkLexers to "C" so that it can be used by clients written in C. Bug #2844718.

### Release 2.01

- Released on 19 August 2009.
- Fix to positioning rectangular paste when viewing line ends.
- Don't insert new lines and indentation for line ends at end of rectangular paste.
- When not in additional selection typing mode, cutting a rectangular selection removes all of the selected text.
- Rectangular selections are copied to the clipboard in document order, not in the order of selection.
- SCI_SETCURRENTPOS and SCI_SETANCHOR work in rectangular mode.
- On GTK+, drag and drop to a later position in the document now drops at the position.
- Fix bug where missing property did not use default value.

### Release 2.0

- Released on 11 August 2009.
- Multiple pieces of text can be selected simultaneously by holding control while dragging the mouse. Typing, backspace and delete may affect all selections together.
- Virtual space allows selecting beyond the last character on a line.
- SciTE on GTK+ path bar is now optional and defaults to off.
- MagikSF lexer recognizes numbers correctly.
- Folding of Python comments and blank lines improved. Bug #210240.
- Bug fixed where background colour of last character in document leaked past that character.
- Crash fixed when adding marker beyond last line in document. Bug #2830307.
- Resource leak fixed in SciTE for Windows when printing fails. Bug #2816524.
- Bug fixed on Windows where the system caret was destroyed during destruction when another window was using the system caret. Bug #2830223.
- Bug fixed where indentation guides were drawn over text when the indentation used a style with a different space width to the default style.
- SciTE bug fixed where box comment added a bare line feed rather than the chosen line end. Bug #2818104.
- Reverted fix that led to wrapping whole document when displaying the first line of the document.
- Export to LaTeX in SciTE fixed to work in more cases and not use as much space. Bug #1286548.
- Bug fixed where EN_CHANGE notification was sent when performing a paste operation in a read-only document. Bug #2825485.
- Refactored code so that Scintilla exposes less of its internal implementation and uses the C++ standard library for some basic collections. Projects that linked to Scintilla's SString or PropSet classes should copy this code from a previous version of Scintilla or from SciTE.

### Release 1.79

- Released on 1 July 2009.
- Memory exhaustion and other exceptions handled by placing an error value into the status property rather than crashing. Scintilla now builds with exception handling enabled and requires exception handling to be enabled.
  This is a major change and application developers should consider how they will deal with Scintilla exhausting memory since Scintilla may not be in a stable state.
- Deprecated APIs removed. The symbols removed are:
  - SCI_SETCARETPOLICY
  - CARET_CENTER
  - CARET_XEVEN
  - CARET_XJUMPS
  - SC_FOLDFLAG_BOX
  - SC_FOLDLEVELBOXHEADERFLAG
  - SC_FOLDLEVELBOXFOOTERFLAG
  - SC_FOLDLEVELCONTRACTED
  - SC_FOLDLEVELUNINDENT
  - SCN_POSCHANGED
  - SCN_CHECKBRACE
  - SCLEX_ASP
  - SCLEX_PHP
- Cocoa platform added.
- Names of struct types in Scintilla.h now start with "Sci_" to avoid possible clashes with platform definitions. Currently, the old names still work but these will be phased out.
- When lines are wrapped, subsequent lines may be indented to match the indent of the initial line, or one more indentation level. Feature #2796119.
- APIs added for finding the character at a point rather than an inter-character position. Feature #2646738.
- A new marker SC_MARK_BACKGROUND_UNDERLINE is drawn in the text area as an underline the full width of the window.
- Batch file lexer understands variables surrounded by '!'.
- CAML lexer also supports SML.
- D lexer handles string and numeric literals more accurately. Feature #2793782.
- Forth lexer is now case-insensitive and better supports numbers like $hex and %binary. Feature #2804894.
- Lisp lexer treats '[', ']', '{', and '}' as balanced delimiters which is common usage. Feature #2794989.
  It treats keyword argument names as being equivalent to symbols. Feature #2794901.
- Pascal lexer bug fixed to prevent hang when 'interface' near beginning of file. Bug #2802863.
- Perl lexer bug fixed where previous lexical states persisted causing "/" special case styling and subroutine prototype styling to not be correct. Bug #2809168.
- XML lexer fixes bug where Unicode entities like '&—' were broken into fragments. Bug #2804760.
- SciTE on GTK+ enables scrolling the tab bar on recent versions of GTK+. Feature #2061821.
- SciTE on Windows allows tab bar tabs to be reordered by drag and drop.
- Unit test script for Scintilla on Windows included with source code.
- User defined menu items are now localized when there is a matching translation.
- Width of icon column of autocompletion lists on GTK+ made more consistent.
- Bug with slicing UTF-8 text into character fragments when there is a sequence of 100 or more 3 byte characters. Bug #2780566.
- Folding bugs introduced in 1.78 fixed. Some of the fix was generic and there was also a specific fix for C++.
- Bug fixed where a rectangular paste was not padding the line with sufficient spaces to align the pasted text.
- Bug fixed with showing all text on each line of multi-line annotations when styling the whole annotation using SCI_ANNOTATIONSETSTYLE. Bug #2789430.

### Release 1.78

- Released on 28 April 2009.
- Annotation lines may be added to each line.
- A text margin may be defined with different text on each line.
- Application actions may be added to the undo history.
- Can query the symbol defined for a marker. An available symbol added for applications to indicate that plugins may allocate a marker.
- Can increase the amount of font ascent and descent.
- COBOL lexer added. Feature #2127406.
- Nimrod lexer added. Feature #2642620.
- PowerPro lexer added. Feature #2195308.
- SML lexer added. Feature #2710950.
- SORCUS Installation file lexer added. Feature #2343375.
- TACL lexer added. Feature #2127406.
- TAL lexer added. Feature #2127406.
- Rewritten Pascal lexer with improved folding and other fixes. Feature #2190650.
- INDIC_ROUNDBOX translucency level can be modified. Feature #2586290.
- C++ lexer treats angle brackets in #include directives as quotes when styling.within.preprocessor. Bug #2551033.
- Inno Setup lexer is sensitive to whether within the [Code] section and handles comments better. Bug #2552973.
- HTML lexer does not go into script mode when script tag is self-closing.
- HTML folder fixed where confused by comments when fold.html.preprocessor off. Bug #2532774.
- Perl lexer fixes problem with string matching caused by line endings. Bug #2648342.
- Progress lexer fixes problem with "last-event:function" phrase. Bug #2483619.
- Properties file lexer extended to handle RFC2822 text when lexer.props.allow.initial.spaces on.
- Python lexer adds options for Python 3 and Cython.
- Shell lexer fixes heredoc problem caused by line endings. Bug #2635257.
- TeX lexer handles comment at end of line correctly. Bug #2698766.
- SciTE retains selection range when performing a replace selection command. Feature #2339160.
- SciTE definition of word characters fixed to match documentation. Bug #2464531.
- SciTE on GTK+ performing Search or Replace when dialog already shown now brings dialog to foreground. Bug #2634224.
- Fixed encoding bug with calltips on GTK+.
- Block caret drawn in correct place on wrapped lines. Bug #2126144.
- Compilation for 64 bit Windows works using MinGW. Bug #2515578.
- Incorrect memory freeing fixed on OS X. Bug #2354098, Bug #2671749.
- SciTE on GTK+ crash fixed on startup when child process exits before initialization complete. Bug #2716987.
- Crash fixed when AutoCompleteGetCurrent called with no active autocompletion.
- Flickering diminished when pressing Tab. Bug #2723006.
- Namespace compilation issues with GTK+ on OS X fixed.
- Increased maximum length of SciTE's Language menu on GTK+ to 100 items. Bug #2528241.
- Fixed incorrect Python lexing for multi-line continued strings. Bug #2450963.

### Release 1.77

- Released on 18 October 2008.
- Direct temporary access to Scintilla's text buffer to allow simple efficient interfacing to libraries like regular expression libraries.
- Scintilla on Windows can interpret keys as Unicode even when a narrow character window with SCI_SETKEYSUNICODE.
- Notification sent when autocompletion cancelled.
- MySQL lexer added.
- Lexer for gettext .po files added.
- Abaqus lexer handles program structure more correctly.
- Assembler lexer works with non-ASCII text.
- C++ lexer allows mixed case doc comment tags.
- CSS lexer updated and works with non-ASCII.
- Diff lexer adds style for changed lines, handles subversion diffs better and fixes styling and folding for lines containing chunk dividers ("---").
- FORTRAN lexer accepts more styles of compiler directive.
- Haskell lexer allows hexadecimal literals.
- HTML lexer improves PHP and JavaScript folding. PHP heredocs, nowdocs, strings and comments processed more accurately. Internet Explorer's non-standard >comment< tag supported. Script recognition in XML can be controlled with lexer.xml.allow.scripts property.
- Lua lexer styles last character correctly.
- Perl lexer update.
- Comment folding implemented for Ruby.
- Better TeX folding.
- Verilog lexer updated.
- Windows Batch file lexer handles %~ and %*.
- YAML lexer allows non-ASCII text.
- SciTE on GTK+ implements "Replace in Buffers" in advanced mode.
- The extender OnBeforeSave method can override the default file saving behaviour by retuning true.
- Window position and recent files list may be saved into the session file.
- Right button press outside the selection moves the caret.
- SciTE load.on.activate works when closing a document reveals a changed document.
- SciTE bug fixed where eol.mode not used for initial buffer.
- SciTE bug fixed where a file could be saved as the same name as another buffer leading to confusing behaviour.
- Fixed display bug for long lines in same style on Windows.
- Fixed SciTE crash when finding matching preprocessor command used on some files.
- Drawing performance improved for files with many blank lines.
- Folding bugs fixed where changing program text produced a decrease in fold level on a fold header line.
- Clearing document style now clears all indicators.
- SciTE's embedded Lua updated to 5.1.4.
- SciTE will compile with versions of GTK+ before 2.8 again.
- SciTE on GTK+ bug fixed where multiple files not opened.
- Bug fixed with SCI_VCHOMEWRAP and SCI_VCHOMEWRAPEXTEND on white last line.
- Regular expression bug fixed where "^[^(]+$" matched empty lines.

### Release 1.76

- Released on 16 March 2008.
- Support for PowerShell.
- Lexer added for Magik.
- Director extension working on GTK+.
- Director extension may set focus to SciTE through "focus:" message on GTK+.
- C++ folder handles final line better in some cases.
- SCI_COPYALLOWLINE added which is similar to SCI_COPY except that if the selection is empty then the line holding the caret is copied. On Windows an extra clipboard format allows pasting this as a whole line before the current selection. This behaviour is compatible with Visual Studio.
- On Windows, the horizontal scroll bar can handle wider files.
- On Windows, a system palette leak was fixed. Should not affect many as palette mode is rarely used.
- Install command on GTK+ no longer tries to set explicit owner.
- Perl lexer handles defined-or operator "//".
- Octave lexer fixes "!=" operator.
- Optimized selection change drawing to not redraw as much when not needed.
- SciTE on GTK+ no longer echoes Lua commands so is same as on Windows.
- Automatic vertical scrolling limited to one line at a time so is not too fast.
- Crash fixed when line states set beyond end of line states. This occurred when lexers did not set a line state for each line.
- Crash in SciTE on Windows fixed when search for 513 character string fails.
- SciTE disables translucent features on Windows 9x due to crashes reported when using translucency.
- Bug fixed where whitespace background was not seen on wrapped lines.

### Release 1.75

- Released on 22 November 2007.
- Some WordList and PropSet functionality moved from Scintilla to SciTE. Projects that link to Scintilla's code for these classes may need to copy code from SciTE.
- Borland C++ can no longer build Scintilla.
- Invalid bytes in UTF-8 mode are displayed as hex blobs. This also prevents crashes due to passing invalid UTF-8 to platform calls.
- Indentation guides enhanced to be visible on completely empty lines when possible.
- The horizontal scroll bar may grow to match the widest line displayed.
- Allow autocomplete pop ups to appear outside client rectangle in some cases.
- When line state changed, SC_MOD_CHANGELINESTATE modification notification sent and margin redrawn.
- SciTE scripts can access the menu command values IDM_*.
- SciTE's statement.end property has been implemented again.
- SciTE shows paths and matches in different styles for Find In Files.
- Incremental search in SciTE for Windows is modeless to make it easier to exit.
- Folding performance improved.
- SciTE for GTK+ now includes a Browse button in the Find In Files dialog.
- On Windows versions that support Unicode well, Scintilla is a wide character window which allows input for some less common languages like Armenian, Devanagari, Tamil, and Georgian. To fully benefit, applications should use wide character calls.
- Lua function names are exported from SciTE to allow some extension libraries to work.
- Lexers added for Abaqus, Ansys APDL, Asymptote, and R.
- SCI_DELWORDRIGHTEND added for closer compatibility with GTK+ entry widget.
- The styling buffer may now use all 8 bits in each byte for lexical states with 0 bits for indicators.
- Multiple characters may be set for SciTE's calltip.<lexer>.parameters.start property.
- Bash lexer handles octal literals.
- C++/JavaScript lexer recognizes regex literals in more situations.
- Haskell lexer fixed for quoted strings.
- HTML/XML lexer does not notice XML indicator if there is non-whitespace between the "<?" and "XML". ASP problem fixed where </ is used inside a comment.
- Error messages from Lua 5.1 are recognized.
- Folding implemented for Metapost.
- Perl lexer enhanced for handling minus-prefixed barewords, underscores in numeric literals and vector/version strings, ^D and ^Z similar to __END__, subroutine prototypes as a new lexical class, formats and format blocks as new lexical classes, and '/' suffixed keywords and barewords.
- Python lexer styles all of a decorator in the decorator style rather than just the name.
- YAML lexer styles colons as operators.
- Fixed SciTE bug where undo would group together multiple separate modifications.
- Bug fixed where setting background colour of calltip failed.
- SciTE allows wildcard suffixes for file pattern based properties.
- SciTE on GTK+ bug fixed where user not prompted to save untitled buffer.
- SciTE bug fixed where property values from one file were not seen by lower priority files.
- Bug fixed when showing selection with a foreground colour change which highlighted an incorrect range in some positions.
- Cut now invokes SCN_MODIFYATTEMPTRO notification.
- Bug fixed where caret not shown at beginning of wrapped lines. Caret made visible in some cases after wrapping and scroll bar updated after wrapping.
- Modern indicators now work on wrapped lines.
- Some crashes fixed for 64-bit GTK+.
- On GTK+ clipboard features improved for VMWare tools copy and paste. SciTE exports the clipboard more consistently on shut down.

### Release 1.74

- Released on 18 June 2007.
- OS X support.
- Indicators changed to be a separate data structure allowing more indicators. Storing indicators in high bits of styling bytes is deprecated and will be removed in the next version.
- Unicode support extended to all Unicode characters not just the Basic Multilingual Plane.
- Performance improved on wide lines by breaking long runs in a single style into shorter segments.
- Performance improved by caching layout of short text segments.
- SciTE includes Lua 5.1.
- Caret may be displayed as a block.
- Lexer added for GAP.
- Lexer added for PL/M.
- Lexer added for Progress.
- SciTE session files have changed format to be like other SciTE .properties files and now use the extension .session. Bookmarks and folds may optionally be saved in session files. Session files created with previous versions of SciTE will not load into this version.
- SciTE's extension and scripting interfaces add OnKey, OnDwellStart, and OnClose methods.
- On GTK+, copying to the clipboard does not include the text/urilist type since this caused problems when pasting into Open Office.
- On GTK+, Scintilla defaults caret blink rate to platform preference.
- Dragging does not start until the mouse has been dragged a certain amount. This stops spurious drags when just clicking inside the selection.
- Bug fixed where brace highlight not shown when caret line background set.
- Bug fixed in Ruby lexer where out of bounds access could occur.
- Bug fixed in XML folding where tags were not being folded because they are singletons in HTML.
- Bug fixed when many font names used.
- Layout bug fixed on GTK+ where fonts have ligatures available.
- Bug fixed with SCI_LINETRANSPOSE on a blank line.
- SciTE hang fixed when using UNC path with directory properties feature.
- Bug on Windows fixed by examining dropped text for Unicode even in non-Unicode mode so it can work when source only provides Unicode or when using an encoding different from the system default.
- SciTE bug on GTK+ fixed where Stop Executing did not work when more than a single process started.
- SciTE bug on GTK+ fixed where mouse wheel was not switching between buffers.
- Minor line end fix to PostScript lexer.

### Release 1.73

- Released on 31 March 2007.
- SciTE adds a Directory properties file to configure behaviour for files in a directory and its subdirectories.
- Style changes may be made during text modification events.
- Regular expressions recognize \d, \D, \s, \S, \w, \W, and \xHH.
- Support for cmake language added.
- More Scintilla properties can be queried.
- Edge line drawn under text.
- A savesession command added to SciTE director interface.
- SciTE File | Encoding menu item names changed to be less confusing.
- SciTE on GTK+ dialog buttons reordered to follow guidelines.
- SciTE on GTK+ removed GTK+ 1.x compatible file dialog code.
- SciTE on GTK+ recognizes key names KeypadMultiply and KeypadDivide.
- Background colour of line wrapping visual flag changed to STYLE_DEFAULT.
- Makefile lexing enhanced for ':=' operator and when lines start with tab.
- TADS3 lexer and folder improved.
- SCN_DOUBLECLICK notification may set SCI_SHIFT, SCI_CTRL, and SCI_ALT flags on modifiers field.
- Slow folding of large constructs in Python fixed.
- MSSQL folding fixed to be case-insensitive and fold at more keywords.
- SciTE's brace matching works better for HTML.
- Determining API list items checks for specified parameters start character before default '('.
- Hang fixed in HTML lexer.
- Bug fixed in with LineTranspose command where markers could move to different line.
- Memory released when buffer completely emptied.
- If translucency not available on Windows, draw rectangular outline instead.
- Bash lexer handles "-x" in "--x-includes..." better.
- AutoIt3 lexer fixes string followed by '+'.
- LinesJoin fixed where it stopped early due to not adjusting for inserted spaces..
- StutteredPageDown fixed when lines wrapped.
- FormatRange fixed to not double count line number width which could lead to a large space.
- SciTE Export As PDF and Latex commands fixed to format floating point numbers with '.' even in locales that use ','.
- SciTE bug fixed where File | New could produce buffer with contents of previous file when using read-only mode.
- SciTE retains current scroll position when switching buffers and fold.on.open set.
- SciTE crash fixed where '*' used to invoke parameters dialog.
- SciTE bugs when writing large UCS-2 files fixed.
- Bug fixed when scrolling inside a SCN_PAINTED event by invalidating window rather than trying to perform synchronous painting.
- SciTE for GTK+ View | Full Screen works on recent versions of GTK+.
- SciTE for Windows enables and disables toolbar commands correctly.

### Release 1.72

- Released on 15 January 2007.
- Performance of per-line data improved.
- SC_STARTACTION flag set on the first modification notification in an undo transaction to help synchronize the container's undo stack with Scintilla's.
- On GTK+ drag and drop defaults to move rather than copy.
- Scintilla supports extending appearance of selection to right hand margin.
- Incremental search available on GTK+.
- SciTE Indentation Settings dialog available on GTK+ and adds a "Convert" button.
- Find in Files can optionally ignore binary files or directories that start with ".".
- Lexer added for "D" language.
- Export as HTML shows folding with underline lines and +/- symbols.
- Ruby lexer interprets interpolated strings as expressions.
- Lua lexer fixes some cases of numeric literals.
- C++ folder fixes bug with "@" in doc comments.
- NSIS folder handles !if and related commands.
- Inno setup lexer adds styling for single and double quoted strings.
- Matlab lexer handles backslashes in string literals correctly.
- HTML lexer fixed to allow "?>" in comments in Basic script.
- Added key codes for Windows key and Menu key.
- Lua script method scite.MenuCommand(x) performs a menu command.
- SciTE bug fixed with box comment command near start of file setting selection to end of file.
- SciTE on GTK+, fixed loop that occurred with automatic loading for an unreadable file.
- SciTE asks whether to save files when Windows shuts down.
- Save Session on Windows now defaults the extension to "ses".
- Bug fixed with single character keywords.
- Fixed infinite loop for SCI_GETCOLUMN for position beyond end of document.
- Fixed failure to accept typing on Solaris/GTK+ when using default ISO-8859-1 encoding.
- Fixed warning from Lua in SciTE when creating a new buffer when already have maximum number of buffers open.
- Crash fixed with "%%" at end of batch file.

### Release 1.71

- Released on 21 August 2006.
- Double click notification includes line and position.
- VB lexer bugs fixed for preprocessor directive below a comment or some other states and to use string not closed style back to the starting quote when there are internal doubled quotes.
- C++ lexer allows identifiers to contain '$' and non-ASCII characters such as UTF-8. The '$' character can be disallowed with lexer.cpp.allow.dollars=0.
- Perl lexer allows UTF-8 identifiers and has some other small improvements.
- SciTE's $(CurrentWord) uses word.characters.<filepattern> to define the word rather than a hardcoded list of word characters.
- SciTE Export as HTML adds encoding information for UTF-8 file and fixes DOCTYPE.
- SciTE session and .recent files default to the user properties directory rather than global properties directory.
- Left and right scroll events handled correctly on GTK+ and horizontal scroll bar has more sensible distances for page and arrow clicks.
- SciTE on GTK+ tab bar fixed to work on recent versions of GTK+.
- On GTK+, if the approximate character set conversion is unavailable, a second attempt is made without approximations. This may allow keyboard input and paste to work on older systems.
- SciTE on GTK+ can redefine the Insert key.
- SciTE scripting interface bug fixed where some string properties could not be changed.

### Release 1.70

- Released on 20 June 2006.
- On GTK+, character set conversion is performed using an option that allows approximate conversions rather than failures when a character can not be converted. This may lead to similar characters being inserted or when no similar character is available a '?' may be inserted.
- On GTK+, the internationalized IM (Input Method) feature is used for all typed input for all character sets.
- Scintilla has new margin types SC_MARGIN_BACK and SC_MARGIN_FORE that use the default style's background and foreground colours (normally white and black) as the background to the margin.
- Scintilla/GTK+ allows file drops on Windows when drop is of type DROPFILES_DND as well as text/uri-list.
- Code page can only be set to one of the listed valid values.
- Text wrapping fixed for cases where insertion was not wide enough to trigger wrapping before being styled but was after styling.
- SciTE find marks are removed before printing or exporting to avoid producing incorrect styles.

### Release 1.69

- Released on 29 May 2006.
- SciTE supports z-order based buffer switching on Ctrl+Tab.
- Translucent support for selection and whole line markers.
- SciTE may have per-language abbreviations files.
- Support for Spice language.
- On GTK+ autocompletion lists are optimized and use correct selection colours.
- On GTK+ the URI data type is preferred in drag and drop so that applications will see files dragged from the shell rather than dragging the text of the file name into the document.
- Increased number of margins to 5.
- Basic lexer allows include directive $include: "file name".
- SQL lexer no longer bases folding on indentation.
- Line ends are transformed when copied to clipboard on Windows/GTK+2 as well as Windows/GTK+ 1.
- Lexing code masks off the indicator bits on the start style before calling the lexer to avoid confusing the lexer when an application has used an indicator.
- SciTE savebefore:yes only saves the file when it has been changed.
- SciTE adds output.initial.hide setting to allow setting the size of the output pane without it showing initially.
- SciTE on Windows Go To dialog allows line number with more digits.
- Bug in HTML lexer fixed where a segment of PHP could switch scripting language based on earlier text on that line.
- Memory bug fixed when freeing regions on GTK+. Other minor bugs fixed on GTK+.
- Deprecated GTK+ calls in Scintilla replaced with current calls.
- Fixed a SciTE bug where closing the final buffer, if read-only, left the text present in an untitled buffer.
- Bug fixed in bash lexer that prevented folding.
- Crash fixed in bash lexer when backslash at end of file.
- Crash on recent releases of GTK+ 2.x avoided by changing default font from X core font to Pango font "!Sans".
- Fix for SciTE properties files where multiline properties continued over completely blank lines.
- Bug fixed in SciTE/GTK+ director interface where more data available than buffer size.
- Minor visual fixes to SciTE splitter on GTK+.

### Release 1.68

- Released on 9 March 2006.
- Translucent drawing implemented for caret line and box indicators.
- Lexer specifically for TCL is much more accurate than reusing C++ lexer.
- Support for Inno Setup scripts.
- Support for Opal language.
- Calltips may use a new style, STYLE_CALLTIP which allows choosing a different font for calltips.
- Python lexer styles comments on decorators.
- HTML lexer refined handling of "?>" and "%>" within server side scripts.
- Batch file lexer improved.
- Eiffel lexer doesn't treat '.' as a name character.
- Lua lexer handles length operator, #, and hex literals.
- Properties file lexer has separate style for keys.
- PL/SQL folding improved.
- SciTE Replace dialog always searches in forwards direction.
- SciTE can detect language of file from initial #! line.
- SciTE on GTK+ supports output.scroll=2 setting.
- SciTE can perform an import a properties file from the command line.
- Set of word characters used for regular expression \< and \>.
- Bug fixed with SCI_COPYTEXT stopping too early.
- Bug fixed with splitting lines so that all lines are split.
- SciTE calls OnSwitchFile when closing one buffer causes a switch to another.
- SciTE bug fixed where properties were being reevaluated without good reason after running a macro.
- Crash fixed when clearing document with some lines contracted in word wrap mode.
- Palette expands as more entries are needed.
- SCI_POSITIONFROMPOINT returns more reasonable value when close to last text on a line.
- On Windows, long pieces of text may be drawn in segments if they fail to draw as a whole.
- Bug fixed with bad drawing when some visual changes made inside SCN_UPDATEUI notification.
- SciTE bug fixed with groupundo setting.

### Release 1.67

- Released on 17 December 2005.
- Scintilla checks the paint region more accurately when seeing if an area is being repainted. Platform layer implementations may need to change for this to take effect. This fixes some drawing and styling bugs. Also optimized some parts of marker code to only redraw the line of the marker rather than whole of the margin.
- Quoted identifier style for SQL. SQL folding performed more simply.
- Ruby lexer improved to better handle here documents and non-ASCII characters.
- Lua lexer supports long string and block comment syntax from Lua 5.1.
- Bash lexer handles here documents better.
- JavaScript lexing recognizes regular expressions more accurately and includes flag characters in the regular expression style. This is both in JavaScript files and when JavaScript is embedded in HTML.
- Scintilla API provided to reveal how many style bits are needed for the current lexer.
- Selection duplicate added.
- Scintilla API for adding a set of markers to a line.
- DBCS encodings work on Windows 9x.
- Convention defined for property names to be used by lexers and folders so they can be automatically discovered and forwarded from containers.
- Default bookmark in SciTE changed to a blue sphere image.
- SciTE stores the time of last asking for a save separately for each buffer which fixes bugs with automatic reloading.
- On Windows, pasted text has line ends converted to current preference. GTK+ already did this.
- Kid template language better handled by HTML lexer by finishing ASP Python mode when a ?> is found.
- SciTE counts number of characters in a rectangular selection correctly.
- 64-bit compatibility improved. One change that may affect user code is that the notification message header changed to include a pointer-sized id field to match the current Windows definition.
- Empty ranges can no longer be dragged.
- Crash fixed when calls made that use layout inside the painted notification.
- Bug fixed where Scintilla created pixmap buffers that were too large leading to failures when many instances used.
- SciTE sets the directory of a new file to the directory of the currently active file.
- SciTE allows choosing a code page for the output pane.
- SciTE HTML exporter no longer honours monospaced font setting.
- Line layout cache in page mode caches the line of the caret. An assertion is now used to ensure that the layout reentrancy problem that caused this is easier to find.
- Speed optimized for long lines and lines containing many control characters.
- Bug fixed in brace matching in DBCS files where byte inside character is same as brace.
- Indent command does not indent empty lines.
- SciTE bug fixed for commands that operate on files with empty extensions.
- SciTE bug fixed where monospaced option was copied for subsequently opened files.
- SciTE on Windows bug fixed in the display of a non-ASCII search string which can not be found.
- Bugs fixed with nested calls displaying a new calltip while one is already displayed.
- Bug fixed when styling PHP strings.
- Bug fixed when styling C++ continued preprocessor lines.
- SciTE bug fixed where opening file from recently used list reset choice of language.
- SciTE bug fixed when compiled with NO_EXTENSIONS and closing one file closes the application.
- SciTE crash fixed for error messages that look like Lua messages but aren't in the same order.
- Remaining fold box support deprecated. The symbols SC_FOLDLEVELBOXHEADERFLAG, SC_FOLDLEVELBOXFOOTERFLAG, SC_FOLDLEVELCONTRACTED, SC_FOLDLEVELUNINDENT, and SC_FOLDFLAG_BOX are deprecated.

### Release 1.66

- Released on 26 August 2005.
- New, more ambitious Ruby lexer.
- SciTE Find in Files dialog has options for matching case and whole words which are enabled when the internal find command is used.
- SciTE output pane can display automatic completion after "$(" typed. An initial ">" on a line is ignored when Enter pressed.
- C++ lexer recognizes keywords within line doc comments. It continues styles over line end characters more consistently so that eolfilled style can be used for preprocessor lines and line comments.
- VB lexer improves handling of file numbers and date literals.
- Lua folder handles repeat until, nested comments and nested strings.
- POV lexer improves handling of comment lines.
- AU3 lexer and folder updated. COMOBJ style added.
- Bug fixed with text display on GTK+ with Pango 1.8.
- Caret painting avoided when not focused.
- SciTE on GTK+ handles file names used to reference properties as case-sensitive.
- SciTE on GTK+ Save As and Export commands set the file name field. On GTK+ the Export commands modify the file name in the same way as on Windows.
- Fixed SciTE problem where confirmation was not displaying when closing a file where all contents had been deleted.
- Middle click on SciTE tab now closes correct buffer on Windows when tool bar is visible.
- SciTE bugs fixed where files contained in directory that includes '.' character.
- SciTE bug fixed where import in user options was reading file from directory of global options.
- SciTE calltip bug fixed where single line calltips had arrow displayed incorrectly.
- SciTE folding bug fixed where empty lines were shown for no reason.
- Bug fixed where 2 byte per pixel XPM images caused crash although they are still not displayed.
- Autocompletion list size tweaked.

### Release 1.65

- Released on 1 August 2005.
- FreeBasic support.
- SciTE on Windows handles command line arguments "-" (read standard input into buffer), "--" (read standard input into output pane) and "-@" (read file names from standard input and open each).
- SciTE includes a simple implementation of Find in Files which is used if no find.command is set.
- SciTE can close tabs with a mouse middle click.
- SciTE includes a save.all.for.build setting.
- Folder for MSSQL.
- Batch file lexer understands more of the syntax and the behaviour of built in commands.
- Perl lexer handles here docs better; disambiguates barewords, quote-like delimiters, and repetition operators; handles Pods after __END__; recognizes numbers better; and handles some typeglob special variables.
- Lisp adds more lexical states.
- PHP allows spaces after <<<.
- TADS3 has a simpler set of states and recognizes identifiers.
- Avenue elseif folds better.
- Errorlist lexer treats lines starting with '+++' and '---' as separate styles from '+' and '-' as they indicate file names in diffs.
- SciTE error recognizer handles file paths in extra explanatory lines from MSVC and in '+++' and '---' lines from diff.
- Bugs fixed in SciTE and Scintilla folding behaviour when text pasted before folded text caused unnecessary unfolding and cutting text could lead to text being irretrievably hidden.
- SciTE on Windows uses correct font for dialogs and better font for tab bar allowing better localization
- When Windows is used with a secondary monitor before the primary monitor, autocompletion lists are not forced onto the primary monitor.
- Scintilla calltip bug fixed where down arrow setting wrong value in notification if not in first line. SciTE bug fixed where second arrow only shown on multiple line calltip and was therefore misinterpreting the notification value.
- Lexers will no longer be re-entered recursively during, for example, fold level setting.
- Undo of typing in overwrite mode undoes one character at a time rather than requiring a removal and addition step for each character.
- EM_EXSETSEL(0,-1) fixed.
- Bug fixed where part of a rectangular selection was not shown as selected.
- Autocomplete window size fixed.

### Release 1.64

- Released on 6 June 2005.
- TADS3 support
- Smalltalk support.
- Rebol support.
- Flagship (Clipper / XBase) support.
- CSound support.
- SQL enhanced to support SQL*Plus.
- SC_MARK_FULLRECT margin marker fills the whole marker margin for marked lines with a colour.
- Performance improved for some large undo and redo operations and modification flags added in notifications.
- SciTE adds command equivalents for fold margin mouse actions.
- SciTE adds OnUpdateUI to set of events that can be handled by a Lua script.
- Properties set in Scintilla can be read.
- GTK+ SciTE exit confirmation adds Cancel button.
- More accurate lexing of numbers in PHP and Caml.
- Perl can fold POD and package sections. POD verbatim section style. Globbing syntax recognized better.
- Context menu moved slightly on GTK+ so that it will be under the mouse and will stay open if just clicked rather than held.
- Rectangular selection paste works the same whichever direction the selection was dragged in.
- EncodedFromUTF8 handles -1 length argument as documented.
- Undo and redo can cause SCN_MODIFYATTEMPTRO notifications.
- Indicators display correctly when they start at the second character on a line.
- SciTE Export As HTML uses standards compliant CSS.
- SciTE automatic indentation handles keywords for indentation better.
- SciTE fold.comment.python property removed as does not work.
- Fixed problem with character set conversion when pasting on GTK+.
- SciTE default character set changed from ANSI_CHARSET to DEFAULT_CHARSET.
- Fixed crash when creating empty autocompletion list.
- Autocomplete window size made larger under some conditions to make truncation less common.
- Bug fixed where changing case of a selection did not affect initial character of lines in multi-byte encodings.
- Bug fixed where rectangular selection not displayed after Alt+Shift+Click.

### Release 1.63

- Released on 4 April 2005.
- Autocompletion on Windows changed to use pop up window, be faster, allow choice of maximum width and height, and to highlight only the text of the selected item rather than both the text and icon if any.
- Extra items can be added to the context menu in SciTE.
- Character wrap mode in Scintilla helps East Asian languages.
- Lexer added for Haskell.
- Objective Caml support.
- BlitzBasic and PureBasic support.
- CSS support updated to handle CSS2.
- C++ lexer is more selective about document comment keywords.
- AutoIt 3 lexer improved.
- Lua lexer styles end of line characters on comment and preprocessor lines so that the eolfilled style can be applied to them.
- NSIS support updated for line continuations, box comments, SectionGroup and PageEx, and with more up-to-date properties.
- Clarion lexer updated to perform folding and have more styles.
- SQL lexer gains second set of keywords.
- Errorlist lexer recognizes Borland Delphi error messages.
- Method added for determining number of visual lines occupied by a document line due to wrapping.
- Sticky caret mode does not modify the preferred caret x position when typing and may be useful for typing columns of text.
- Dwell end notification sent when scroll occurs.
- On GTK+, Scintilla requisition height is screen height rather than large fixed value.
- Case insensitive autocompletion prefers exact case match.
- SCI_PARADOWN and SCI_PARAUP treat lines containing only white space as empty and handle text hidden by folding.
- Scintilla on Windows supports WM_PRINTCLIENT although there are some limitations.
- SCN_AUTOCSELECTION notification sent when user selects from autoselection list.
- SciTE's standard properties file sets buffers to 10, uses Pango fonts on GTK+ and has dropped several languages to make the menu fit on screen.
- SciTE's encoding cookie detection loosened so that common XML files will load in UTF-8 if that is their declared encoding.
- SciTE on GTK+ changes menus and toolbars to not be detachable unless turned on with a property. Menus no longer tear off. The toolbar may be set to use the default theme icons rather than SciTE's set. Changed key for View | End of Line because of a conflict. Language menu can contain more items.
- SciTE on GTK+ 2.x allows the height and width of the file open file chooser to be set, for the show hidden files check box to be set from an option and for it to be opened in the directory of the current file explicitly. Enter key works in save chooser.
- Scintilla lexers should no longer see bits in style bytes that are outside the set they modify so should be able to correctly lex documents where the container has used indicators.
- SciTE no longer asks to save before performing a revert.
- SciTE director interface adds a reloadproperties command to reload properties from files.
- Allow build on CYGWIN platform.
- Allow use from LccWin compiler.
- SCI_COLOURISE for SCLEX_CONTAINER causes a SCN_STYLENEEDED notification.
- Bugs fixed in lexing of HTML/ASP/JScript.
- Fix for folding becoming confused.
- On Windows, fixes for Japanese Input Method Editor and for 8 bit Katakana characters.
- Fixed buffer size bug avoided when typing long words by making buffer bigger.
- Undo after automatic indentation more sensible.
- SciTE menus on GTK+ uses Shift and Ctrl rather than old style abbreviations.
- SciTE full screen mode on Windows calculates size more correctly.
- SciTE on Windows menus work better with skinning applications.
- Searching bugs fixed.
- Colours reallocated when changing image using SCI_REGISTERIMAGE.
- Caret stays visible when Enter held down.
- Undo of automatic indentation more reasonable.
- High processor usage fixed in background wrapping under some circumstances.
- Crashing bug fixed on AMD64.
- SciTE crashing bug fixed when position.height or position.width not set.
- Crashing bug on GTK+ fixed when setting cursor and window is NULL.
- Crashing bug on GTK+ preedit window fixed.
- SciTE crashing bug fixed in incremental search on Windows ME.
- SciTE on Windows has a optional find and replace dialogs that can search through all buffers and search within a particular style number.

### Release 1.62

- Released on 31 October 2004.
- Lexer added for ASN.1.
- Lexer added for VHDL.
- On Windows, an invisible system caret is used to allow screen readers to determine where the caret is. The visible caret is still drawn by the painting code.
- On GTK+, Scintilla has methods to read the target as UTF-8 and to convert a string from UTF-8 to the document encoding. This eases integration with containers that use the UTF-8 encoding which is the API encoding for GTK+ 2.
- SciTE on GTK+2 and Windows NT/2000/XP allows search and replace of Unicode text.
- SciTE calltips allow setting the characters used to start and end parameter lists and to separate parameters.
- FindColumn method converts a line and column into a position, taking into account tabs and multi-byte characters.
- On Windows, when Scintilla copies text to the clipboard as Unicode, it avoids adding an ANSI copy as the system will automatically convert as required in a context-sensitive manner.
- SciTE indent.auto setting automatically determines indent.size and use.tabs from document contents.
- SciTE defines a CurrentMessage property that holds the most recently selected output pane message.
- SciTE Lua scripting enhanced with
  - A Lua table called 'buffer' is associated with each buffer and can be used to maintain buffer-specific state.
  - A 'scite' object allows interaction with the application such as opening files from script.
  - Dynamic properties can be reset by assigning nil to a given key in the props table.
  - An 'OnClear' event fires whenever properties and extension scripts are about to be reloaded.
  - On Windows, loadlib is enabled and can be used to access Lua binary modules / DLLs.
- SciTE Find in Files on Windows can be used in a modeless way and gains a '..' button to move up to the parent directory. It is also wider so that longer paths can be seen.
- Close buttons added to dialogs in SciTE on Windows.
- SciTE on GTK+ 2 has a "hidden files" check box in file open dialog.
- SciTE use.monospaced setting removed. More information in the FAQ.
- APDL lexer updated with more lexical classes
- AutoIt3 lexer updated.
- Ada lexer fixed to support non-ASCII text.
- Cpp lexer now only matches exactly three slashes as starting a doc-comment so that lines of slashes are seen as a normal comment. Line ending characters are appear in default style on preprocessor and single line comment lines.
- CSS lexer updated to support CSS2 including second set of keywords.
- Errorlist lexer now understands Java stack trace lines.
- SciTE's handling of HTML Tidy messages jumps to column as well as line indicated.
- Lisp lexer allows multiline strings.
- Lua lexer treats .. as an operator when between identifiers.
- PHP lexer handles 'e' in numerical literals.
- PowerBasic lexer updated for macros and optimized.
- Properties file folder changed to leave lines before a header at the base level and thus avoid a vertical line when using connected folding symbols.
- GTK+ on Windows version uses Alt for rectangular selection to be compatible with platform convention.
- SciTE abbreviations file moved from system directory to user directory so each user can have separate abbreviations.
- SciTE on GTK+ has improved .desktop file and make install support that may lead to better integration with system shell.
- Disabling of themed background drawing on GTK+ extended to all cases.
- SciTE date formatting on Windows performed with the user setting rather than the system setting.
- GTK+ 2 redraw while scrolling fixed.
- Recursive property definitions are safer, avoiding expansion when detected.
- SciTE thread synchronization for scripts no longer uses HWND_MESSAGE so is compatible with older versions of Windows. Other Lua scripting bugs fixed.
- SciTE on Windows localization of menu accelerators changed to be compatible with alternative UI themes.
- SciTE on Windows full screen mode now fits better when menu different height to title bar height.
- SC_MARK_EMPTY marker is now invisible and does not change the background colour.
- Bug fixed in HTML lexer to allow use of <?xml in strings in scripts without triggering xml mode.
- Bug fixed in SciTE abbreviation expansion that could break indentation or crash.
- Bug fixed when searching for a whole word string that ends one character before end of document.
- Drawing bug fixed when indicators drawn on wrapped lines.
- Bug fixed when double clicking a hotspot.
- Bug fixed where autocompletion would remove typed text if no match found.
- Bug fixed where display does not scroll when inserting in long wrapped line.
- Bug fixed where SCI_MARKERDELETEALL would only remove one of the markers on a line that contained multiple markers with the same number.
- Bug fixed where markers would move when converting line endings.
- Bug fixed where SCI_LINEENDWRAP would move too far when line ends are visible.
- Bugs fixed where calltips with unicode or other non-ASCII text would display incorrectly.
- Bug fixed in determining if at save point after undoing from save point and then performing changes.
- Bug fixed on GTK+ using unsupported code pages where extraneous text could be drawn.
- Bug fixed in drag and drop code on Windows where dragging from SciTE to Firefox could hang both applications.
- Crashing bug fixed on GTK+ when no font allocation succeeds.
- Crashing bug fixed when autocompleting word longer than 1000 characters.
- SciTE crashing bug fixed when both Find and Replace dialogs shown by disallowing this situation.

### Release 1.61

- Released on 29 May 2004.
- Improvements to selection handling on GTK+.
- SciTE on GTK+ 2.4 uses the improved file chooser which allows file extension filters, multiple selection, and remembers favourite directories.
- SciTE Load Session and Save Session commands available on GTK+.
- SciTE lists Lua Startup Script in Options menu when loaded.
- In SciTE, OnUserListSelection can be implemented in Lua.
- SciTE on Windows has a context menu on the file tabs.
- SQL lexer allows '#' comments and optionally '\' quoting inside strings.
- Mssql lexer improved.
- AutoIt3 lexer updated.
- Perl lexer recognizes regular expression use better.
- Errorlist lexer understands Lua tracebacks and copes with findstr output for file names that end with digits.
- Drawing of lines on GTK+ improved and made more like Windows without final point.
- SciTE on GTK+ uses a high resolution window icon.
- SciTE can be set to warn before loading files larger than a particular size.
- SciTE Lua scripting bugs fixed included a crashing bug when using an undefined function name that would go before first actual name.
- SciTE bug fixed where a modified buffer was not saved if it was the last buffer and was not current when the New command used.
- SciTE monofont mode no longer affects line numbers.
- Crashing bug in SciTE avoided by not allowing both the Find and Replace dialogs to be visible at one time.
- Crashing bug in SciTE fixed when Lua scripts were being run concurrently.
- Bug fixed that caused incorrect line number width in SciTE.
- PHP folding bug fixed.
- Regression fixed when setting word characters to not include some of the standard word characters.

### Release 1.60

- Released on 1 May 2004.
- SciTE can be scripted using the Lua programming language.
- command.mode is a better way to specify tool command options in SciTE.
- Continuation markers can be displayed so that you can see which lines are wrapped.
- Lexer for Gui4Cli language.
- Lexer for Kix language.
- Lexer for Specman E language.
- Lexer for AutoIt3 language.
- Lexer for APDL language.
- Lexer for Bash language. Also reasonable for other Unix shells.
- SciTE can load lexers implemented in external shared libraries.
- Perl treats "." not as part of an identifier and interprets '/' and '->' correctly in more circumstances.
- PHP recognizes variables within strings.
- NSIS has properties "nsis.uservars" and "nsis.ignorecase".
- MSSQL lexer adds keyword list for operators and stored procedures, defines '(', ')', and ',' as operators and changes some other details.
- Input method preedit window on GTK+ 2 may support some Asian languages.
- Platform interface adds an extra platform-specific flag to Font::Create. Used on wxWidgets to choose antialiased text display but may be used for any task that a platform needs.
- OnBeforeSave method added to Extension interface.
- Scintilla methods that return strings can be called with a NULL pointer to find out how long the string should be.
- Visual Studio .NET project file now in VS .NET 2003 format so can not be used directly in VS .NET 2002.
- Scintilla can be built with GTK+ 2 on Windows.
- Updated RPM spec for SciTE on GTK+.
- GTK+ makefile for SciTE allows selection of destination directory, creates destination directories and sets file modes and owners better.
- Tab indents now go to next tab multiple rather than add tab size.
- SciTE abbreviations now use the longest possible match rather than the shortest.
- Autocompletion does not remove prefix when actioned with no choice selected.
- Autocompletion cancels when moving beyond the start position, not at the start position.
- SciTE now shows only calltips for functions that match exactly, not those that match as a prefix.
- SciTE can repair box comment sections where some lines were added without the box comment middle line prefix.
- Alt+ works in user.shortcuts on Windows.
- SciTE on GTK+ enables replace in selection for rectangular selections.
- Key bindings for command.shortcut implemented in a way that doesn't break when the menus are localized.
- Drawing of background on GTK+ faster as theme drawing disabled.
- On GTK+, calltips are moved back onto the screen if they extend beyond the screen bounds.
- On Windows, the Scintilla object is destroyed on WM_NCDESTROY rather than WM_DESTROY which arrives earlier. This fixes some problems when Scintilla was subclassed.
- The zorder switching feature removed due to number of crashing bugs.
- Code for XPM images made more robust.
- Bug fixed with primary selection on GTK+.
- On GTK+ 2, copied or cut text can still be pasted after the Scintilla widget is destroyed.
- Styling change not visible problem fixed when line was cached.
- Bug in SciTE on Windows fixed where clipboard commands stopped working.
- Crashing bugs in display fixed in line layout cache.
- Crashing bug may be fixed on AMD64 processor on GTK+.
- Rare hanging crash fixed in Python lexer.
- Display bugs fixed with DBCS characters on GTK+.
- Autocompletion lists on GTK+ 2 are not sorted by the ListModel as the contents are sorted correctly by Scintilla.
- SciTE fixed to not open extra untitled buffers with check.if.already.open.
- Sizing bug fixed on GTK+ when window resized while unmapped.
- Text drawing crashing bug fixed on GTK+ with non-Pango fonts and long strings.
- Fixed some issues if characters are unsigned.
- Fixes in NSIS support.

### Release 1.59

- Released on 19 February 2004.
- SciTE Options and Language menus reduced in length by commenting out some languages. Languages can be enabled by editing the global properties file.
- Verilog language supported.
- Lexer for Microsoft dialect of SQL. SciTE properties file available from extras page.
- Perl lexer disambiguates '/' better.
- NSIS lexer improved with a lexical class for numbers, option for ignoring case of keywords, and folds only occurring when folding keyword first on line.
- PowerBasic lexer improved with styles for constants and assembler and folding improvements.
- On GTK+, input method support only invoked for Asian languages and not European languages as the old European keyboard code works better.
- Scintilla can be requested to allocate a certain amount and so avoid repeated reallocations and memory inefficiencies. SciTE uses this and so should require less memory.
- SciTE's "toggle current fold" works when invoked on child line as well as fold header.
- SciTE output pane scrolling can be set to not scroll back to start after completion of command.
- SciTE has a $(SessionPath) property.
- SciTE on Windows can use VK_* codes for keys in user.shortcuts.
- Stack overwrite bug fixed in SciTE's command to move to the end of a preprocessor conditional.
- Bug fixed where vertical selection appeared to select a different set of characters then would be used by, for example, a copy.
- SciTE memory leak fixed in fold state remembering.
- Bug fixed where changing the style of some text outside the standard StyleNeeded notification would not be visible.
- On GTK+ 2 g_iconv is used in preference to iconv, as it is provided by GTK+ so should avoid problems finding the iconv library.
- On GTK+ fixed a style reference count bug.
- Memory corruption bug fixed with GetSelText.
- On Windows Scintilla deletes memory on WM_NCDESTROY rather than the earlier WM_DESTROY to avoid problems when the window is subclassed.

### Release 1.58

- Released on 11 January 2004.
- Method to discover the currently highlighted element in an autocompletion list.
- On GTK+, the lexers are now included in the scintilla.a library file. This will require changes to the make files of dependent projects.
- Octave support added alongside related Matlab language and Matlab support improved.
- VB lexer gains an unterminated string state and 4 sets of keywords.
- Ruby lexer handles $' correctly.
- Error line handling improved for FORTRAN compilers from Absoft and Intel.
- International input enabled on GTK+ 2 although there is no way to choose an input method.
- MultiplexExtension in SciTE allows multiple extensions to be used at once.
- Regular expression replace interprets backslash expressions \a, \b, \f, \n, \r, \t, and \v in the replacement value.
- SciTE Replace dialog displays number of replacements made when Replace All or Replace in Selection performed.
- Localization files may contain a translation.encoding setting which is used on GTK+ 2 to automatically reencode the translation to UTF-8 so it will be the localized text will be displayed correctly.
- SciTE on GTK+ implements check.if.already.open.
- Make files for Mac OS X made more robust.
- Performance improved in SciTE when switching buffers when there is a rectangular selection.
- Fixed failure to display some text when wrapped.
- SciTE crashes from Ctrl+Tab buffer cycling fixed. May still be some rare bugs here.
- Crash fixed when decoding an error message that appears similar to a Borland error message.
- Fix to auto-scrolling allows containers to implement enhanced double click selection.
- Hang fixed in idle word wrap.
- Crash fixed in hotspot display code..
- SciTE on Windows Incremental Search no longer moves caret back.
- SciTE hang fixed when performing a replace with a find string that matched zero length strings such as ".*".
- SciTE no longer styles the whole file when saving buffer fold state as that was slow.

### Release 1.57

- Released on 27 November 2003.
- SciTE remembers folding of each buffer.
- Lexer for Erlang language.
- Scintilla allows setting the set of white space characters.
- Scintilla has 'stuttered' page movement commands to first move to top or bottom within current visible lines before scrolling.
- Scintilla commands for moving to end of words.
- Incremental line wrap enabled on Windows.
- SciTE PDF exporter produces output that is more compliant with reader applications, is smaller and allows more configuration. HTML exporter optimizes size of output files.
- SciTE defines properties PLAT_WINNT and PLAT_WIN95 on the corresponding platforms.
- SciTE can adjust the line margin width to fit the largest line number. The line.numbers property is split between line.margin.visible and line.margin.width.
- SciTE on GTK+ allows user defined menu accelerators. Alt can be included in user.shortcuts.
- SciTE Language menu can have items commented out.
- SciTE on Windows Go to dialog allows choosing a column number as well as a line number.
- SciTE on GTK+ make file uses prefix setting more consistently.
- Bug fixed that caused word wrapping to fail to display all text.
- Crashing bug fixed in GTK+ version of Scintilla when using GDK fonts and opening autocompletion.
- Bug fixed in Scintilla SCI_GETSELTEXT where an extra NUL was included at end of returned string
- Crashing bug fixed in SciTE z-order switching implementation.
- Hanging bug fixed in Perl lexer.
- SciTE crashing bug fixed for using 'case' without argument in style definition.

### Release 1.56

- Released on 25 October 2003.
- Rectangular selection can be performed using the keyboard. Greater programmatic control over rectangular selection. This has caused several changes to key bindings.
- SciTE Replace In Selection works on rectangular selections.
- Improved lexer for TeX, new lexer for Metapost and other support for these languages.
- Lexer for PowerBasic.
- Lexer for Forth.
- YAML lexer improved to include error styling.
- Perl lexer improved to correctly handle more cases.
- Assembler lexer updated to support single-quote strings and fix some problems.
- SciTE on Windows can switch between buffers in order of use (z-order) rather than static order.
- SciTE supports adding an extension for "Open Selected Filename". The openpath setting works on GTK+.
- SciTE can Export as XML.
- SciTE $(SelHeight) variable gives a more natural result for empty and whole line selections.
- Fixes to wrapping problems, such as only first display line being visible in some cases.
- Fixes to hotspot to only highlight when over the hotspot, only use background colour when set and option to limit hotspots to a single line.
- Small fixes to FORTRAN lexing and folding.
- SQL lexer treats single quote strings as a separate class to double quote strings..
- Scintilla made compatible with expectations of container widget in GTK+ 2.3.
- Fix to strip out pixmap ID when automatically choosing from an autocompletion list with only one element.
- SciTE bug fixed where UTF-8 files longer than 128K were gaining more than one BOM.
- Crashing bug fixed in SciTE on GTK+ where using "Stop Executing" twice leads to all applications exiting.
- Bug fixed in autocompletion scrolling on GTK+ 2 with a case sensitive list. The ListBox::Sort method is no longer needed or available so platform maintainers should remove it.
- SciTE check.if.already.open setting removed from GTK+ version as unmaintained.

### Release 1.55

- Released on 25 September 2003.
- Fix a crashing bug in indicator display in Scintilla.
- GTK+ version now defaults to building for GTK+ 2 rather than 1.
- Mingw make file detects compiler version and avoids options that are cause problems for some versions.
- Large performance improvement on GTK+ 2 for long lines.
- Incremental line wrap on GTK+.
- International text entry works much better on GTK+ with particular improvements for Baltic languages and languages that use 'dead' accents. NUL key events such as those generated by some function keys, ignored.
- Unicode clipboard support on GTK+.
- Indicator type INDIC_BOX draws a rectangle around the text.
- Clarion language support.
- YAML language support.
- MPT LOG language support.
- On Windows, SciTE can switch buffers based on activation order rather than buffer number.
- SciTE save.on.deactivate saves all buffers rather than just the current buffer.
- Lua lexer handles non-ASCII characters correctly.
- Error lexer understands Borland errors with pathnames that contain space.
- On GTK+ 2, autocompletion uses TreeView rather than deprecated CList.
- SciTE autocompletion removed when expand abbreviation command used.
- SciTE calltips support overloaded functions.
- When Save fails in SciTE, choice offered to Save As.
- SciTE message boxes on Windows may be moved to front when needed.
- Indicators drawn correctly on wrapped lines.
- Regular expression search no longer matches characters with high bit set to characters without high bit set.
- Hang fixed in backwards search in multi byte character documents.
- Hang fixed in SciTE Mark All command when wrap around turned off.
- SciTE Incremental Search no longer uses hot keys on Windows.
- Calltips draw non-ASCII characters correctly rather than as arrows.
- SciTE crash fixed when going to an error message with empty file name.
- Bugs fixed in XPM image handling code.

### Release 1.54

- Released on 12 August 2003.
- SciTE on GTK+ 2.x can display a tab bar.
- SciTE on Windows provides incremental search.
- Lexer for PostScript.
- Lexer for the NSIS scripting language.
- New lexer for POV-Ray Scene Description Language replaces previous implementation.
- Lexer for the MMIX Assembler language.
- Lexer for the Scriptol language.
- Incompatibility: SQL keywords are specified in lower case rather than upper case. SQL lexer allows double quoted strings.
- Pascal lexer: character constants that start with '#' understood, '@' only allowed within assembler blocks, '$' can be the start of a number, initial '.' in 0..constant not treated as part of a number, and assembler blocks made more distinctive.
- Lua lexer allows '.' in keywords. Multi-line strings and comments can be folded.
- CSS lexer handles multiple psuedoclasses.
- Properties file folder works for INI file format.
- Hidden indicator style allows the container to mark text within Scintilla without there being any visual effect.
- SciTE does not prompt to save changes when the buffer is empty and untitled.
- Modification notifications caused by SCI_INSERTSTYLEDSTRING now include the contents of the insertion.
- SCI_MARKERDELETEALL deletes all the markers on a line rather than just the first match.
- Better handling of 'dead' accents on GTK+ 2 for languages that use accented characters.
- SciTE now uses value of output.vertical.size property.
- Crash fixed in SciTE autocompletion on long lines.
- Crash fixed in SciTE comment command on long lines.
- Bug fixed with backwards regular expression search skipping every second match.
- Hang fixed with regular expression replace where both target and replacement were empty.

### Release 1.53

- Released on 16 May 2003.
- On GTK+ 2, encodings other than ASCII, Latin1, and Unicode are supported for both display and input using iconv.
- External lexers supported on GTK+/Linux. External lexers must now be explicitly loaded with SCI_LOADLEXERLIBRARY rather than relying upon a naming convention and automatic loading.
- Support of Lout typesetting language.
- Support of E-Scripts language used in the POL Ultima Online Emulator.
- Scrolling and drawing performance on GTK+ enhanced, particularly for GTK+ 2.x with an extra window for the text area avoiding conflicts with the scroll bars.
- CopyText and CopyRange methods in Scintilla allow container to easily copy to the system clipboard.
- Line Copy command implemented and bound to Ctrl+Shift+T.
- Scintilla APIs PositionBefore and PositionAfter can be used to iterate through a document taking into account the encoding and multi-byte characters.
- C++ folder can fold on the "} else {" line of an if statement by setting fold.at.else property to 1.
- C++ lexer allows an extra set of keywords.
- Property names and thus abbreviations may be non-ASCII.
- Removed attempt to load a file when setting properties that was part of an old scripting experiment.
- SciTE no longer warns about a file not existing when opening properties files from the Options menu as there is a good chance the user wants to create one.
- Bug fixed with brace recognition in multi-byte encoded files where a partial character matched a brace byte.
- More protection against infinite loops or recursion with recursive property definitions.
- On Windows, cursor will no longer disappear over margins in custom builds when cursor resource not present. The Windows default cursor is displayed instead.
- load.on.activate fixed in SciTE as was broken in 1.52.

### Release 1.52

- Released on 17 April 2003.
- Pango font support on GTK+ 2. Unicode input improved on GTK+ 2.
- Hotspot style implemented in Scintilla.
- Small up and down arrows can be displayed in calltips and the container is notified when the mouse is clicked on a calltip. Normal and selected calltip text colours can be set.
- POSIX compatibility flag in Scintilla regular expression search interprets bare ( and ) as tagged sections.
- Error message lexer tightened to yield fewer false matches. Recognition of Lahey and Intel FORTRAN error formats.
- Scintilla keyboard commands for moving to start and end of screen lines rather than document lines, unless already there where these keys move to the start or end of the document line.
- Line joining command.
- Lexer for POV-Ray.
- Calltips on Windows are no longer clipped by the parent window.
- Autocompletion lists are cancelled when focus leaves their parent window.
- Move to next/previous empty line delimited paragraph key commands.
- SciTE hang fixed with recursive property definitions by placing limit on number of substitutions performed.
- SciTE Export as PDF reenabled and works.
- Added loadsession: command line command to SciTE.
- SciTE option to quit application when last document closed.
- SciTE option to ask user if it is OK to reload a file that has been modified outside SciTE.
- SciTE option to automatically save before running particular command tools or to ask user or to not save.
- SciTE on Windows 9x will write a Ctrl+Z to the process input pipe before closing the pipe when running tool commands that take input.
- Added a manifest resource to SciTE on Windows to enable Windows XP themed UI.
- SciTE calltips handle nested calls and other situations better.
- CSS lexer improved.
- Interface to platform layer changed - Surface initialization now requires a WindowID parameter.
- Bug fixed with drawing or measuring long pieces of text on Windows 9x by truncating the pieces.
- Bug fixed with SciTE on GTK+ where a user shortcut for a visible character inserted the character as well as executing the command.
- Bug fixed where primary selection on GTK+ was reset by Scintilla during creation.
- Bug fixed where SciTE would close immediately on startup when using save.session.
- Crash fixed when entering '\' in LaTeX file.
- Hang fixed when '#' last character in VB file.
- Crash fixed in error message lexer.
- Crash fixed when searching for long regular expressions.
- Pressing return when nothing selected in user list sends notification with empty text rather than random text.
- Mouse debouncing disabled on Windows as it interfered with some mouse utilities.
- Bug fixed where overstrike mode inserted before rather than replaced last character in document.
- Bug fixed with syntax highlighting of Japanese text.
- Bug fixed in split lines function.
- Cosmetic fix to SciTE tab bar on Windows when window resized. Focus sticks to either pane more consistently.

### Release 1.51

- Released on 16 February 2003.
- Two phase drawing avoids cutting off text that overlaps runs by drawing all the backgrounds of a line then drawing all the text transparently. Single phase drawing is an option.
- Scintilla method to split lines at a particular width by adding new line characters.
- The character used in autocompletion lists to separate the text from the image number can be changed.
- The scrollbar range will automatically expand when the caret is moved beyond the current range. The scroll bar is updated when SCI_SETXOFFSET is called.
- Mouse cursors on GTK+ improved to be consistent with other applications and the Windows version.
- Horizontal scrollbar on GTK+ now disappears in wrapped mode.
- Scintilla on GTK+ 2: mouse wheel scrolling, cursor over scrollbars, focus, and syntax highlighting now work. gtk_selection_notify avoided for compatibility with GTK+ 2.2.
- Fold margin colours can now be set.
- SciTE can be built for GTK+ 2.
- SciTE can optionally preserve the undo history over an automatic file reload.
- Tags can optionally be case insensitive in XML and HTML.
- SciTE on Windows handles input to tool commands in a way that should avoid deadlock. Output from tools can be used to replace the selection.
- SciTE on GTK+ automatically substitutes '|' for '/' in menu items as '/' is used to define the menu hierarchy.
- Optional buffer number in SciTE title bar.
- Crash fixed in SciTE brace matching.
- Bug fixed where automatic scrolling past end of document flipped back to the beginning.
- Bug fixed where wrapping caused text to disappear.
- Bug fixed on Windows where images in autocompletion lists were shown on the wrong item.
- Crash fixed due to memory bug in autocompletion lists on Windows.
- Crash fixed when double clicking some error messages.
- Bug fixed in word part movement where sometimes no movement would occur.
- Bug fixed on Windows NT where long text runs were truncated by treating NT differently to 9x where there is a limitation.
- Text in not-changeable style works better but there remain some cases where it is still possible to delete text protected this way.

### Release 1.50

- Released on 24 January 2003.
- Autocompletion lists may have a per-item pixmap.
- Autocompletion lists allow Unicode text on Windows.
- Scintilla documentation rewritten.
- Additional DBCS encoding support in Scintilla on GTK+ primarily aimed at Japanese EUC encoding.
- CSS (Cascading Style Sheets) lexer added.
- diff lexer understands some more formats.
- Fold box feature is an alternative way to show the structure of code.
- Avenue lexer supports multiple keyword lists.
- The caret may now be made invisible by setting the caret width to 0.
- Python folder attaches comments before blocks to the next block rather than the previous block.
- SciTE openpath property on Windows searches a path for files that are the subject of the Open Selected Filename command.
- The localization file name can be changed with the locale.properties property.
- On Windows, SciTE can pipe the result of a string expression into a command line tool.
- On Windows, SciTE's Find dialog has a Mark All button.
- On Windows, there is an Insert Abbreviation command that allows a choice from the defined abbreviations and inserts the selection into the abbreviation at the position of a '|'.
- Minor fixes to Fortran lexer.
- fold.html.preprocessor decides whether to fold <? and ?>. Minor improvements to PHP folding.
- Maximum number of keyword lists allowed increased from 6 to 9.
- Duplicate line command added with default assignment to Ctrl+D.
- SciTE sets $(Replacements) to the number of replacements made by the Replace All command. $(CurrentWord) is set to the word before the caret if the caret is at the end of a word.
- Opening a SciTE session now loads files in remembered order, sets the current file as remembered, and moves the caret to the remembered line.
- Bugs fixed with printing on Windows where line wrapping was causing some text to not print.
- Bug fixed with Korean Input Method Editor on Windows.
- Bugs fixed with line wrap which would sometimes choose different break positions after switching focus away and back.
- Bug fixed where wheel scrolling had no effect on GTK+ after opening a fold.
- Bug fixed with file paths containing non-ASCII characters on Windows.
- Crash fixed with printing on Windows after defining pixmap marker.
- Crash fixed in makefile lexer when first character on line was '='.
- Bug fixed where local properties were not always being applied.
- Ctrl+Keypad* fold command works on GTK+.
- Hangs fixed in SciTE's Replace All command when replacing regular expressions '^' or '$'.
- SciTE monospace setting behaves more sensibly.

### Release 1.49

- Released on 1 November 2002.
- Unicode supported on GTK+. To perform well, this added a font cache to GTK+ and to make that safe, a mutex is used. The mutex requires the application to link in the threading library by evaluating `glib-config --libs gthread`. A Unicode locale should also be set up by a call like setlocale(LC_CTYPE, "en_US.UTF-8"). scintilla_release_resources function added to release mutex.
- FORTRAN and assembler lexers added along with other support for these languages in SciTE.
- Ada lexer improved handling of based numbers, identifier validity and attributes distinguished from character literals.
- Lua lexer handles block comments and a deep level of nesting for literal strings and block comments.
- Errorlist lexer recognizes PHP error messages.
- Variant of the C++ lexer with case insensitive keywords called cppnocase. Whitespace in preprocessor text handled more correctly.
- Folder added for Perl.
- Compilation with GCC 3.2 supported.
- Markers can be pixmaps.
- Lines are wrapped when printing. Bug fixed which printed line numbers in different styles.
- Text can be appended to end with AppendText method.
- ChooseCaretX method added.
- Vertical scroll bar can be turned off with SetVScrollBar method.
- SciTE Save All command saves all buffers.
- SciTE localization compares keys case insensitively to make translations more flexible.
- SciTE detects a utf-8 coding cookie "coding: utf-8" in first two lines and goes into Unicode mode.
- SciTE key bindings are definable.
- SciTE Find in Files dialog can display directory browser to choose directory to search.
- SciTE enabling of undo and redo toolbar buttons improved.
- SciTE on Windows file type filters in open dialog sorted.
- Fixed crashing bug when using automatic tag closing in XML or HTML.
- Fixed bug on Windows causing very long (>64K) lines to not display.
- Fixed bug in backwards regular expression searching.
- Fixed bug in calltips where wrong argument was highlighted.
- Fixed bug in tab timmy feature when file has line feed line endings.
- Fixed bug in compiling without INCLUDE_DEPRECATED_FEATURES defined.

### Release 1.48

- Released on 9 September 2002.
- Improved Pascal lexer with context sensitive keywords and separate folder which handles //{ and //} folding comments and {$region} and {$end} folding directives. The "case" statement now folds correctly.
- C++ lexer correctly handles comments on preprocessor lines.
- New commands for moving to beginning and end of display lines when in line wrap mode. Key bindings added for these commands.
- New marker symbols that look like ">>>" and "..." which can be used for interactive shell prompts for Python.
- The foreground and background colours of visible whitespace can be chosen independent of the colours chosen for the lexical class of that whitespace.
- Per line data optimized by using an exponential allocation scheme.
- SciTE API file loading optimized.
- SciTE for GTK+ subsystem 2 documented. The exit status of commands is decoded into more understandable fields.
- SciTE find dialog remembers previous find string when there is no selection. Find in Selection button disabled when selection is rectangular as command did not work.
- Shift+Enter made equivalent to Enter to avoid users having to let go of the shift key when typing. Avoids the possibility of entering single carriage returns in a file that contains CR+LF line ends.
- Autocompletion does not immediately disappear when the length parameter to SCI_AUTOCSHOW is 0.
- SciTE focuses on the editor pane when File | New executed and when the output pane is closed with F8. Double clicking on a non-highlighted output pane line selects the word under the cursor rather than seeking the next highlighted line.
- SciTE director interface implements an "askproperty" command.
- SciTE's Export as LaTeX output improved.
- Better choice of autocompletion displaying above the caret rather then below when that is more sensible.
- Bug fixed where context menu would not be completely visible if invoked when cursor near bottom or left of screen.
- Crashing bug fixed when displaying long strings on GTK+ caused failure of X server by displaying long text in segments.
- Crashing bug fixed on GTK+ when a Scintilla window was removed from its parent but was still the selection owner.
- Bug fixed on Windows in Unicode mode where not all characters on a line were displayed when that line contained some characters not in ASCII.
- Crashing bug fixed in SciTE on Windows with clearing output while running command.
- Bug fixed in SciTE for GTK+ with command completion not detected when no output was produced by the command.
- Bug fixed in SciTE for Windows where menus were not shown translated.
- Bug fixed where words failed to display in line wrapping mode with visible line ends.
- Bug fixed in SciTE where files opened from a session file were not closed.
- Cosmetic flicker fixed when using Ctrl+Up and Ctrl+Down with some caret policies.

### Release 1.47

- Released on 1 August 2002.
- Support for GTK+ 2 in Scintilla. International input methods not supported on GTK+2.
- Line wrapping performance improved greatly.
- New caret policy implementation that treats horizontal and vertical positioning equivalently and independently. Old caret policy methods deprecated and not all options work correctly with old methods.
- Extra fold points for C, C++, Java, ... for fold comments //{ .. //} and #if / #ifdef .. #endif and the #region .. #endregion feature of C#.
- Scintilla method to find the height in pixels of a line. Currently returns the same result for every line as all lines are same height.
- Separate make file, scintilla_vc6.mak, for Scintilla to use Visual C++ version 6 since main makefile now assumes VS .NET. VS .NET project files available for combined Scintilla and SciTE in scite/boundscheck.
- SciTE automatically recognizes Unicode files based on their Byte Order Marks and switches to Unicode mode. On Windows, where SciTE supports Unicode display, this allows display of non European characters. The file is saved back into the same character encoding unless the user decides to switch using the File | Encoding menu.
- Handling of character input changed so that a fillup character, typically '(' displays a calltip when an autocompletion list was being displayed.
- Multiline strings lexed better for C++ and Lua.
- Regular expressions in JavaScript within hypertext files are lexed better.
- On Windows, Scintilla exports a function called Scintilla_DirectFunction that can be used the same as the function returned by GetDirectFunction.
- Scintilla converts line endings of text obtained from the clipboard to the current default line endings.
- New SciTE property ensure.final.line.end can ensure that saved files always end with a new line as this is required by some tools. The ensure.consistent.line.ends property ensures all line ends are the current default when saving files. The strip.trailing.spaces property now works on the buffer so the buffer in memory and the file on disk are the same after a save is performed.
- The SciTE expand abbreviation command again allows '|' characters in expansions to be quoted by using '||'.
- SciTE on Windows can send data to the find tool through standard input rather than using a command line argument to avoid problems with quoting command line arguments.
- The Stop Executing command in SciTE on Windows improved to send a Ctrl+Z character to the tool. Better messages when stopping a tool.
- Autocompletion can automatically "fill up" when one of a set of characters is type with the autocomplete.<lexer>.fillups property.
- New predefined properties in SciTE, SelectionStartColumn, SelectionStartLine, SelectionEndColumn, SelectionEndLine can be used to integrate with other applications.
- Environment variables are available as properties in SciTE.
- SciTE on Windows keeps status line more current.
- Abbreviations work in SciTE on Linux when first opened.
- File saving fixed in SciTE to ensure files are not closed when they can not be saved because of file permissions. Also fixed a problem with buffers that caused files to not be saved.
- SciTE bug fixed where monospace mode not remembered when saving files. Some searching options now remembered when switching files.
- SciTE on Linux now waits on child termination when it shuts a child down to avoid zombies.
- SciTE on Linux has a Print menu command that defaults to invoking a2ps.
- Fixed incorrect highlighting of indentation guides in SciTE for Python.
- Crash fixed in Scintilla when calling GetText for 0 characters.
- Exporting as LaTeX improved when processing backslashes and tabs and setting up font.
- Crash fixed in SciTE when exporting or copying as RTF.
- SciTE session loading fixed to handle more than 10 files in session.

### Release 1.46

- Released on 10 May 2002.
- Set of lexers compiled into Scintilla can now be changed by adding and removing lexer source files from scintilla/src and running LexGen.py.
- SCN_ZOOM notification provided by Scintilla when user changes zoom level. Method to determine width of strings in pixels so that elements can be sized relative to text size. SciTE changed to keep line number column displaying a given number of characters.
- The logical width of the document used to determine scroll bar range can be set.
- Setting to allow vertical scrolling to display last line at top rather than bottom of window.
- Read-only mode improved to avoid changing the selection in most cases when a modification is attempted. Drag and drop cursors display correctly for read-only in some cases.
- Visual C++ options in make files changed to suit Visual Studio .NET.
- Scintilla.iface includes feature types for enumerations and lexers.
- Lua lexer improves handling of literal strings and copes with nested literal strings.
- Diff lexer changed to treat lines starting with "***" similarly to "---". Symbolic names defined for lexical classes.
- nncrontab lexer improved.
- Turkish fonts (iso8859-9) supported on GTK+.
- Automatic close tag feature for XML and HTML in SciTE.
- Automatic indentation in SciTE improved.
- Maximum number of buffers available in SciTE increased. May be up to 100 although other restrictions on menu length limit the real maximum.
- Save a Copy command added to SciTE.
- Export as TeX command added to SciTE.
- Export as HTML command in SciTE respects Use Monospaced Font and background colour settings.
- Compilation problem on Solaris fixed.
- Order of files displayed for SciTE's previous and next menu and key commands are now consistent.
- Saving of MRU in recent file changed so files open when SciTE quit are remembered.
- More variants of ctags tags handled by Open Selected Filename in SciTE.
- JavaScript embedded in XML highlighted again.
- SciTE status bar updated after changing parameters in case they are being displayed in status bar.
- Crash fixed when handling some multi-byte languages.
- Crash fixed when replacing end of line characters.
- Bug in SciTE fixed in multiple buffer mode where automatic loading turned on could lead to losing file contents.
- Bug in SciTE on GTK+ fixed where dismissing dialogs with close box led to those dialogs never being shown again.
- Bug in SciTE on Windows fixed where position.tile with default positions led to SciTE being positioned off-screen.
- Bug fixed in read-only mode, clearing all deletes contraction state data leading to it not being synchronized with text.
- Crash fixed in SciTE on Windows when tab bar displayed.

### Release 1.45

- Released on 15 March 2002.
- Line layout cache implemented to improve performance by maintaining the positioning of characters on lines. Can be set to cache nothing, the line with the caret, the visible page or the whole document.
- Support, including a new lexer, added for Matlab programs.
- Lua folder supports folding {} ranges and compact mode. Lua lexer styles floating point numbers in number style instead of setting the '.' in operator style. Up to 6 sets of keywords. Better support for [[ although only works well when all on one line.
- Python lexer improved to handle floating point numbers that contain negative exponents and that start with '.'.
- When performing a rectangular paste, the caret now remains at the insertion point.
- On Windows with a wheel mouse, page-at-a-time mode is recognized.
- Read-only mode added to SciTE with a property to initialize it and another property, $(ReadOnly) available to show this mode in the status bar.
- SciTE status bar can show the number of lines in the selection with the $(SelHeight) property.
- SciTE's "Export as HTML" command uses the current character set to produce correct output for non-Western-European character sets, such as Russian.
- SciTE's "Export as RTF" fixed to produce correct output when file contains '\'.
- SciTE goto command accepts a column as well as a line. If given a column, it selects the word at that column.
- SciTE's Build, Compile and Go commands are now disabled if no action has been assigned to them.
- The Refresh button in the status bar has been removed from SciTE on Windows.
- Bug fixed in line wrap mode where cursor up or down command did not work.
- Some styling bugs fixed that were due to a compilation problem with gcc and inline functions with same name but different code.
- The way that lexers loop over text was changed to avoid accessing beyond the end or setting beyond the end. May fix some bugs and make the code safer but may also cause new bugs.
- Bug fixed in HTML lexer's handling of SGML.
- Bug fixed on GTK+/X where lines wider than 32767 pixels did not display.
- SciTE bug fixed with file name generation for standard property files.
- SciTE bug fixed with Open Selected Filename command when used with file name and line number combination.
- In SciTE, indentation and tab settings stored with buffers so maintained correctly as buffers selected. The properties used to initialize these settings can now be set separately for different file patterns.
- Thread safety improved on Windows with a critical section protecting the font cache and initialization of globals performed within Scintilla_RegisterClasses. New Scintilla_ReleaseResources call provided to allow explicit freeing of resources when statically bound into another application. Resources automatically freed in DLL version. The window classes are now unregistered as part of resource freeing which fixes bugs that occurred in some containers such as Internet Explorer.
- 'make install' fixed on Solaris.
- Bug fixed that could lead to a file being opened twice in SciTE.

### Release 1.44

- Released on 4 February 2002.
- Crashing bug fixed in Editor::Paint.
- Lua lexer no longer treats '.' as a word character and handles 6 keyword sets.
- WordStartPosition and WordEndPosition take an onlyWordCharacters argument.
- SciTE option for simplified automatic indentation which repeats the indentation of the previous line.
- Compilation fix on Alpha because of 64 bit.
- Compilation fix for static linking.
- Limited maximum line length handled to 8000 characters as previous value of 16000 was causing stack exhaustion crashes for some.
- When whole document line selected, only the last display line gets the extra selected rectangle at the right hand side rather than every display line.
- Caret disappearing bug fixed for the case that the caret was not on the first display line of a document line.
- SciTE bug fixed where untitled buffer containing text was sometimes deleted without chance to save.
- SciTE bug fixed where use.monospaced not working with multiple buffers.

### Release 1.43

- Released on 19 January 2002.
- Line wrapping robustness and performance improved in Scintilla.
- Line wrapping option added to SciTE for both edit and output panes.
- Static linking on Windows handles cursor resource better. Documentation of static linking improved.
- Autocompletion has an option to delete any word characters after the caret upon selecting an item.
- FOX version identified by PLAT_FOX in Platform.h.
- Calltips in SciTE use the calltip.<lexer>.word.characters setting to correctly find calltips for functions that include characters like '$' which is not normally considered a word character.
- SciTE has a command to show help on itself which gets hooked up to displaying SciTEDoc.html.
- SciTE option calltip.<lexer>.end.definition to display help text on a second line of calltip.
- Fixed the handling of the Buffers menu on GTK+ to ensure current buffer indicated and no warnings occur. Changed some menu items on GTK+ version to be same as Windows version.
- use.monospaced property for SciTE determines initial state of Use Monospaced Font setting.
- The SciTE Complete Symbol command now works when there are no word characters before the caret, even though it is slow to display the whole set of symbols.
- Function names removed from SciTE's list of PHP keywords. The full list of predefined functions is available from another web site mentioned on the Extras page.
- Crashing bug at startup on GTK+ for some configurations fixed.
- Crashing bug on GTK+ on 64 bit platforms fixed.
- Compilation problem with some compilers fixed in GTK+.
- Japanese text entry improved on Windows 9x.
- SciTE recent files directory problem on Windows when HOME and SciTE_HOME environment variables not set is now the directory of the executable.
- Session files no longer include untitled buffers.

### Release 1.42

- Released on 24 December 2001.
- Better localization support including context menus and most messages. Translations of the SciTE user interface available for Bulgarian, French, German, Italian, Russian, and Turkish.
- Can specify a character to use to indicate control characters rather than having them displayed as mnemonics.
- Scintilla key command for backspace that will not delete line end characters.
- Scintilla method to find start and end of words.
- SciTE on GTK+ now supports the load.on.activate and save.on.deactivate properties in an equivalent way to the Windows version.
- The output pane of SciTE on Windows is now interactive so command line utilities that prompt for input or confirmation can be used.
- SciTE on Windows can choose directory for a "Find in Files" command like the GTK+ version could.
- SciTE can now load a set of API files rather than just one file.
- ElapsedTime class added to Platform for accurate measurement of durations. Used for debugging and for showing the user how long commands take in SciTE.
- Baan lexer added.
- In C++ lexer, document comment keywords no longer have to be at the start of the line.
- PHP lexer changed to match keywords case insensitively.
- More shell keywords added.
- SciTE support for VoiceXML added to xml.properties.
- In SciTE the selection is not copied to the find field of the Search and Replace dialogs if it contains end of line characters.
- SciTE on Windows has a menu item to decide whether to respond to other instances which are performing their check.if.already.open check.
- SciTE accelerator key for Box Comment command changed to avoid problems in non-English locales.
- SciTE context menu includes Close command for the editor pane and Hide command for the output pane.
- output: command added to SciTE director interface to add text to the output pane. The director interface can execute commands (such as tool commands with subsystem set to 3) by sending a macro:run message.
- SciTE on GTK+ will defer to the Window Manager for position if position.left or position.top not set and for size if position.width or position.height not set.
- SciTE on Windows has a position.tile property to place a second instance to the right of the first.
- Scintilla on Windows again supports EM_GETSEL and EM_SETSEL.
- Problem fixed in Scintilla on Windows where control ID is no longer cached as it could be changed by external code.
- Problems fixed in SciTE on Windows when finding any other open instances at start up when check.if.already.open is true.
- Bugs fixed in SciTE where command strings were not always having variables evaluated.
- Bugs fixed with displaying partial double-byte and Unicode characters in rectangular selections and at the edge when edge mode is EDGE_BACKGROUND. Column numbers reported by GetColumn treat multiple byte characters as one column rather than counting bytes.
- Bug fixed with caret movement over folded lines.
- Another bug fixed with tracking selection in secondary views when performing modifications.
- Horizontal scrolling and display of long lines optimized.
- Cursor setting in Scintilla on GTK+ optimized.
- Experimental changeable style attribute. Set to false to make text read-only. Currently only stops caret from being within not-changeable text and does not yet stop deleting a range that contains not-changeable text. Can be used from SciTE by adding notchangeable to style entries.
- Experimental line wrapping. Currently has performance and appearance problems.

### Release 1.41

- Released on 6 November 2001.
- Changed Platform.h to not include platform headers. This lessens likelihood and impact of name clashes from system headers and also speeds up compilation. Renamed DrawText to DrawTextNoClip to avoid name clash.
- Changed way word functions work to treat a sequence of punctuation as a word. This is more sensible and also more compatible with other editors.
- Cursor changes over the margins and selection on GTK+ platform.
- SC_MARK_BACKGROUND is a marker that only changes the line's background colour.
- Enhanced Visual Basic lexer handles character date and octal literals, and bracketed keywords for VB.NET. There are two VB lexers, vb and vbscript with type indication characters like ! and $ allowed at the end of identifiers in vb but not vbscript. Lexer states now separate from those used for C++ and names start with SCE_B.
- Lexer added for Bullant language.
- The horizontal scroll position, xOffset, is now exposed through the API.
- The SCN_POSCHANGED notification is deprecated as it was causing confusion. Use SCN_UPDATEUI instead.
- Compilation problems fixed for some versions of gcc.
- Support for WM_GETTEXT restored on Windows.
- Double clicking on an autocompletion list entry works on GTK+.
- Bug fixed with case insensitive sorts for autocompletion lists.
- Bug fixed with tracking selection in secondary views when performing modifications.
- SciTE's abbreviation expansion feature will now indent expansions to the current indentation level if indent.automatic is on.
- SciTE allows setting up of parameters to commands from a dialog and can also show this dialog automatically to prompt for arguments when running a command.
- SciTE's Language menu (formerly Options | Use Lexer) is now defined by the menu.language property rather than being hardcoded.
- The user interface of SciTE can be localized to a particular language by editing a locale.properties file.
- On Windows, SciTE will try to move to the front when opening a new file from the shell and using check.if.already.open.
- SciTE can display the file name and directory in the title bar in the form "file @ directory" when title.full.path=2.
- The SciTE time.commands property reports the time taken by a command as well as its status when completed.
- The SciTE find.files property is now a list separated by '|' characters and this list is added into the Files pull down of the Find in Files dialog.

### Release 1.40

- Released on 23 September 2001.
- Removal of emulation of Win32 RichEdit control in core of Scintilla. This change may be incompatible with existing client code. Some emulation still done in Windows platform layer.
- SGML support in the HTML/XML lexer.
- SciTE's "Stop Executing" command will terminate GUI programs on Windows NT and Windows 2000.
- StyleContext class helps construct lexers that are simple and accurate. Used in the C++, Eiffel, and Python lexers.
- Clipboard operations in GTK+ version convert between platform '\n' line endings and currently chosen line endings.
- Any character in range 0..255 can be used as a marker. This can be used to support numbered bookmarks, for example.
- The default scripting language for ASP can be set.
- New lexer and other support for crontab files used with the nncron scheduler.
- Folding of Python improved.
- The ` character is treated as a Python operator.
- Line continuations ("\" at end of line) handled inside Python strings.
- More consistent handling of line continuation ('\' at end of line) in C++ lexer. This fixes macro definitions that span more than one line.
- C++ lexer can understand Doxygen keywords in doc comments.
- SciTE on Windows allows choosing to open the "open" dialog on the directory of the current file rather than in the default directory.
- SciTE on Windows handles command line arguments in "check.if.already.open" correctly when the current directory of the new instance is different to the already open instance of SciTE.
- "cwd" command (change working directory) defined for SciTE director interface.
- SciTE "Export As HTML" produces better, more compliant, and shorter files.
- SciTE on Windows allows several options for determining default file name for exported files.
- Automatic indentation of Python in SciTE fixed.
- Exported HTML can support folding.
- Bug fixed in SCI_GETTEXT macro command of director interface.
- Cursor leak fixed on GTK+.
- During SciTE shutdown, "identity" messages are no longer sent over the director interface.

### Release 1.39

- Released on 22 August 2001.
- Windows version requires msvcrt.dll to be available so will not work on original Windows 95 version 1. The msvcrt.dll file is installed by almost everything including Internet Explorer so should be available.
- Flattened tree control style folding margin. The SciTE fold.plus option is now fold.symbols and has more values for the new styles.
- Mouse dwell events are generated when the user holds the mouse steady over Scintilla.
- PositionFromPointClose is like PositionFromPoint but returns INVALID_POSITION when point outside window or after end of line.
- Input of Hungarian and Russian characters in GTK+ version works by truncating input to 8 bits if in the range of normal characters.
- Better choices for font descriptors on GTK+ for most character sets.
- GTK+ Scintilla is destroyed upon receiving destroy signal rather than destroy_event signal.
- Style setting that force upper or lower case text.
- Case-insensitive autocompletion lists work correctly.
- Keywords can be prefix based so ^GTK_ will treat all words that start with GTK_ as keywords.
- Horizontal scrolling can be jumpy rather than gradual.
- GetSelText places a '\0' in the buffer if the selection is empty..
- EnsureVisible split into two methods EnsureVisible which will not scroll to show the line and EnsureVisibleEnforcePolicy which may scroll.
- Python folder has options to fold multi-line comments and triple quoted strings.
- C++ lexer handles keywords before '.' like "this.x" in Java as keywords. Compact folding mode option chooses whether blank lines after a structure are folded with that structure. Second set of keywords with separate style supported.
- Ruby lexer handles multi-line comments.
- VB has folder.
- PHP lexer has an operator style, handles "<?" and "?>" inside strings and some comments.
- TCL lexer which is just an alias for the C++ lexer so does not really understand TCL syntax.
- Error lines lexer has styles for Lua error messages and .NET stack traces.
- Makefile lexer has a target style.
- Lua lexer handles some [[]] string literals.
- HTML and XML lexer have a SCE_H_SGML state for tags that start with "<!".
- Fixed Scintilla bugs with folding. When modifications were performed near folded regions sometimes no unfolding occurred when it should have. Deleting a fold causing character sometimes failed to update fold information correctly.
- Better support for Scintilla on GTK+ for Win32 including separate PLAT_GTK_WIN32 definition and correct handling of rectangular selection with clipboard operations.
- SciTE has a Tools | Switch Pane (Ctrl+F6) command to switch focus between edit and output panes.
- SciTE option output.scroll allows automatic scrolling of output pane to be turned off.
- Commands can be typed into the SciTE output pane similar to a shell window.
- SciTE properties magnification and output magnification set initial zoom levels.
- Option for SciTE comment block command to place comments at start of line.
- SciTE for Win32 has an option to minimize to the tray rather than the task bar.
- Close button on SciTE tool bar for Win32.
- SciTE compiles with GCC 3.0.
- SciTE's automatic indentation of C++ handles braces without preceding keyword correctly.
- Bug fixed with GetLine method writing past the end of where it should.
- Bug fixed with mouse drag automatic scrolling when some lines were folded.
- Bug fixed because caret XEven setting was inverted.
- Bug fixed where caret was initially visible even though window was not focussed.
- Bug fixed where some file names could end with "\\" which caused slow downs on Windows 9x.
- On Win32, SciTE Replace dialog starts with focus on replacement text.
- SciTE Go to dialog displays correct current line.
- Fixed bug with SciTE opening multiple files at once.
- Fixed bug with Unicode key values reported to container truncated.
- Fixed bug with unnecessary save point notifications.
- Fixed bugs with indenting and unindenting at start of line.
- Monospace Font setting behaves more consistently.

### Release 1.38

- Released on 23 May 2001.
- Loadable lexer plugins on Windows.
- Ruby lexer and support.
- Lisp lexer and support.
- Eiffel lexer and support.
- Modes for better handling of Tab and BackSpace keys within indentation. Mode to avoid autocompletion list cancelling when there are no viable matches.
- ReplaceTarget replaced with two calls ReplaceTarget (which is incompatible with previous ReplaceTarget) and ReplaceTargetRE. Both of these calls have a count first parameter which allows using strings containing nulls. SearchInTarget and SetSearchFlags functions allow specifying a search in several simple steps which helps some clients which can not create structs or pointers easily.
- Asian language input through an Input Method Editor works on Windows 2000.
- On Windows, control characters can be entered through use of the numeric keypad in conjunction with the Alt key.
- Document memory allocation changed to grow exponentially which reduced time to load a 30 Megabyte file from 1000 seconds to 25. Change means more memory may be used.
- Word part movement keys now handled in Scintilla rather than SciTE.
- Regular expression '^' and '$' work more often allowing insertion of text at start or end of line with a replace command. Backslash quoted control characters \a, \b, \f, \t, and \v recognized within sets.
- Session files for SciTE.
- Export as PDF command hidden in SciTE as it often failed. Code still present so can be turned on by those willing to cope.
- Bug fixed in HTML lexer handling % before > as end ASP even when no start ASP encountered. Bug fixed when scripts ended with a quoted string and end tag was not seen.
- Bug fixed on Windows where context menu key caused menu to appear in corner of screen rather than within window.
- Bug fixed in SciTE's Replace All command not processing whole file when replace string longer than search string.
- Bug fixed in SciTE's MRU list repeating entries if Ctrl+Tab used when all entries filled.
- ConvertEOLs call documentation fixed.

### Release 1.37

- Released on 17 April 2001.
- Bug fixed with scroll bars being invisible on GTK+ 1.2.9.
- Scintilla and SciTE support find and replace using simple regular expressions with tagged expressions. SciTE supports C '\' escapes in the Find and Replace dialogs. Replace in Selection available in SciTE.
- Scintilla has a 'target' feature for replacing code rapidly without causing display updates.
- Scintilla and SciTE on GTK+ support file dropping from file managers such as Nautilus and gmc. Files or other URIs dropped on Scintilla result in a URIDropped notification.
- Lexers may have separate Lex and Fold functions.
- Lexer infrastructure improved to allow for plug in lexers and for referring to lexers by name rather than by ID.
- Ada lexer and support added.
- Option in both Scintilla and SciTE to treat both left and right margin as equally important when repositioning visible area in response to caret movement. Default is to prefer visible area positioning which minimizes the horizontal scroll position thus favouring the left margin.
- Caret line highlighting.
- Commands to delete from the caret to the end of line and from the caret to the beginning of line.
- SciTE has commands for inserting and removing block comments and for inserting stream comments.
- SciTE Director interface uses C++ '\' escapes to send control characters.
- SciTE Director interface adds more commands including support for macros.
- SciTE has menu options for recording and playing macros which are visible when used with a companion program that supports these features.
- SciTE has an Expand Abbreviation command. Abbreviations are stored in a global abbrev.properties file.
- SciTE has a Full Screen command to switch between a normal window size and using the full screen. On Windows, the menu bar can be turned off when in full screen mode.
- SciTE has a Use monospaced font command to switch between the normal set of fonts and one size of a particular fixed width font.
- SciTE's use of tabs can be controlled for particular file names as well as globally.
- The contents of SciTE's status bar can be defined by a property and include variables. On Windows, several status bar definitions can be active with a click on the status bar cycling through them.
- Copy as RTF command in SciTE on Windows to allow pasting styled text into word processors.
- SciTE can allow the use of non-alphabetic characters in Complete Symbol lists and can automatically display this autocompletion list when a trigger character such as '.' is typed. Complete word can be set to pop up when the user is typing a word and there is only one matching word in the document.
- SciTE lists the imported properties files on a menu to allow rapid access to them.
- SciTE on GTK+ improvements to handling accelerator keys and focus in dialogs. Message boxes respond to key presses without the Alt key as they have no text entries to accept normal keystrokes.
- SciTE on GTK+ sets the application icon.
- SciTE allows setting the colours used to indicate the current error line.
- Variables within PHP strings have own style. Keyword list updated.
- Keyword list for Lua updated for Lua 4.0.
- Bug fixed in rectangular selection where rectangle still appeared selected after using cursor keys to move caret.
- Bug fixed in C++ lexer when deleting a '{' controlling a folded range led to that range becoming permanently invisible.
- Bug fixed in Batch lexer where comments were not recognized.
- Bug fixed with undo actions coalescing into steps incorrectly.
- Bug fixed with Scintilla on GTK+ positioning scroll bars 1 pixel over the Scintilla window leading to their sides being chopped off.
- Bugs fixed in SciTE when doing some actions led to the start or end of the file being displayed rather than the current location.
- Appearance of calltips fixed to look like document text including any zoom factor. Positioned to be outside current line even when multiple fonts and sizes used.
- Bug fixed in Scintilla macro support where typing Enter caused both a newline command and newline character insertion to be recorded.
- Bug fixed in SciTE on GTK+ where focus was moving between widgets incorrectly.
- Bug fixed with fold symbols sometimes not updating when the text changed.
- Bugs fixed in SciTE's handling of folding commands.
- Deprecated undo collection enumeration removed from API.

### Release 1.36

- Released on 1 March 2001.
- Scintilla supports GTK+ on Win32.
- Some untested work on making Scintilla and SciTE 64 bit compatible. For users on GTK+ this requires including Scintilla.h before ScintillaWidget.h.
- HTML lexer allows folding HTML.
- New lexer for Avenue files which are used in the ESRI ArcView GIS.
- DOS Batch file lexer has states for '@', external commands, variables and operators.
- C++ lexer can fold comments of /* .. */ form.
- Better disabling of pop up menu items in Scintilla when in read-only mode.
- Starting to move to Doxygen compatible commenting.
- Director interface on Windows enables another application to control SciTE.
- Opening SciTE on Windows 9x sped up greatly for some cases.
- The command.build.directory property allows SciTE to run the build command in a different directory to the source files.
- SciTE on Windows allows setting foreground and background colours for printed headers and footers.
- Bug fixed in finding calltips in SciTE which led to no calltips for some identifiers.
- Documentation added for lexers and for the extension and director interfaces.
- SciTE menus rearranged with new View menu taking over some of the items that were under the Options menu. Clear All Bookmarks command added.
- Clear Output command in SciTE.
- SciTE on Windows gains an Always On Top command.
- Bug fixed in SciTE with attempts to define properties recursively.
- Bug fixed in SciTE properties where only one level of substitution was done.
- Bug fixed in SciTE properties where extensions were not being matched in a case insensitive manner.
- Bug fixed in SciTE on Windows where the Go to dialog displays the correct line number.
- In SciTE, if fold.on.open set then switching buffers also performs fold.
- Bug fixed in Scintilla where ensuring a line was visible in the presence of folding operated on the document line instead of the visible line.
- SciTE command line processing modified to operate on arguments in order and in two phases. First any arguments before the first file name are processed, then the UI is opened, then the remaining arguments are processed. Actions defined for the Director interface (currently only "open") may also be used on the command line. For example, "SciTE -open:x.txt" will start SciTE and open x.txt.
- Numbered menu items SciTE's Buffers menu and the Most Recently Used portion of the File menu go from 1..0 rather than 0..9.
- The tab bar in SciTE for Windows has numbers. The tab.hide.one option hides the tab bar until there is more than one buffer open.

### Release 1.35

- Released on 29 January 2001.
- Rewritten and simplified widget code for the GTK+ version to enhance solidity and make more fully compliant with platform norms. This includes more normal handling of keystrokes so they are forwarded to containers correctly.
- User defined lists can be shown.
- Many fixes to the Perl lexer.
- Pascal lexer handles comments more correctly.
- C/C++/Java/JavaScipt lexer has a state for line doc comments.
- Error output lexer understands Sun CC messages.
- Make file lexer has variable, preprocessor, and operator states.
- Wider area given to an italics character that is at the end of a line to prevent it being cut off.
- Call to move the caret inside the currently visible area.
- Paste Rectangular will space fill on the left hand side of the pasted text as needed to ensure it is kept rectangular.
- Cut and Paste Rectangular does nothing in read-only mode.
- Undo batching changed so that a paste followed by typing creates two undo actions..
- A "visibility policy" setting for Scintilla determines which range of lines are displayed when a particular line is moved to. Also exposed as a property in SciTE.
- SciTE command line allows property settings.
- SciTE has a View Output command to hide or show the output pane.
- SciTE's Edit menu has been split in two with searching commands moved to a new Search menu. Find Previous and Previous Bookmark are in the Search menu.
- SciTE on Windows has options for setting print margins, headers and footers.
- SciTE on Windows has tooltips for toolbar.
- SciTE on GTK+ has properties for setting size of file selector.
- Visual and audio cues in SciTE on Windows enhanced.
- Fixed performance problem in SciTE for GTK+ by dropping the extra 3D effect on the content windows.
- Fixed problem in SciTE where choosing a specific lexer then meant that no lexer was chosen when files opened.
- Default selection colour changed to be visible on low colour displays.
- Fixed problems with automatically reloading changed documents in SciTE on Windows.
- Fixed problem with uppercase file extensions in SciTE.
- Fixed some problems when using characters >= 128, some of which were being incorrectly treated as spaces.
- Fixed handling multiple line tags, non-inline scripts, and XML end tags /> in HTML/XML lexer.
- Bookmarks in SciTE no longer disappear when switching between buffers.

### Release 1.34

- Released on 28 November 2000.
- Pascal lexer.
- Export as PDF in SciTE.
- Support for the OpenVMS operating system in SciTE.
- SciTE for GTK+ can check for another instance of SciTE editing a file and switch to it rather than open a second instance on one file.
- Fixes to quoting and here documents in the Perl lexer.
- SciTE on Windows can give extra visual and audio cues when a warning is shown or find restarts from beginning of file.
- Open Selected Filename command in SciTE. Also understands some warning message formats.
- Wider area for line numbers when printing.
- Better scrolling performance on GTK+.
- Fixed problem where rectangles with negative coordinates were invalidated leading to trouble with platforms that use unsigned coordinates.
- GTK+ Scintilla uses more compliant signalling code so that keyboard events should propagate to containers.
- Bug fixed with opening full or partial paths.
- Improved handling of paths in error messages in SciTE.
- Better handling of F6 in SciTE.

### Release 1.33

- Released on 6 November 2000.
- XIM support for the GTK+ version of Scintilla ensures that more non-English characters can be typed.
- Caret may be 1, 2, or 3 pixels wide.
- Cursor may be switched to wait image during lengthy processing.
- Scintilla's internal focus flag is exposed for clients where focus is handled in complex ways.
- Error status defined for Scintilla to hold indication that an operation failed and the reason for that failure. No detection yet implemented but clients may start using the interface so as to be ready for when it does.
- Context sensitive help in SciTE.
- CurrentWord property available in SciTE holding the value of the word the caret is within or near.
- Apache CONF file lexer.
- Changes to Python lexer to allow 'as' as a context sensitive keyword and the string forms starting with u, r, and ur to be recognized.
- SCN_POSCHANGED notification now working and SCN_PAINTED notification added.
- Word part movement commands for cursoring between the parts of reallyLongCamelIdentifiers and other_ways_of_making_words.
- When text on only one line is selected, Shift+Tab moves to the previous tab stop.
- Tab control available for Windows version of SciTE listing all the buffers and making it easy to switch between them.
- SciTE can be set to automatically determine the line ending type from the contents of a file when it is opened.
- Dialogs in GTK+ version of SciTE made more modal and have accelerator keys.
- Find in Files command in GTK+ version of SciTE allows choice of directory.
- On Windows, multiple files can be opened at once.
- SciTE source broken up into more files.
- Scintilla headers made safe for C language, not just C++.
- New printing modes - force background to white and force default background to white.
- Automatic unfolding not occurring when Enter pressed at end of line bug fixed.
- Bugs fixed in line selection.
- Bug fixed with escapes in PHP strings in the HTML lexer.
- Bug fixed in SciTE for GTK+ opening files when given full paths.
- Bug fixed in autocompletion where user backspaces into existing text.
- Bugs fixed in opening files and ensuring they are saved before running. A case bug also fixed here.

### Release 1.32

- Released on 8 September 2000.
- Fixes bugs in complete word and related code. Protection against a bug when receiving a bad argument.

### Release 1.31

- Released on 6 September 2000.
- Scintilla is available as a COM control from the scintillactrl module in CVS.
- Style setting to underline text. Exposed in SciTE as "underlined".
- Style setting to make text invisible.
- SciTE has an extensibility interface that can be used to implement features such as a scripting language or remote control. An example use of this is the extlua module available from CVS which allows SciTE to be scripted in Lua.
- Many minor fixes to all of the lexers.
- New lexer for diff and patch files.
- Error message lexer understands Perl error messages.
- C/C++/Java lexer now supports C#, specifically verbatim strings and @ quoting of identifiers that are the same as keywords. SciTE has a set of keywords for C# and a build command set up for C#.
- Scintilla property to see whether in overtype or insert state.
- PosChanged notification fired when caret moved.
- Comboboxes in dialogs in SciTE on Windows can be horizontally scrolled.
- Autocompletion and calltips can treat the document as case sensitive or case insensitive.
- Autocompletion can be set to automatically choose the only element in a single element list.
- Set of characters that automatically complete an autocompletion list can be set.
- SciTE command to display calltip - useful when dropped because of editing.
- SciTE has a Revert command to go back to the last saved version.
- SciTE has an Export as RTF command. Save as HTML is renamed to Export as HTML and is located on the Export sub menu.
- SciTE command "Complete Word" searches document for any words starting with characters before caret.
- SciTE options for changing aspects of the formatting of files exported as HTML or RTF.
- SciTE "character.set" option for choosing the character set for all fonts.
- SciTE has a "Toggle all folds" command.
- The makefiles have changed. The makefile_vc and makefile_bor files in scintilla/win32 and scite/win32 have been merged into scintilla/win32/scintilla.mak and scite/win32/scite.mak. DEBUG may be defined for all make files and this will turn on assertions and for some make files will choose other debugging options.
- To make debugging easier and allow good use of BoundsChecker there is a Visual C++ project file in scite/boundscheck that builds all of Scintilla and SciTE into one executable.
- The size of the SciTE output window can be set with the output.horizontal.size and output.vertical.size settings.
- SciTE status bar indicator for insert or overwrite mode.
- Performance improvements to autocompletion and calltips.
- A caret redraw problem when undoing is fixed.
- Crash with long lines fixed.
- Bug fixed with merging markers when lines merged.

### Release 1.30

- Released on 26 July 2000.
- Much better support for PHP which is now an integral part of the HTML support.
- Start replacement of Windows-specific APIs with cross platform APIs. In 1.30, the new APIs are introduced but the old APIs are still available. For the GTK+ version, may have to include "WinDefs.h" explicitly to use the old APIs.
- "if" and "import" statements in SciTE properties files allows modularization into language-specific properties files and choices based upon platform. This means that SciTE is delivered with 9 language-specific properties files as well as the standard SciTEGlobal.properties file.
- Much lower resource usage on Windows 9x.
- "/p" option in SciTE on Windows for printing a file and then exiting.
- Options for printing with inverted brightness (when the screen is set to use a dark background) and to force black on white printing.
- Option for printing magnified or miniaturized from screen settings.
- In SciTE, Ctrl+F3 and Ctrl+Shift+F3 find the selection in the forwards and backwards directions respectively.
- Auto-completion lists may be set to cancel when the cursor goes before its start position or before the start of string being completed.
- Auto-completion lists automatically size more sensibly.
- SCI_CLEARDOCUMENTSTYLE zeroes all style bytes, ensures all lines are shown and deletes all folding information.
- On Windows, auto-completion lists are visually outdented rather than indented.
- Close all command in SciTE.
- On Windows multiple files can be dragged into SciTE.
- When saving a file, the SciTE option save.deletes.first deletes it before doing the save. This allows saving with a different capitalization on Windows.
- When use tabs option is off pressing the tab key inserts spaces.
- Bug in indicators leading to extra line drawn fixed.

### Release 1.28

- Released on 27 June 2000.
- Fixes crash in indentation guides when indent size set to 0.
- Fixes to installation on GTK+/Linux. User properties file on GTK+ has a dot at front of name: .SciTEUser.properties. Global properties file location configurable at compile time defaulting to $prefix/share/scite. $prefix determined from Gnome if present else its /usr/local and can be overridden by installer. Gnome menu integration performed in make install if Gnome present.

### Release 1.27

- Released on 23 June 2000.
- Indentation guides. View whitespace mode may be set to not display whitespace in indentation.
- Set methods have corresponding gets for UndoCollection, BufferedDraw, CodePage, UsePalette, ReadOnly, CaretFore, and ModEventMask.
- Caret is continuously on rather than blinking while typing or holding down delete or backspace. And is now always shown if non blinking when focused on GTK+.
- Bug fixed in SciTE with file extension comparison now done in case insensitive way.
- Bugs fixed in SciTE's file path handling on Windows.
- Bug fixed with preprocessor '#' last visible character causing hang.

### Release 1.26

- Released on 13 June 2000.
- Support for the Lua language in both Scintilla and SciTE.
- Multiple buffers may be open in SciTE.
- Each style may have a character set configured. This may determine the characters that are displayed by the style.
- In the C++ lexer, lexing of preprocessor source may either treat it all as being in the preprocessor class or only the initial # and preprocessor command word as being in the preprocessor class.
- Scintilla provides SCI_CREATEDOCUMENT, SCI_ADDREFDOCUMENT, and SCI_RELEASEDOCUMENT to make it easier for a container to deal with multiple documents.
- GTK+ specific definitions in Scintilla.h were removed to ScintillaWidget.h. All GTK+ clients will need to #include "ScintillaWidget.h".
- For GTK+, tools can be executed in the background by setting subsystem to 2.
- Keys in the properties files are now case sensitive. This leads to a performance increase.
- Menu to choose which lexer to use on a file.
- Tab size dialog on Windows.
- File dialogs enlarged on GTK+.
- Match Brace command bound to Ctrl+E on both platforms with Ctrl+] a synonym on Windows. Ctrl+Shift+E is select to matching brace. Brace matching tries to match to either the inside or the outside, depending on whether the cursor is inside or outside the braces initially. View End of Line bound to Ctrl+Shift+O.
- The Home key may be bound to move the caret to either the start of the line or the start of the text on the line.
- Visual C++ project file for SciTE.
- Bug fixed with current x location after Tab key.
- Bug fixed with hiding fold margin by setting fold.margin.width to 0.
- Bugs fixed with file name confusion on Windows when long and short names used, or different capitalizations, or relative paths.

### Release 1.25

- Released on 9 May 2000.
- Some Unicode support on Windows. Treats buffer and API as UTF-8 and displays through UCS-2 of Windows.
- Automatic indentation. Indentation size can be different to tab size.
- Tool bar.
- Status bar now on Windows as well as GTK+.
- Input fields in Find and Replace dialogs now have history on both Windows and GTK+.
- Auto completion list items may be separated by a chosen character to allow spaces in items. The selected item may be changed through the API.
- Horizontal scrollbar can be turned off.
- Property to remove trailing spaces when saving file.
- On Windows, changed font size calculation to be more compatible with other applications.
- On GTK+, SciTE's global properties files are looked for in the directory specified in the SCITE_HOME environment variable if it is set. This allows hiding in a dot directory.
- Keyword lists in SciTE updated for JavaScript to include those destined to be used in the future. IDL includes XPIDL keywords as well as MSIDL keywords.
- Zoom level can be set and queried through API.
- New notification sent before insertions and deletions.
- LaTeX lexer.
- Fixes to folding including when deletions and additions are performed.
- Fix for crash with very long lines.
- Fix to affect all of rectangular selections with deletion and case changing.
- Removed non-working messages that had been included only for Richedit compatibility.

### Release 1.24

- Released on 29 March 2000.
- Added lexing of IDL based on C++ lexer with extra UUID lexical class.
- Functions and associated keys for Line Delete, Line Cut, Line Transpose, Selection Lower Case and Selection Upper Case.
- Property setting for SciTE, eol.mode, chooses initial state of line end characters.
- Fixed bugs in undo history with small almost-contiguous changes being incorrectly coalesced.
- Fixed bugs with incorrect expansion of ContractionState data structures causing crash.
- Fixed bugs relating to null fonts.
- Fixed bugs where recolourization was not done sometimes when required.
- Fixed compilation problems with SVector.h.
- Fixed bad setting of fold points in Python.

### Release 1.23

- Released on 21 March 2000.
- Directory structure to separate on basis of product (Scintilla, SciTE, DMApp) and environment (Cross-platform, Win32, GTK+).
- Download packaging to allow download of the source or platform dependent executables.
- Source code now available from CVS at SourceForge.
- Very simple Windows-only demonstration application DMApp is available from cvs as dmapp.
- Lexing functionality may optionally be included in Scintilla rather than be provided by the container.
- Set of lexers included is determined at link time by defining which of the Lex* object files are linked in.
- On Windows, the SciLexer.DLL extends Scintilla.DLL with the standard lexers.
- Enhanced HTML lexer styles embedded VBScript and Python. ASP segments are styled and ASP scripts in JavaScript, VBScript and Python are styled.
- PLSQL and PHP supported.
- Maximum number of lexical states extended to 128.
- Lexers may store per line parse state for multiple line features such as ASP script language choice.
- Lexing API simplified.
- Project file for Visual C++.
- Can now cycle through all recent files with Ctrl+Tab in SciTE.
- Bookmarks in SciTE.
- Drag and drop copy works when dragging to the edge of the selection.
- Fixed bug with value sizes in properties file.
- Fixed bug with last line in properties file not being used.
- Bug with multiple views of one document fixed.
- Keypad now works on GTK+.

### Release 1.22

- Released on 27 February 2000.
- wxWindows platform defined. Implementation for wxWindows will be available separately from main Scintilla distribution.
- Line folding in Scintilla.
- SciTE performs syntax directed folding for C/C++/Java/JavaScript and for Python.
- Optional macro recording support.
- User properties file (SciTEUser.properties) allows for customization by the user that is not overwritten with each installation of SciTE.
- Python lexer detects and highlights inconsistent indentation.
- Margin API made more orthogonal. SCI_SETMARGINWIDTH and SCI_SETLINENUMBERWIDTH are deprecated in favour of this new API.
- Margins may be made sensitive to forward mouse click events to container.
- SQL lexer and styles included.
- Perl lexer handles regular expressions better.
- Caret policy determines how closely caret is tracked by visible area.
- New marker shapes: arrow pointing down, plus and minus.
- Optionally display full path in title rather than just file name.
- Container is notified when Scintilla gains or loses focus.
- SciTE handles focus in a more standard way and applies the main edit commands to the focused pane.
- Container is notified when Scintilla determines that a line needs to be made visible.
- Document watchers receive notification when document about to be deleted.
- Document interface allows access to list of watchers.
- Line end determined correctly for lines ending with only a '\n'.
- Search variant that searches form current selection and sets selection.
- SciTE understands format of diagnostic messages from WScript.
- SciTE remembers top line of window for each file in MRU list so switching to a recent file is more likely to show the same text as when the file was previously visible.
- Document reference count now initialized correctly.
- Setting a null document pointer creates an empty document.
- WM_GETTEXT can no longer overrun buffer.
- Polygon drawing bug fixed on GTK+.
- Java and JavaScript lexers merged into C++ lexer.
- C++ lexer indicates unterminated strings by colouring the end of the line rather than changing the rest of the file to string style. This is less obtrusive and helps the folding.

### Release 1.21

- Released on 2 February 2000.
- Blank margins on left and right side of text.
- SCN_CHECKBRACE renamed SCN_UPDATEUI and made more efficient.
- SciTE source code refactored into platform independent and platform specific classes.
- XML and Perl subset lexers in SciTE.
- Large improvement to lexing speed.
- A new subsystem, 2, allows use of ShellExec on Windows.
- Borland compatible makefile.
- Status bar showing caret position in GTK+ version of SciTE.
- Bug fixes to selection drawing when part of selection outside window, mouse release over scroll bars, and scroll positioning after deletion.

### Release 1.2

- Released on 21 January 2000.
- Multiple views of one document.
- Rectangular selection, cut, copy, paste, drag and drop.
- Long line indication.
- Reverse searching
- Line end conversion.
- Generic autocompletion and calltips in SciTE.
- Call tip background colour can be set.
- SCI_MARKERPREV for moving to a previous marker.
- Caret kept more within window where possible.

### Release 1.15

- Released on 15 December 1999.
- Brace highlighting and badlighting (for mismatched braces).
- Visible line ends.
- Multiple line call tips.
- Printing now works from SciTE on Windows.
- SciTE has a global "*" lexer style that is used as the basis for all the lexers' styles.
- Fixes some warnings on GTK+ 1.2.6.
- Better handling of modal dialogs on GTK+.
- Resize handle drawn on pane splitter in SciTE on GTK+ so it looks more like a regular GTK+ *paned widget.
- SciTE does not place window origin offscreen if no properties file found on GTK+.
- File open filter remembered in SciTE on Windows.
- New mechanism using style numbers 32 to 36 standardizes the setting of styles for brace highlighting, brace badlighting, line numbers, control characters and the default style.
- Old messages SCI_SETFORE .. SCI_SETFONT have been replaced by the default style 32. The old messages are deprecated and will disappear in a future version.

### Release 1.14

- Released on 20 November 1999.
- Fixes a scrolling bug reported on GTK+.

### Release 1.13

- Released on 18 November 1999.
- Fixes compilation problems with the mingw32 GCC 2.95.2 on Windows.
- Control characters are now visible.
- Performance has improved, particularly for scrolling.
- Windows RichEdit emulation is more accurate. This may break client code that uses these messages: EM_GETLINE, EM_GETLINECOUNT, EM_EXGETSEL, EM_EXSETSEL, EM_EXLINEFROMCHAR, EM_LINELENGTH, EM_LINEINDEX, EM_CHARFROMPOS, EM_POSFROMCHAR, and EM_GETTEXTRANGE.
- Menus rearranged and accelerator keys set for all static items.
- Placement of space indicators in view whitespace mode is more accurate with some fonts.

### Release 1.12

- Released on 9 November 1999.
- Packaging error in 1.11 meant that the compilation error was not fixed in that release. Linux/GTK+ should compile with GCC 2.95 this time.

### Release 1.11

- Released on 7 November 1999.
- Fixed a compilation bug in ScintillaGTK.cxx.
- Added a README file to explain how to build.
- GTK+/Linux downloads now include documentation.
- Binary only Sc1.EXE one file download for Windows.

### Release 1.1

- Released on 6 November 1999.
- Major restructuring for better modularity and platform independence.
- Inter-application drag and drop.
- Printing support in Scintilla on Windows.
- Styles can select colouring to end of line. This can be used when a file contains more than one language to differentiate between the areas in each language. An example is the HTML + JavaScript styling in SciTE.
- Actions can be grouped in the undo stack, so they will be undone together. This grouping is hierarchical so higher level actions such as replace all can be undone in one go. Call to discover whether there are any actions to redo.
- The set of characters that define words can be changed.
- Markers now have identifiers and can be found and deleted by their identifier. The empty marker type can be used to make a marker that is invisible and which is only used to trace where a particular line moves to.
- Double click notification.
- HTML styling in SciTE also styles embedded JavaScript.
- Additional tool commands can be added to SciTE.
- SciTE option to allow reloading if changed upon application activation and saving on application deactivation. Not yet working on GTK+ version.
- Entry fields in search dialogs remember last 10 user entries. Not working in all cases in Windows version.
- SciTE can save a styled copy of the current file in HTML format. As SciTE does not yet support printing, this can be used to print a file by then using a browser to print the HTML file.

### Release 1.02

- Released on 1 October 1999.
- GTK+ version compiles with GCC 2.95.
- Properly deleting objects when window destroyed under GTK+.
- If the selection is not empty backspace deletes the selection.
- Some X style middle mouse button handling for copying the primary selection to and from Scintilla. Does not work in all cases.
- HTML styling in SciTE.
- Stopped dirty flag being set in SciTE when results pane modified.

### Release 1.01

- Released on 28 September 1999.
- Better DBCS support on Windows including IME.
- Wheel mouse support for scrolling and zooming on Windows. Zooming with Ctrl+KeypadPlus and Ctrl+KeypadMinus.
- Performance improvements especially on GTK+.
- Caret blinking and settable colour on both GTK+ and Windows.
- Drag and drop within a Scintilla window. On Windows, files can be dragged into SciTE.

### Release 1.0

- Released on 17 May 1999.
- Changed name of "Tide" to "SciTE" to avoid clash with a TCL based IDE. "SciTE" is a SCIntilla based Text Editor and is Latin meaning something like "understanding in a neat way" and is also an Old English version of the word "shit".
- There is a SCI_AUTOCSTOPS message for defining a string of characters that will stop autocompletion mode. Autocompletion mode is cancelled when any cursor movement occurs apart from backspace.
- GTK+ version now splits horizontally as well as vertically and all dialogs cancel when the escape key is pressed.

### Beta release 0.93

- Released on 12 May 1999.
- A bit more robust than 0.92 and supports SCI_MARKERNEXT message.

### Beta release 0.92

- Released on 11 May 1999.
- GTK+ version now contains all features of Windows version with some very small differences. Executing programs works much better now.
- New palette code to allow more colours to be displayed in 256 colour screen modes. A line number column can be displayed to the left of the selection margin.
- The code that maps from line numbers to text positions and back has been completely rewritten to be faster, and to allow markers to move with the text.

### Beta release 0.91

- Released on 30 April 1999, containing fixes to text measuring to make Scintilla work better with bitmap fonts. Also some small fixes to make compiling work with Visual C++.

### Beta release 0.90

- Released on 29 April 1999, containing working GTK+/Linux version.
- The Java, C++ and Python lexers recognize operators as distinct from default allowing them to be highlighted.

### Beta release 0.82

- Released on 1 April 1999, to fix a problem with handling the Enter key in PythonWin. Also fixes some problems with cmd key mapping.

### Beta release 0.81

- Released on 30th March 1999, containing bug fixes and a few more features.
- Static linking supported and Tidy.EXE, a statically linked version of Tide.EXE. Changes to compiler flags in the makefiles to optimize for size.
- Scintilla supports a 'savepoint' in the undo stack which can be set by the container when the document is saved. Notifications are sent to the container when the savepoint is entered or left, allowing the container to to display a dirty indicator and change its menus.
- When Scintilla is set to read-only mode, a notification is sent to the container should the user try to edit the document. This can be used to check the document out of a version control system.
- There is an API for setting the appearance of indicators.
- The keyboard mapping can be redefined or removed so it can be implemented completely by the container. All of the keyboard commands are now commands which can be sent by the container.
- A home command like Visual C++ with one hit going to the start of the text on the line and the next going to the left margin is available. I do not personally like this but my fingers have become trained to it by much repetition.
- SCI_MARKERDELETEALL has an argument in wParam which is the number of the type marker to delete with -1 performing the old action of removing all marker types.
- Tide now understands both the file name and line numbers in error messages in most cases.
- Tide remembers the current lines of files in the recently used list.
- Tide has a Find in Files command.

### Beta release 0.80

- This was the first public release on 14th March 1999, containing a mostly working Win32 Scintilla DLL and Tide EXE.

### Beta releases of SciTE were called Tide