mirror of
				https://github.com/notepad-plus-plus/notepad-plus-plus.git
				synced 2025-11-04 13:34:00 +01:00 
			
		
		
		
	Update with https://www.scintilla.org/scintilla521.zip https://www.scintilla.org/lexilla515.zip - fix setting to bring Scintilla::PositionCR from ScintillaStructures.h inline with Sci_Position.h Sci_PositionCR - add workaround to enable lexer for searchResult commented out SCI_SETILEXER call on searchResult to get one result which is correctly handled by the lexer, added comment about the current problem with property @MarkingsStruct which seems to disappear after call to SCI_SETILEXER or CreateLexer - corrected usage of ObjC lexer - removed unnecessary filter stuff - use own sections for scintilla and lexilla build targets and allow parallel builds - as libscilex is no longer existing, changed to libscintilla - adapt makefiles and cmake - use VS2019 - started simple changes for createlexer adaptations, nullpointercheck missing on return of lexer name from deprecated LexerNameFromID -> undefined behaviour - movement from id -> lexer name, mostly done via LexerNameFromID + switching off corresponding compiler warning - changed to SCI_SETILEXER from SCI_SETLEXER, SCI_SETLEXERLANGUAGE needs to be corrected, see Scintilla5Migration.html - just commented out: SCI_LOADLEXERLIBRARY Fix #10504, close #11419
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/bin/env python3
 | 
						|
# Script to generate scintilla/src/CharacterCategoryMap.cxx and lexilla/lexlib/CharacterCategory.cxx
 | 
						|
# from Python's Unicode data
 | 
						|
# Should be run rarely when a Python with a new version of Unicode data is available.
 | 
						|
# Requires Python 3.3 or later
 | 
						|
# Should not be run with old versions of Python.
 | 
						|
 | 
						|
import pathlib, platform, sys, unicodedata
 | 
						|
 | 
						|
from FileGenerator import Regenerate
 | 
						|
 | 
						|
def findCategories(filename):
 | 
						|
    with filename.open(encoding="UTF-8") as infile:
 | 
						|
        lines = [x.strip() for x in infile.readlines() if "\tcc" in x]
 | 
						|
    values = "".join(lines).replace(" ","").split(",")
 | 
						|
    print("Categrories:", values)
 | 
						|
    return [v[2:] for v in values]
 | 
						|
 | 
						|
def updateCharacterCategory(filename):
 | 
						|
    values = ["// Created with Python %s,  Unicode %s" % (
 | 
						|
        platform.python_version(), unicodedata.unidata_version)]
 | 
						|
 | 
						|
    startRange = 0
 | 
						|
    category = unicodedata.category(chr(startRange))
 | 
						|
    table = []
 | 
						|
    for ch in range(sys.maxunicode):
 | 
						|
        uch = chr(ch)
 | 
						|
        current = unicodedata.category(uch)
 | 
						|
        if current != category:
 | 
						|
            value = startRange * 32 + categories.index(category)
 | 
						|
            table.append(value)
 | 
						|
            category = current
 | 
						|
            startRange = ch
 | 
						|
    value = startRange * 32 + categories.index(category)
 | 
						|
    table.append(value)
 | 
						|
 | 
						|
    # the sentinel value is used to simplify CharacterCategoryMap::Optimize()
 | 
						|
    category = 'Cn'
 | 
						|
    value = (sys.maxunicode + 1)*32 + categories.index(category)
 | 
						|
    table.append(value)
 | 
						|
 | 
						|
    values.extend(["%d," % value for value in table])
 | 
						|
 | 
						|
    Regenerate(filename, "//", values)
 | 
						|
 | 
						|
 | 
						|
scintillaDirectory = pathlib.Path(__file__).resolve().parent.parent
 | 
						|
 | 
						|
categories = findCategories(scintillaDirectory / "src" / "CharacterCategoryMap.h")
 | 
						|
 | 
						|
updateCharacterCategory(scintillaDirectory / "src" / "CharacterCategoryMap.cxx")
 | 
						|
 | 
						|
updateCharacterCategory(scintillaDirectory.parent / "lexilla" / "lexlib" / "CharacterCategory.cxx")
 |