Branch: refs/heads/master Author: Colomban Wendling ban@herbesfolles.org Committer: Colomban Wendling ban@herbesfolles.org Date: Thu, 28 Apr 2016 23:12:20 UTC Commit: 1403d352b2f38c68a10e0ce4b6eb686fbef8920d https://github.com/geany/geany/commit/1403d352b2f38c68a10e0ce4b6eb686fbef892...
Log Message: ----------- Update Scintilla to version 3.6.5
Modified Paths: -------------- scintilla/gtk/PlatGTK.cxx scintilla/gtk/ScintillaGTK.cxx scintilla/include/SciLexer.h scintilla/include/Scintilla.iface scintilla/lexers/LexCPP.cxx scintilla/lexers/LexPython.cxx scintilla/lexers/LexRust.cxx scintilla/lexlib/Accessor.cxx scintilla/lexlib/WordList.cxx scintilla/scintilla_changes.patch scintilla/src/Document.cxx scintilla/src/EditView.cxx scintilla/src/Editor.cxx scintilla/src/Editor.h scintilla/src/KeyMap.h scintilla/src/Position.h scintilla/src/RESearch.h scintilla/version.txt
Modified: scintilla/gtk/PlatGTK.cxx 272 lines changed, 22 insertions(+), 250 deletions(-) =================================================================== @@ -3,10 +3,10 @@ // Copyright 1998-2004 by Neil Hodgson neilh@scintilla.org // The License.txt file describes the conditions under which this software may be distributed.
+#include <stddef.h> #include <stdlib.h> #include <string.h> #include <stdio.h> -#include <stddef.h> #include <math.h>
#include <string> @@ -33,13 +33,6 @@ #pragma GCC diagnostic ignored "-Wsentinel" #endif
-/* GLIB must be compiled with thread support, otherwise we - will bail on trying to use locks, and that could lead to - problems for someone. `glib-config --libs gthread` needs - to be used to get the glib libraries for linking, otherwise - g_thread_init will fail */ -#define USE_LOCK defined(G_THREADS_ENABLED) && !defined(G_THREADS_IMPL_NONE) - #include "Converter.h"
static const double kPi = 3.14159265358979323846; @@ -88,118 +81,39 @@ using namespace Scintilla;
enum encodingType { singleByte, UTF8, dbcs};
-struct LOGFONT { - int size; - int weight; - bool italic; - int characterSet; - char faceName[300]; -}; - -#if USE_LOCK -static GMutex *fontMutex = NULL; - -static void InitializeGLIBThreads() { -#if !GLIB_CHECK_VERSION(2,31,0) - if (!g_thread_supported()) { - g_thread_init(NULL); - } -#endif -} -#endif - -static void FontMutexAllocate() { -#if USE_LOCK - if (!fontMutex) { - InitializeGLIBThreads(); -#if GLIB_CHECK_VERSION(2,31,0) - fontMutex = g_new(GMutex, 1); - g_mutex_init(fontMutex); -#else - fontMutex = g_mutex_new(); -#endif - } -#endif -} - -static void FontMutexFree() { -#if USE_LOCK - if (fontMutex) { -#if GLIB_CHECK_VERSION(2,31,0) - g_mutex_clear(fontMutex); - g_free(fontMutex); -#else - g_mutex_free(fontMutex); -#endif - fontMutex = NULL; - } -#endif -} - -static void FontMutexLock() { -#if USE_LOCK - g_mutex_lock(fontMutex); -#endif -} - -static void FontMutexUnlock() { -#if USE_LOCK - if (fontMutex) { - g_mutex_unlock(fontMutex); - } -#endif -} - // Holds a PangoFontDescription*. class FontHandle { - XYPOSITION width[128]; - encodingType et; public: - int ascent; PangoFontDescription *pfd; int characterSet; - FontHandle() : et(singleByte), ascent(0), pfd(0), characterSet(-1) { - ResetWidths(et); + FontHandle() : pfd(0), characterSet(-1) { } FontHandle(PangoFontDescription *pfd_, int characterSet_) { - et = singleByte; - ascent = 0; pfd = pfd_; characterSet = characterSet_; - ResetWidths(et); } ~FontHandle() { if (pfd) pango_font_description_free(pfd); pfd = 0; } - void ResetWidths(encodingType et_) { - et = et_; - for (int i=0; i<=127; i++) { - width[i] = 0; - } - } - XYPOSITION CharWidth(unsigned char ch, encodingType et_) const { - XYPOSITION w = 0; - FontMutexLock(); - if ((ch <= 127) && (et == et_)) { - w = width[ch]; - } - FontMutexUnlock(); - return w; - } - void SetCharWidth(unsigned char ch, XYPOSITION w, encodingType et_) { - if (ch <= 127) { - FontMutexLock(); - if (et != et_) { - ResetWidths(et_); - } - width[ch] = w; - FontMutexUnlock(); - } - } + static FontHandle *CreateNewFont(const FontParameters &fp); };
+FontHandle *FontHandle::CreateNewFont(const FontParameters &fp) { + PangoFontDescription *pfd = pango_font_description_new(); + if (pfd) { + pango_font_description_set_family(pfd, + (fp.faceName[0] == '!') ? fp.faceName+1 : fp.faceName); + pango_font_description_set_size(pfd, pangoUnitsFromDouble(fp.size)); + pango_font_description_set_weight(pfd, static_cast<PangoWeight>(fp.weight)); + pango_font_description_set_style(pfd, fp.italic ? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL); + return new FontHandle(pfd,fp.characterSet); + } + + return NULL; +} + // X has a 16 bit coordinate space, so stop drawing here to avoid wrapping static const int maxCoordinate = 32000;
@@ -217,143 +131,18 @@ Point Point::FromLong(long lpoint) { Platform::HighShortFromLong(lpoint)); }
-static void SetLogFont(LOGFONT &lf, const char *faceName, int characterSet, float size, int weight, bool italic) { - lf = LOGFONT(); - lf.size = size; - lf.weight = weight; - lf.italic = italic; - lf.characterSet = characterSet; - StringCopy(lf.faceName, faceName); -} - -/** - * Create a hash from the parameters for a font to allow easy checking for identity. - * If one font is the same as another, its hash will be the same, but if the hash is the - * same then they may still be different. - */ -static int HashFont(const FontParameters &fp) { - return - static_cast<int>(fp.size+0.5) ^ - (fp.characterSet << 10) ^ - ((fp.weight / 100) << 12) ^ - (fp.italic ? 0x20000000 : 0) ^ - fp.faceName[0]; -} - -class FontCached : Font { - FontCached *next; - int usage; - LOGFONT lf; - int hash; - explicit FontCached(const FontParameters &fp); - ~FontCached() {} - bool SameAs(const FontParameters &fp); - virtual void Release(); - static FontID CreateNewFont(const FontParameters &fp); - static FontCached *first; -public: - static FontID FindOrCreate(const FontParameters &fp); - static void ReleaseId(FontID fid_); - static void ReleaseAll(); -}; - -FontCached *FontCached::first = 0; - -FontCached::FontCached(const FontParameters &fp) : -next(0), usage(0), hash(0) { - ::SetLogFont(lf, fp.faceName, fp.characterSet, fp.size, fp.weight, fp.italic); - hash = HashFont(fp); - fid = CreateNewFont(fp); - usage = 1; -} - -bool FontCached::SameAs(const FontParameters &fp) { - return - lf.size == fp.size && - lf.weight == fp.weight && - lf.italic == fp.italic && - lf.characterSet == fp.characterSet && - 0 == strcmp(lf.faceName, fp.faceName); -} - -void FontCached::Release() { - if (fid) - delete PFont(*this); - fid = 0; -} - -FontID FontCached::FindOrCreate(const FontParameters &fp) { - FontID ret = 0; - FontMutexLock(); - int hashFind = HashFont(fp); - for (FontCached *cur = first; cur; cur = cur->next) { - if ((cur->hash == hashFind) && - cur->SameAs(fp)) { - cur->usage++; - ret = cur->fid; - } - } - if (ret == 0) { - FontCached *fc = new FontCached(fp); - fc->next = first; - first = fc; - ret = fc->fid; - } - FontMutexUnlock(); - return ret; -} - -void FontCached::ReleaseId(FontID fid_) { - FontMutexLock(); - FontCached **pcur = &first; - for (FontCached *cur = first; cur; cur = cur->next) { - if (cur->fid == fid_) { - cur->usage--; - if (cur->usage == 0) { - *pcur = cur->next; - cur->Release(); - cur->next = 0; - delete cur; - } - break; - } - pcur = &cur->next; - } - FontMutexUnlock(); -} - -void FontCached::ReleaseAll() { - while (first) { - ReleaseId(first->GetID()); - } -} - -FontID FontCached::CreateNewFont(const FontParameters &fp) { - PangoFontDescription *pfd = pango_font_description_new(); - if (pfd) { - pango_font_description_set_family(pfd, - (fp.faceName[0] == '!') ? fp.faceName+1 : fp.faceName); - pango_font_description_set_size(pfd, pangoUnitsFromDouble(fp.size)); - pango_font_description_set_weight(pfd, static_cast<PangoWeight>(fp.weight)); - pango_font_description_set_style(pfd, fp.italic ? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL); - return new FontHandle(pfd, fp.characterSet); - } - - return new FontHandle(); -} - Font::Font() : fid(0) {}
Font::~Font() {}
void Font::Create(const FontParameters &fp) { Release(); - fid = FontCached::FindOrCreate(fp); + fid = FontHandle::CreateNewFont(fp); }
void Font::Release() { if (fid) - FontCached::ReleaseId(fid); + delete static_cast<FontHandle *>(fid); fid = 0; }
@@ -989,13 +778,6 @@ void SurfaceImpl::MeasureWidths(Font &font_, const char *s, int len, XYPOSITION if (font_.GetID()) { const int lenPositions = len; if (PFont(font_)->pfd) { - if (len == 1) { - int width = PFont(font_)->CharWidth(*s, et); - if (width) { - positions[0] = width; - return; - } - } pango_layout_set_font_description(layout, PFont(font_)->pfd); if (et == UTF8) { // Simple and direct as UTF-8 is native Pango encoding @@ -1089,10 +871,6 @@ void SurfaceImpl::MeasureWidths(Font &font_, const char *s, int len, XYPOSITION PLATFORM_ASSERT(i == lenPositions); } } - if (len == 1) { - PFont(font_)->SetCharWidth(*s, positions[0], et); - } - return; } } else { // No font so return an ascending range of values @@ -1148,20 +926,17 @@ XYPOSITION SurfaceImpl::WidthChar(Font &font_, char ch) { XYPOSITION SurfaceImpl::Ascent(Font &font_) { if (!(font_.GetID())) return 1; - FontMutexLock(); - int ascent = PFont(font_)->ascent; - if ((ascent == 0) && (PFont(font_)->pfd)) { + int ascent = 0; + if (PFont(font_)->pfd) { PangoFontMetrics *metrics = pango_context_get_metrics(pcontext, PFont(font_)->pfd, pango_context_get_language(pcontext)); - PFont(font_)->ascent = + ascent = doubleFromPangoUnits(pango_font_metrics_get_ascent(metrics)); pango_font_metrics_unref(metrics); - ascent = PFont(font_)->ascent; } if (ascent == 0) { ascent = 1; } - FontMutexUnlock(); return ascent; }
@@ -2298,10 +2073,7 @@ int Platform::Clamp(int val, int minVal, int maxVal) { }
void Platform_Initialise() { - FontMutexAllocate(); }
void Platform_Finalise() { - FontCached::ReleaseAll(); - FontMutexFree(); }
Modified: scintilla/gtk/ScintillaGTK.cxx 49 lines changed, 16 insertions(+), 33 deletions(-) =================================================================== @@ -19,6 +19,7 @@
#include <glib.h> #include <gmodule.h> +#include <gdk/gdk.h> #include <gtk/gtk.h> #include <gdk/gdkkeysyms.h>
@@ -423,7 +424,7 @@ ScintillaGTK::ScintillaGTK(_ScintillaObject *sci_) : }
ScintillaGTK::~ScintillaGTK() { - g_idle_remove_by_data(this); + g_source_remove_by_user_data(this); if (evbtn) { gdk_event_free(reinterpret_cast<GdkEvent *>(evbtn)); evbtn = 0; @@ -1077,7 +1078,7 @@ bool ScintillaGTK::FineTickerRunning(TickReason reason) {
void ScintillaGTK::FineTickerStart(TickReason reason, int millis, int /* tolerance */) { FineTickerCancel(reason); - timers[reason].timer = g_timeout_add(millis, TimeOut, &timers[reason]); + timers[reason].timer = gdk_threads_add_timeout(millis, TimeOut, &timers[reason]); }
void ScintillaGTK::FineTickerCancel(TickReason reason) { @@ -1093,7 +1094,7 @@ bool ScintillaGTK::SetIdle(bool on) { if (!idler.state) { idler.state = true; idler.idlerID = reinterpret_cast<IdlerID>( - g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, IdleCallback, this, NULL)); + gdk_threads_add_idle_full(G_PRIORITY_DEFAULT_IDLE, IdleCallback, this, NULL)); } } else { // Stop idler, if it's running @@ -2192,6 +2193,7 @@ gboolean ScintillaGTK::KeyThis(GdkEventKey *event) { bool shift = (event->state & GDK_SHIFT_MASK) != 0; bool ctrl = (event->state & GDK_CONTROL_MASK) != 0; bool alt = (event->state & GDK_MOD1_MASK) != 0; + bool super = (event->state & GDK_MOD4_MASK) != 0; guint key = event->keyval; if ((ctrl || alt) && (key < 128)) key = toupper(key); @@ -2208,15 +2210,12 @@ gboolean ScintillaGTK::KeyThis(GdkEventKey *event) {
bool consumed = false; #if !(PLAT_GTK_MACOSX) - bool added = KeyDown(key, shift, ctrl, alt, &consumed) != 0; + bool meta = false; #else bool meta = ctrl; ctrl = (event->state & GDK_META_MASK) != 0; - bool added = KeyDownWithModifiers(key, (shift ? SCI_SHIFT : 0) | - (ctrl ? SCI_CTRL : 0) | - (alt ? SCI_ALT : 0) | - (meta ? SCI_META : 0), &consumed) != 0; #endif + bool added = KeyDownWithModifiers(key, ModifierFlags(shift, ctrl, alt, meta, super), &consumed) != 0; if (!consumed) consumed = added; //fprintf(stderr, "SK-key: %d %x %x\n",event->keyval, event->state, consumed); @@ -2454,13 +2453,8 @@ void ScintillaGTK::PreeditChangedInlineThis() {
pdoc->TentativeStart(); // TentativeActive() from now on
- // Get preedit string attribues std::vector<int> indicator = MapImeIndicators(preeditStr.attrs, preeditStr.str);
- // Display preedit characters, one by one - glong imeCharPos[maxLenInputIME+1] = { 0 }; - glong charWidth = 0; - bool tmpRecordingMacro = recordingMacro; recordingMacro = false; for (glong i = 0; i < preeditStr.uniStrLen; i++) { @@ -2472,21 +2466,22 @@ void ScintillaGTK::PreeditChangedInlineThis() {
AddCharUTF(docChar.c_str(), docChar.size());
- // Draw an indicator on the character, DrawImeIndicator(indicator[i], docChar.size()); - - // Record character positions in UTF-8 or DBCS bytes - charWidth += docChar.size(); - imeCharPos[i+1] = charWidth; } recordingMacro = tmpRecordingMacro;
// Move caret to ime cursor position. - MoveImeCarets( - (imeCharPos[preeditStr.uniStrLen]) + imeCharPos[preeditStr.cursor_pos]); + int imeEndToImeCaretU32 = preeditStr.cursor_pos - preeditStr.uniStrLen; + int imeCaretPosDoc = pdoc->GetRelativePosition(CurrentPosition(), imeEndToImeCaretU32); + + MoveImeCarets(- CurrentPosition() + imeCaretPosDoc);
if (KoreanIME()) { #if !PLAT_GTK_WIN32 - MoveImeCarets( - imeCharPos[1]); // always 2 bytes for DBCS or 3 bytes for UTF8. + if (preeditStr.cursor_pos > 0) { + int oneCharBefore = pdoc->GetRelativePosition(CurrentPosition(), -1); + MoveImeCarets(- CurrentPosition() + oneCharBefore); + } #endif view.imeCaretBlockOverride = true; } @@ -2939,31 +2934,19 @@ gboolean ScintillaGTK::IdleCallback(gpointer pSci) { ScintillaGTK *sciThis = static_cast<ScintillaGTK *>(pSci); // Idler will be automatically stopped, if there is nothing // to do while idle. -#ifndef GDK_VERSION_3_6 - gdk_threads_enter(); -#endif bool ret = sciThis->Idle(); if (ret == false) { // FIXME: This will remove the idler from GTK, we don't want to // remove it as it is removed automatically when this function // returns false (although, it should be harmless). sciThis->SetIdle(false); } -#ifndef GDK_VERSION_3_6 - gdk_threads_leave(); -#endif return ret; }
gboolean ScintillaGTK::StyleIdle(gpointer pSci) { -#ifndef GDK_VERSION_3_6 - gdk_threads_enter(); -#endif ScintillaGTK *sciThis = static_cast<ScintillaGTK *>(pSci); sciThis->IdleWork(); -#ifndef GDK_VERSION_3_6 - gdk_threads_leave(); -#endif // Idler will be automatically stopped return FALSE; } @@ -2973,7 +2956,7 @@ void ScintillaGTK::QueueIdleWork(WorkNeeded::workItems items, int upTo) { if (!workNeeded.active) { // Only allow one style needed to be queued workNeeded.active = true; - g_idle_add_full(G_PRIORITY_HIGH_IDLE, StyleIdle, this, NULL); + gdk_threads_add_idle_full(G_PRIORITY_HIGH_IDLE, StyleIdle, this, NULL); } }
Modified: scintilla/include/SciLexer.h 15 lines changed, 15 insertions(+), 0 deletions(-) =================================================================== @@ -132,6 +132,7 @@ #define SCLEX_SREC 117 #define SCLEX_IHEX 118 #define SCLEX_TEHEX 119 +#define SCLEX_JSON 120 #define SCLEX_AUTOMATIC 1000 #define SCE_P_DEFAULT 0 #define SCE_P_COMMENTLINE 1 @@ -1787,6 +1788,20 @@ #define SCE_HEX_CHECKSUM 16 #define SCE_HEX_CHECKSUM_WRONG 17 #define SCE_HEX_GARBAGE 18 +#define SCE_JSON_DEFAULT 0 +#define SCE_JSON_NUMBER 1 +#define SCE_JSON_STRING 2 +#define SCE_JSON_STRINGEOL 3 +#define SCE_JSON_PROPERTYNAME 4 +#define SCE_JSON_ESCAPESEQUENCE 5 +#define SCE_JSON_LINECOMMENT 6 +#define SCE_JSON_BLOCKCOMMENT 7 +#define SCE_JSON_OPERATOR 8 +#define SCE_JSON_URI 9 +#define SCE_JSON_COMPACTIRI 10 +#define SCE_JSON_KEYWORD 11 +#define SCE_JSON_LDKEYWORD 12 +#define SCE_JSON_ERROR 13 /* --Autogenerated -- end of section automatically generated from Scintilla.iface */
#endif
Modified: scintilla/include/Scintilla.iface 17 lines changed, 17 insertions(+), 0 deletions(-) =================================================================== @@ -2799,6 +2799,7 @@ val SCLEX_BIBTEX=116 val SCLEX_SREC=117 val SCLEX_IHEX=118 val SCLEX_TEHEX=119 +val SCLEX_JSON=120
# When a lexer specifies its language as SCLEX_AUTOMATIC it receives a # value assigned in sequence from SCLEX_AUTOMATIC+1. @@ -4677,6 +4678,22 @@ val SCE_HEX_GARBAGE=18 lex IHex=SCLEX_IHEX SCE_HEX_ # Lexical state for SCLEX_TEHEX (shared with Srec) lex TEHex=SCLEX_TEHEX SCE_HEX_ +# Lexical states for SCLEX_JSON +lex JSON=SCLEX_JSON SCE_JSON_ +val SCE_JSON_DEFAULT=0 +val SCE_JSON_NUMBER=1 +val SCE_JSON_STRING=2 +val SCE_JSON_STRINGEOL=3 +val SCE_JSON_PROPERTYNAME=4 +val SCE_JSON_ESCAPESEQUENCE=5 +val SCE_JSON_LINECOMMENT=6 +val SCE_JSON_BLOCKCOMMENT=7 +val SCE_JSON_OPERATOR=8 +val SCE_JSON_URI=9 +val SCE_JSON_COMPACTIRI=10 +val SCE_JSON_KEYWORD=11 +val SCE_JSON_LDKEYWORD=12 +val SCE_JSON_ERROR=13
# Events
Modified: scintilla/lexers/LexCPP.cxx 3 lines changed, 3 insertions(+), 0 deletions(-) =================================================================== @@ -761,6 +761,9 @@ void SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int i lineCurrent++; lineEndNext = styler.LineEnd(lineCurrent); vlls.Add(lineCurrent, preproc); + if (rawStringTerminator != "") { + rawSTNew.Set(lineCurrent-1, rawStringTerminator); + } sc.Forward(); if (sc.ch == '\r' && sc.chNext == '\n') { // Even in UTF-8, \r and \n are separate
Modified: scintilla/lexers/LexPython.cxx 16 lines changed, 15 insertions(+), 1 deletions(-) =================================================================== @@ -117,6 +117,17 @@ inline bool IsAWordStart(int ch) { return (ch < 0x80) && (isalnum(ch) || ch == '_'); }
+static bool IsFirstNonWhitespace(Sci_Position pos, Accessor &styler) { + Sci_Position line = styler.GetLine(pos); + Sci_Position start_pos = styler.LineStart(line); + for (Sci_Position i = start_pos; i < pos; i++) { + char ch = styler[i]; + if (!(ch == ' ' || ch == '\t')) + return false; + } + return true; +} + // Options used for LexerPython struct OptionsPython { int whingeLevel; @@ -560,7 +571,10 @@ void SCI_METHOD LexerPython::Lex(Sci_PositionU startPos, Sci_Position length, in } else if (sc.ch == '#') { sc.SetState(sc.chNext == '#' ? SCE_P_COMMENTBLOCK : SCE_P_COMMENTLINE); } else if (sc.ch == '@') { - sc.SetState(SCE_P_DECORATOR); + if (IsFirstNonWhitespace(sc.currentPos, styler)) + sc.SetState(SCE_P_DECORATOR); + else + sc.SetState(SCE_P_OPERATOR); } else if (IsPyStringStart(sc.ch, sc.chNext, sc.GetRelative(2), allowedLiterals)) { Sci_PositionU nextIndex = 0; sc.SetState(GetPyStringState(styler, sc.currentPos, &nextIndex, allowedLiterals));
Modified: scintilla/lexers/LexRust.cxx 2 lines changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -339,7 +339,7 @@ static bool IsOneCharOperator(int c) { || c == '*' || c == '/' || c == '^' || c == '%' || c == '.' || c == ':' || c == '!' || c == '<' || c == '>' || c == '=' || c == '-' || c == '&' - || c == '|' || c == '$'; + || c == '|' || c == '$' || c == '?'; }
static bool IsTwoCharOperator(int c, int n) {
Modified: scintilla/lexlib/Accessor.cxx 4 lines changed, 2 insertions(+), 2 deletions(-) =================================================================== @@ -1,6 +1,6 @@ // Scintilla source code edit control -/** @file KeyWords.cxx - ** Colourise for particular languages. +/** @file Accessor.cxx + ** Interfaces between Scintilla and lexers. **/ // Copyright 1998-2002 by Neil Hodgson neilh@scintilla.org // The License.txt file describes the conditions under which this software may be distributed.
Modified: scintilla/lexlib/WordList.cxx 4 lines changed, 2 insertions(+), 2 deletions(-) =================================================================== @@ -1,6 +1,6 @@ // Scintilla source code edit control -/** @file KeyWords.cxx - ** Colourise for particular languages. +/** @file WordList.cxx + ** Hold a list of words. **/ // Copyright 1998-2002 by Neil Hodgson neilh@scintilla.org // The License.txt file describes the conditions under which this software may be distributed.
Modified: scintilla/scintilla_changes.patch 3 lines changed, 2 insertions(+), 1 deletions(-) =================================================================== @@ -82,7 +82,7 @@ diff --git scintilla/src/Catalogue.cxx scintilla/src/Catalogue.cxx index ed47aa8..e58f1ab 100644 --- scintilla/src/Catalogue.cxx +++ scintilla/src/Catalogue.cxx -@@ -77,120 +77,50 @@ int Scintilla_LinkLexers() { +@@ -77,121 +77,50 @@ int Scintilla_LinkLexers() {
//++Autogenerated -- run scripts/LexGen.py to regenerate //**(\tLINK_LEXER(*);\n) @@ -135,6 +135,7 @@ index ed47aa8..e58f1ab 100644 LINK_LEXER(lmHTML); - LINK_LEXER(lmIHex); - LINK_LEXER(lmInno); +- LINK_LEXER(lmJSON); - LINK_LEXER(lmKix); - LINK_LEXER(lmKVIrc); LINK_LEXER(lmLatex);
Modified: scintilla/src/Document.cxx 4 lines changed, 2 insertions(+), 2 deletions(-) =================================================================== @@ -2617,9 +2617,9 @@ bool MatchOnLines(const Document *doc, const Regex ®exp, const RESearchRange for (size_t co = 0; co < match.size(); co++) { search.bopat[co] = match[co].first.Pos(); search.eopat[co] = match[co].second.PosRoundUp(); - size_t lenMatch = search.eopat[co] - search.bopat[co]; + Sci::Position lenMatch = search.eopat[co] - search.bopat[co]; search.pat[co].resize(lenMatch); - for (size_t iPos = 0; iPos < lenMatch; iPos++) { + for (Sci::Position iPos = 0; iPos < lenMatch; iPos++) { search.pat[co][iPos] = doc->CharAt(iPos + search.bopat[co]); } }
Modified: scintilla/src/EditView.cxx 2 lines changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -1,5 +1,5 @@ // Scintilla source code edit control -/** @file Editor.cxx +/** @file EditView.cxx ** Defines the appearance of the main text area of the editor window. **/ // Copyright 1998-2014 by Neil Hodgson neilh@scintilla.org
Modified: scintilla/src/Editor.cxx 5 lines changed, 3 insertions(+), 2 deletions(-) =================================================================== @@ -2265,12 +2265,13 @@ void Editor::DelCharBack(bool allowLineStartDeletion) { ShowCaretAtCurrentPosition(); }
-int Editor::ModifierFlags(bool shift, bool ctrl, bool alt, bool meta) { +int Editor::ModifierFlags(bool shift, bool ctrl, bool alt, bool meta, bool super) { return (shift ? SCI_SHIFT : 0) | (ctrl ? SCI_CTRL : 0) | (alt ? SCI_ALT : 0) | - (meta ? SCI_META : 0); + (meta ? SCI_META : 0) | + (super ? SCI_SUPER : 0); }
void Editor::NotifyFocus(bool focus) {
Modified: scintilla/src/Editor.h 2 lines changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -414,7 +414,7 @@ class Editor : public EditModel, public DocWatcher { void DelCharBack(bool allowLineStartDeletion); virtual void ClaimSelection() = 0;
- static int ModifierFlags(bool shift, bool ctrl, bool alt, bool meta=false); + static int ModifierFlags(bool shift, bool ctrl, bool alt, bool meta=false, bool super=false); virtual void NotifyChange() = 0; virtual void NotifyFocus(bool focus); virtual void SetCtrlID(int identifier);
Modified: scintilla/src/KeyMap.h 1 lines changed, 1 insertions(+), 0 deletions(-) =================================================================== @@ -17,6 +17,7 @@ namespace Scintilla { #define SCI_CTRL SCMOD_CTRL #define SCI_ALT SCMOD_ALT #define SCI_META SCMOD_META +#define SCI_SUPER SCMOD_SUPER #define SCI_CSHIFT (SCI_CTRL | SCI_SHIFT) #define SCI_ASHIFT (SCI_ALT | SCI_SHIFT)
Modified: scintilla/src/Position.h 15 lines changed, 11 insertions(+), 4 deletions(-) =================================================================== @@ -1,21 +1,28 @@ // Scintilla source code edit control /** @file Position.h - ** Will define global type name Position in the Sci internal namespace. + ** Defines global type name Position in the Sci internal namespace. **/ // Copyright 2015 by Neil Hodgson neilh@scintilla.org // The License.txt file describes the conditions under which this software may be distributed.
#ifndef POSITION_H #define POSITION_H
+/** + * A Position is a position within a document between two characters or at the beginning or end. + * Sometimes used as a character index where it identifies the character after the position. + */ + namespace Sci {
-// After 3.6.0: -// typedef int Position; +typedef int Position;
// A later version (4.x) of this file may: //#if defined(SCI_LARGE_FILE_SUPPORT) -//typedef ptrdiff_t Position; +//typedef std::ptrdiff_t Position; +// or may allow runtime choice between different position sizes. + +const Position invalidPosition = -1;
}
Modified: scintilla/src/RESearch.h 2 lines changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -39,7 +39,7 @@ class RESearch { int Execute(CharacterIndexer &ci, int lp, int endp);
enum { MAXTAG=10 }; - enum { MAXNFA=2048 }; + enum { MAXNFA=4096 }; enum { NOTFOUND=-1 };
int bopat[MAXTAG];
Modified: scintilla/version.txt 2 lines changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -1 +1 @@ -364 +365
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).