Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
250 changes: 200 additions & 50 deletions client/extension/extension.ts

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion release/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"description": "%extension.description%",
"author": "Dayshine",
"license": "MIT",
"version": "0.10.31",
"version": "0.10.32",
"preview": true,
"publisher": "tboby",
"qna": "https://forum.paradoxplaza.com/forum/index.php?threads/tool-cwtools-a-mod-validating-extension-for-vs-code.1066033/",
Expand Down
99 changes: 99 additions & 0 deletions src/Languages/LangResources.resx
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,103 @@
<data name="loadingBar.ValidatingFiles" xml:space="preserve">
<value>Validating files...</value>
</data>
<data name="memoryMonitor.title" xml:space="preserve">
<value>CWTools Memory Details (PID {0})</value>
</data>
<data name="memoryMonitor.section.processMemory" xml:space="preserve">
<value>Process Memory</value>
</data>
<data name="memoryMonitor.workingSet" xml:space="preserve">
<value>Working Set</value>
</data>
<data name="memoryMonitor.managedHeap" xml:space="preserve">
<value>Managed Heap</value>
</data>
<data name="memoryMonitor.unmanaged" xml:space="preserve">
<value>Unmanaged</value>
</data>
<data name="memoryMonitor.section.gcStatus" xml:space="preserve">
<value>GC Status</value>
</data>
<data name="memoryMonitor.gcCollections" xml:space="preserve">
<value>Gen0/1/2 Collections</value>
</data>
<data name="memoryMonitor.totalAllocated" xml:space="preserve">
<value>Total Allocated</value>
</data>
<data name="memoryMonitor.section.fileCache" xml:space="preserve">
<value>File Cache ({0})</value>
</data>
<data name="memoryMonitor.parsedEntities" xml:space="preserve">
<value>Parsed Entities</value>
</data>
<data name="memoryMonitor.parsedEntitiesHint" xml:space="preserve">
<value>AST parse trees</value>
</data>
<data name="memoryMonitor.fileReferences" xml:space="preserve">
<value>File References</value>
</data>
<data name="memoryMonitor.fileReferencesHint" xml:space="preserve">
<value>dds/png etc.</value>
</data>
<data name="memoryMonitor.filesWithContent" xml:space="preserve">
<value>Files With Content</value>
</data>
<data name="memoryMonitor.filesWithContentHint" xml:space="preserve">
<value>yml localisation</value>
</data>
<data name="memoryMonitor.entityCacheEntries" xml:space="preserve">
<value>Entity Cache Entries</value>
</data>
<data name="memoryMonitor.entityCacheHint" xml:space="preserve">
<value>entitiesMap</value>
</data>
<data name="memoryMonitor.openDocuments" xml:space="preserve">
<value>Open Documents</value>
</data>
<data name="memoryMonitor.section.typeSystem" xml:space="preserve">
<value>Type System</value>
</data>
<data name="memoryMonitor.typeDefinitions" xml:space="preserve">
<value>Type Definitions</value>
</data>
<data name="memoryMonitor.typeEntries" xml:space="preserve">
<value>Type Entries</value>
</data>
<data name="memoryMonitor.scriptedEffects" xml:space="preserve">
<value>Scripted Effects</value>
</data>
<data name="memoryMonitor.scriptedTriggers" xml:space="preserve">
<value>Scripted Triggers</value>
</data>
<data name="memoryMonitor.staticModifiers" xml:space="preserve">
<value>Static Modifiers</value>
</data>
<data name="memoryMonitor.section.validationCache" xml:space="preserve">
<value>Validation Cache</value>
</data>
<data name="memoryMonitor.validationErrors" xml:space="preserve">
<value>Validation Errors</value>
</data>
<data name="memoryMonitor.localisationErrors" xml:space="preserve">
<value>Localisation Errors</value>
</data>
<data name="memoryMonitor.locCacheEntries" xml:space="preserve">
<value>Loc Cache Entries</value>
</data>
<data name="memoryMonitor.section.stringInterning" xml:space="preserve">
<value>String Interning</value>
</data>
<data name="memoryMonitor.uniqueKeys" xml:space="preserve">
<value>Unique Keys</value>
</data>
<data name="memoryMonitor.totalEntries" xml:space="preserve">
<value>Total Entries</value>
</data>
<data name="memoryMonitor.clickForDetails" xml:space="preserve">
<value>Click for details</value>
</data>
<data name="memoryMonitor.totalWorkingSet" xml:space="preserve">
<value>Total Working Set</value>
</data>
</root>
99 changes: 99 additions & 0 deletions src/Languages/LangResources.zh-Hans.resx
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,103 @@
<data name="loadingBar.ValidatingFiles" xml:space="preserve">
<value>正在验证文件...</value>
</data>
<data name="memoryMonitor.title" xml:space="preserve">
<value>CWTools 内存详情 (PID {0})</value>
</data>
<data name="memoryMonitor.section.processMemory" xml:space="preserve">
<value>进程内存</value>
</data>
<data name="memoryMonitor.workingSet" xml:space="preserve">
<value>进程工作集</value>
</data>
<data name="memoryMonitor.managedHeap" xml:space="preserve">
<value>托管堆</value>
</data>
<data name="memoryMonitor.unmanaged" xml:space="preserve">
<value>非托管</value>
</data>
<data name="memoryMonitor.section.gcStatus" xml:space="preserve">
<value>GC 状态</value>
</data>
<data name="memoryMonitor.gcCollections" xml:space="preserve">
<value>Gen0/1/2 回收</value>
</data>
<data name="memoryMonitor.totalAllocated" xml:space="preserve">
<value>累计分配</value>
</data>
<data name="memoryMonitor.section.fileCache" xml:space="preserve">
<value>文件缓存 ({0})</value>
</data>
<data name="memoryMonitor.parsedEntities" xml:space="preserve">
<value>已解析实体</value>
</data>
<data name="memoryMonitor.parsedEntitiesHint" xml:space="preserve">
<value>AST 解析树</value>
</data>
<data name="memoryMonitor.fileReferences" xml:space="preserve">
<value>纯文件引用</value>
</data>
<data name="memoryMonitor.fileReferencesHint" xml:space="preserve">
<value>dds/png 等</value>
</data>
<data name="memoryMonitor.filesWithContent" xml:space="preserve">
<value>含内容文件</value>
</data>
<data name="memoryMonitor.filesWithContentHint" xml:space="preserve">
<value>yml 本地化</value>
</data>
<data name="memoryMonitor.entityCacheEntries" xml:space="preserve">
<value>实体缓存条目</value>
</data>
<data name="memoryMonitor.entityCacheHint" xml:space="preserve">
<value>entitiesMap</value>
</data>
<data name="memoryMonitor.openDocuments" xml:space="preserve">
<value>当前打开文档</value>
</data>
<data name="memoryMonitor.section.typeSystem" xml:space="preserve">
<value>类型系统</value>
</data>
<data name="memoryMonitor.typeDefinitions" xml:space="preserve">
<value>类型定义</value>
</data>
<data name="memoryMonitor.typeEntries" xml:space="preserve">
<value>类型条目</value>
</data>
<data name="memoryMonitor.scriptedEffects" xml:space="preserve">
<value>脚本效果</value>
</data>
<data name="memoryMonitor.scriptedTriggers" xml:space="preserve">
<value>脚本触发器</value>
</data>
<data name="memoryMonitor.staticModifiers" xml:space="preserve">
<value>静态修饰符</value>
</data>
<data name="memoryMonitor.section.validationCache" xml:space="preserve">
<value>验证缓存</value>
</data>
<data name="memoryMonitor.validationErrors" xml:space="preserve">
<value>验证错误</value>
</data>
<data name="memoryMonitor.localisationErrors" xml:space="preserve">
<value>本地化错误</value>
</data>
<data name="memoryMonitor.locCacheEntries" xml:space="preserve">
<value>Loc 缓存</value>
</data>
<data name="memoryMonitor.section.stringInterning" xml:space="preserve">
<value>字符串驻留</value>
</data>
<data name="memoryMonitor.uniqueKeys" xml:space="preserve">
<value>唯一键</value>
</data>
<data name="memoryMonitor.totalEntries" xml:space="preserve">
<value>总条目</value>
</data>
<data name="memoryMonitor.clickForDetails" xml:space="preserve">
<value>点击查看详情</value>
</data>
<data name="memoryMonitor.totalWorkingSet" xml:space="preserve">
<value>总工作集</value>
</data>
</root>
9 changes: 8 additions & 1 deletion src/Main/Completion.fs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ let mutable completionCacheCount = 0
let mutable private completionPartialCache: (CompletionParams * CompletionItem seq) option =
None

let clearCompletionCaches () =
completionCache.Clear()
rangeCache <- None
completionPartialCache <- None
completionCacheCount <- 0

let completionResolveItem (gameObj: IGame option) (item: CompletionItem) =
async {
logInfo "Completion resolve"
Expand Down Expand Up @@ -157,7 +163,8 @@ let computeCompletionRanges (filetext: string) (line: int) (character: int) =
(insertRange, replaceRange)

let optimiseCompletion (completionList: CompletionItem seq) =
if completionCacheCount > 2 then
// Clear cache more aggressively - every other call
if completionCacheCount > 1 then
completionCache.Clear()
completionCacheCount <- 0
else
Expand Down
Loading