view src/qscintilla-3-matlab-end-op.patch @ 4601:dc3eb553f5e9

update UPDATE rule for sourceforge projects with version directories * src/cppunit.mk, src/cunit.mk, src/expat.mk, src/freeimage.mk, src/freetype.mk, src/gnuplot.mk, src/graphicsmagick.mk, src/hunspell.mk, src/id3lib.mk, src/lcms.mk, src/libircclient.mk, src/liblo.mk, src/libmad.mk, src/libmng.mk, src/libmodplug.mk, src/libusb.mk, src/matio.mk, src/pcre.mk, src/pdcurses.mk, src/pfstools.mk, src/plotmm.mk, src/qjson.mk, src/qwt.mk, src/qwtplot3d.mk, src/sdl_pango.mk, src/sox.mk, src/tinyxml.mk, src/xmlwrapp.mk: update UPDATE rule for sourceforge projects with version directories * src/llvm.mk: update use wget not WGE so get uncompressed file)
author John D
date Mon, 29 Jan 2018 11:57:20 -0500
parents 9b1f851080b6
children
line wrap: on
line source

diff -ur QScintilla_gpl-2.10.1.orig/lexers/LexMatlab.cpp QScintilla_gpl-2.10.1/lexers/LexMatlab.cpp
--- QScintilla_gpl-2.10.1.orig/lexers/LexMatlab.cpp	2017-07-05 08:21:58.527158553 -0400
+++ QScintilla_gpl-2.10.1/lexers/LexMatlab.cpp	2017-07-05 08:22:26.304941561 -0400
@@ -97,6 +97,9 @@
 	// of a string
 	bool transpose = false;
 
+	// count for brackets for when 'end' could be an operator not a keyword
+	int allow_end_op = 0;
+
 	// approximate position of first non space character in a line
 	int nonSpaceColumn = -1;
 	// approximate column position of the current character in a line
@@ -151,6 +154,9 @@
 				char s[100];
 				sc.GetCurrentLowered(s, sizeof(s));
 				if (keywords.InList(s)) {
+					if (strcmp ("end", s) == 0 && allow_end_op > 0) {
+						sc.ChangeState(SCE_MATLAB_NUMBER);
+					}
 					sc.SetState(SCE_MATLAB_DEFAULT);
 					transpose = false;
 				} else {
@@ -250,6 +256,12 @@
 			} else if (isalpha(sc.ch)) {
 				sc.SetState(SCE_MATLAB_KEYWORD);
 			} else if (isoperator(static_cast<char>(sc.ch)) || sc.ch == '@' || sc.ch == '\\') {
+				if (sc.ch == '(' || sc.ch == '[' || sc.ch == '{') {
+					allow_end_op ++;
+				} else if ((sc.ch == ')' || sc.ch == ']' || sc.ch == '}') && (allow_end_op > 0)) {
+					allow_end_op --;
+				}
+
 				if (sc.ch == ')' || sc.ch == ']' || sc.ch == '}') {
 					transpose = true;
 				} else {
Only in QScintilla_gpl-2.10.1/lexers: LexMatlab.cpp.orig
Only in QScintilla_gpl-2.10.1/lexers: LexMatlab.cpp.rej