diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1fc0d4493..06be157ff 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,7 @@ All notable changes to this project will be documented in this file.
## [Unreleased]
### Fixed
- #1114 Script search results dialogs closing on swf close
+- #1159 Regexp syntax hilight when not a regexp (only division)
## [13.0.2] - 2021-02-10
### Changed
diff --git a/lib/jsyntaxpane-0.9.5.jar b/lib/jsyntaxpane-0.9.5.jar
index a9f673245..81dd53e67 100644
Binary files a/lib/jsyntaxpane-0.9.5.jar and b/lib/jsyntaxpane-0.9.5.jar differ
diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf
index cdba4fec5..6f9341cc3 100644
Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf differ
diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf
index 35e348d35..06784e823 100644
Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf differ
diff --git a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old
index c4f2d0660..c57d8900d 100644
--- a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old
+++ b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old
@@ -16,7 +16,7 @@
CONFIG::timeStamp
- '10.02.2021'
+ '11.02.2021'
CONFIG::air
diff --git a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml
index c4f2d0660..c57d8900d 100644
--- a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml
+++ b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml
@@ -16,7 +16,7 @@
CONFIG::timeStamp
- '10.02.2021'
+ '11.02.2021'
CONFIG::air
diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as
index a31beb195..f001221a3 100644
--- a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as
+++ b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as
@@ -102,6 +102,7 @@ package
TestThisOutsideClass;
TestImports;
TestInitializer;
+ TestRegexpHilight;
public function Main()
{
diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests_classes/TestRegexpHilight.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests_classes/TestRegexpHilight.as
new file mode 100644
index 000000000..2d0f40ca9
--- /dev/null
+++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests_classes/TestRegexpHilight.as
@@ -0,0 +1,23 @@
+package tests_classes
+{
+ /**
+ * ...
+ * @author JPEXS
+ */
+ public class TestRegexpHilight
+ {
+
+ public function run():void
+ {
+ var myregexp:RegExp = /[a-z0-9_]+/;
+ var a:Number = 10;
+ var b:Number = 20;
+ var notaregexp:Number = a / b + b / a;
+
+ trace(myregexp);
+ trace(notaregexp);
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ScriptAction.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ScriptAction.java
index 18341c562..8fafa8b6d 100644
--- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ScriptAction.java
+++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ScriptAction.java
@@ -81,7 +81,10 @@ public class ScriptAction extends DefaultSyntaxAction {
*
* @param url
*/
- public void getScriptFromURL(String url) {
+ public void getScriptFromURL(String url) {
+ if (engine == null) {
+ return;
+ }
InputStream is = JarServiceProvider.findResource(url, this.getClass().getClassLoader());
if (is != null) {
Reader reader = new InputStreamReader(is);
diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex
index 23bd380e8..193a19d14 100644
--- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex
+++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex
@@ -17,7 +17,12 @@ package jsyntaxpane.lexers;
import jsyntaxpane.Token;
import jsyntaxpane.TokenType;
-
+import javax.swing.text.Segment;
+import java.io.CharArrayReader;
+import java.io.IOException;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+import java.util.List;
%%
%public
@@ -31,7 +36,7 @@ import jsyntaxpane.TokenType;
%{
/**
- * Create an empty lexer, yyrset will be called later to reset and assign
+ * Create an empty lexer, yyreset will be called later to reset and assign
* the reader
*/
public ActionScriptLexer() {
@@ -49,6 +54,26 @@ import jsyntaxpane.TokenType;
private static String xmlTagName="";
+ private Token prevToken = null;
+
+ @Override
+ public void parse(Segment segment, int ofst, List tokens) {
+ try {
+ CharArrayReader reader = new CharArrayReader(segment.array, segment.offset, segment.count);
+ yyreset(reader);
+ this.offset = ofst;
+ prevToken = null;
+ Token t = yylex();
+ prevToken = t;
+ for (; t != null; t = yylex()) {
+ prevToken = t;
+ tokens.add(t);
+ }
+ } catch (IOException ex) {
+ Logger.getLogger(DefaultJFlexLexer.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
%}
/* main character classes */
@@ -177,11 +202,20 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
"true" { return token(TokenType.KEYWORD); }
- {RegExp} { return token(TokenType.REGEX); }
+ {RegExp} {
+ if (prevToken == null || prevToken.type == TokenType.OPERATOR) {
+ return token(TokenType.REGEX);
+ } else {
+ int ch = yychar;
+ yypushback(yylength()-1);
+ // divide "/" operator
+ return token(TokenType.OPERATOR,ch,1);
+ }
+ }
/* operators */
- "(" { return token(TokenType.OPERATOR, PARAN); }
+ "(" { return token(TokenType.OPERATOR, PARAN); }
")" { return token(TokenType.OPERATOR, -PARAN); }
"{" { return token(TokenType.OPERATOR, CURLY); }
"}" { return token(TokenType.OPERATOR, -CURLY); }