Skip to content

Commit 44a5104

Browse files
committed
npp 8.4.x compatibility
1 parent 6e56212 commit 44a5104

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

build.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ if "%1"=="x64" goto nppnim64
1010
@echo building 32 bit version
1111
SET BASE=release\nppnim32
1212
SET TMPPATH=%PATH%
13-
SET PATH=e:\mingw32\mingw32\bin;f:\projects\new_nim\bin;%PATH%
13+
SET PATH=F:\mingw32\bin;%PATH%
1414
windres -i resource\resource.rc -F pe-i386 -o resource\resource32.o
1515
nim c -d:release --cpu:i386 -o:%BASE%\nppnim.dll nppnim
1616
strip %BASE%\nppnim.dll

nppnim.nim

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,13 +198,15 @@ const
198198
'|', '=', '%', '&', '$', '@', '~', ':', '\x80'..'\xFF'}
199199

200200
const
201-
lexer_ver {.strdefine.} = "release4"
201+
lexer_ver {.strdefine.} = "release5"
202202

203203
proc Version(lex: Lexer): cint {.stdcall.} =
204204
when lexer_ver == "original":
205205
lvOriginal
206-
else:
206+
elif lexer_ver == "release4":
207207
lvRelease4
208+
else:
209+
lvRelease5
208210

209211
proc Release(lex: Lexer) {.stdcall.} = discard
210212
proc PropertyNames(lex: Lexer): cstring {.stdcall.} = nil
@@ -458,6 +460,14 @@ proc DescriptionOfStyle(lex: Lexer, style: cint): cstring {.stdcall.} =
458460
else:
459461
emptyString[0].unsafeAddr
460462

463+
proc GetName(lex: Lexer): cstring {.stdcall.} =
464+
"npp.nim.lexer".cstring
465+
466+
proc GetIdentifier(lex: Lexer): cint {.stdcall.} = 0
467+
468+
proc PropertyGet(lex: Lexer, key: cstring): cstring {.stdcall.} =
469+
"".cstring
470+
461471
proc GetLexerCount(): int {.stdcall, exportc, dynlib.} = 1
462472

463473
proc GetLexerName(idx: int, name: pointer, nameLen: int) {.stdcall, exportc, dynlib.} =
@@ -500,8 +510,16 @@ proc lexFactory(): ptr ILexer {.stdcall.} =
500510
vTable[23] = TagsOfStyle
501511
vTable[24] = DescriptionOfStyle
502512

513+
# ILexer5
514+
vTable[25] = GetName
515+
vTable[26] = GetIdentifier
516+
vTable[27] = PropertyGet
517+
503518
lex.vTable = vTable.addr
504519
result = lex.addr
505520

506521
proc GetLexerFactory(idx: int): LexerFactoryProc {.stdcall, exportc, dynlib.} =
507522
result = lexFactory
523+
524+
proc CreateLexer(name: cstring): ptr ILexer {.stdcall, exportc, dynlib.} =
525+
lexFactory()

support.nim

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,20 @@ type
3535
const
3636
#IDocument version
3737
dvOriginal* = 0
38-
dvLineEnd* = 1
38+
dvLineEnd* = 1
39+
dvRelease4* = 2
3940

4041
#ILexer version
41-
lvOriginal* = 0
42+
lvOriginal* = 0
4243
lvSubStyles* = 1
43-
lvRelease4* = 2
44+
lvRelease4* = 2
45+
lvRelease5* = 3
4446

4547
# Nim ver 0.13.0 use const, but 0.15.0 regression
4648
# force me to use let
4749
let
48-
NimKeywords* = ["addr",
50+
NimKeywords* = [
51+
"addr",
4952
"and",
5053
"as",
5154
"asm",
@@ -186,7 +189,7 @@ type
186189
WordType* = enum
187190
WT_KEYWORD, WT_TYPE, WT_IDENT, WT_MAGIC, WT_CTYPE
188191

189-
VTABLE* = array[0..25, pointer]
192+
VTABLE* = array[0..30, pointer]
190193

191194
IDocument* {.pure, final.} = ptr object
192195
vTable: ptr VTABLE

0 commit comments

Comments
 (0)