summaryrefslogtreecommitdiffstats
path: root/scintilla/scripts/ScintillaData.py
diff options
context:
space:
mode:
authorXhmikosR <xhmikosr@gmail.com>2015-09-15 09:09:53 +0300
committerXhmikosR <xhmikosr@gmail.com>2015-09-15 09:09:53 +0300
commit3f436bd3d9598136508384bee25b0e63f76437b1 (patch)
treef20253c1e7acb16163994a706d356d9588548628 /scintilla/scripts/ScintillaData.py
parentd95fb3ed56318188dc2496e11f7f97931412f5b6 (diff)
downloadnotepad2-mod-3f436bd3d9598136508384bee25b0e63f76437b1.zip
notepad2-mod-3f436bd3d9598136508384bee25b0e63f76437b1.tar.gz
notepad2-mod-3f436bd3d9598136508384bee25b0e63f76437b1.tar.bz2
Update Scintilla to v3.6.1.
Diffstat (limited to 'scintilla/scripts/ScintillaData.py')
-rw-r--r--scintilla/scripts/ScintillaData.py36
1 files changed, 31 insertions, 5 deletions
diff --git a/scintilla/scripts/ScintillaData.py b/scintilla/scripts/ScintillaData.py
index f9c7718..a5f2695 100644
--- a/scintilla/scripts/ScintillaData.py
+++ b/scintilla/scripts/ScintillaData.py
@@ -24,9 +24,13 @@
# sorted list of lexer properties
# propertyDocuments
# dictionary of property documentation { name: document string }
+# sclexFromName
+# dictionary of SCLEX_* IDs { name: SCLEX_ID }
+# fileFromSclex
+# dictionary of file names { SCLEX_ID: file name }
# This file can be run to see the data it provides.
-# Requires Python 2.5 or later
+# Requires Python 2.7 or later
from __future__ import with_statement
@@ -36,11 +40,21 @@ import FileGenerator
def FindModules(lexFile):
modules = []
+ partLine = ""
with open(lexFile) as f:
for l in f.readlines():
- if l.startswith("LexerModule"):
- l = l.replace("(", " ")
- modules.append(l.split()[1])
+ l = l.rstrip()
+ if partLine or l.startswith("LexerModule"):
+ if ")" in l:
+ l = partLine + l
+ l = l.replace("(", " ")
+ l = l.replace(")", " ")
+ l = l.replace(",", " ")
+ parts = l.split()
+ modules.append([parts[1], parts[2], parts[4][1:-1]])
+ partLine = ""
+ else:
+ partLine = partLine + l
return modules
# Properties that start with lexer. or fold. are automatically found but there are some
@@ -185,8 +199,14 @@ class ScintillaData:
self.lexerModules = []
lexerProperties = set()
self.propertyDocuments = {}
+ self.sclexFromName = {}
+ self.fileFromSclex = {}
for lexFile in lexFilePaths:
- self.lexerModules.extend(FindModules(lexFile))
+ modules = FindModules(lexFile)
+ for module in modules:
+ self.sclexFromName[module[2]] = module[1]
+ self.fileFromSclex[module[1]] = lexFile
+ self.lexerModules.append(module[0])
for k in FindProperties(lexFile).keys():
lexerProperties.add(k)
documents = FindPropertyDocumentation(lexFile)
@@ -209,6 +229,12 @@ if __name__=="__main__":
sci.dateModified, sci.yearModified, sci.mdyModified, sci.dmyModified, sci.myModified))
printWrapped(str(len(sci.lexFiles)) + " lexer files: " + ", ".join(sci.lexFiles))
printWrapped(str(len(sci.lexerModules)) + " lexer modules: " + ", ".join(sci.lexerModules))
+ print("Lexer name to ID:")
+ lexNames = sorted(sci.sclexFromName.keys())
+ for lexName in lexNames:
+ sclex = sci.sclexFromName[lexName]
+ fileName = os.path.basename(sci.fileFromSclex[sclex])
+ print(" " + lexName + " -> " + sclex + " in " + fileName)
printWrapped("Lexer properties: " + ", ".join(sci.lexerProperties))
print("Lexer property documentation:")
documentProperties = list(sci.propertyDocuments.keys())