[geany/geany] 1403d3: Update Scintilla to version 3.6.5
Colomban Wendling
git-noreply at xxxxx
Thu Apr 28 23:12:20 UTC 2016
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Thu, 28 Apr 2016 23:12:20 UTC
Commit: 1403d352b2f38c68a10e0ce4b6eb686fbef8920d
https://github.com/geany/geany/commit/1403d352b2f38c68a10e0ce4b6eb686fbef8920d
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 at 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 at 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 at 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 at 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 at 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).
More information about the Commits
mailing list