mirror of
https://github.com/godotengine/godot-vscode-plugin.git
synced 2026-01-04 10:09:58 +03:00
fix error for symbol range parsing
add '()' to workspace function completion remove '""' from signal completion
This commit is contained in:
@@ -91,7 +91,7 @@ class Config {
|
||||
methods.map(m=>parsMethod(m, CompletionItemKind.Method));
|
||||
// signals
|
||||
const signals = classdoc.signals;
|
||||
signals.map(s=>parsMethod(s, CompletionItemKind.Interface, (name)=>`"${name}"`));
|
||||
signals.map(s=>parsMethod(s, CompletionItemKind.Interface));
|
||||
// constants
|
||||
const constants = classdoc.constants;
|
||||
constants.map(c=>{
|
||||
@@ -121,18 +121,19 @@ class Config {
|
||||
let items: CompletionItem[] = [];
|
||||
for (let path of Object.keys(this.symbols)) {
|
||||
const script = this.symbols[path];
|
||||
const addScriptItems = (items, kind: CompletionItemKind, kindName:string = "Symbol")=>{
|
||||
const addScriptItems = (items, kind: CompletionItemKind, kindName:string = "Symbol", insertText = (n)=>n)=>{
|
||||
const _items: CompletionItem[] = [];
|
||||
for (let name of Object.keys(items)) {
|
||||
const item = new CompletionItem(name, kind);
|
||||
item.detail = workspace.asRelativePath(path);
|
||||
item.insertText = insertText(name);
|
||||
item.documentation = `${kindName} defined in ${item.detail}`;
|
||||
_items.push(item);
|
||||
}
|
||||
return _items;
|
||||
}
|
||||
items = [...items, ...addScriptItems(script.classes, CompletionItemKind.Class, "Class")];
|
||||
items = [...items, ...addScriptItems(script.functions, CompletionItemKind.Method, "Method")];
|
||||
items = [...items, ...addScriptItems(script.functions, CompletionItemKind.Method, "Method", (t)=>`${t}()`)];
|
||||
items = [...items, ...addScriptItems(script.variables, CompletionItemKind.Variable, "Variable")];
|
||||
items = [...items, ...addScriptItems(script.signals, CompletionItemKind.Interface, "Signal")];
|
||||
items = [...items, ...addScriptItems(script.constants, CompletionItemKind.Enum, "Constant")];
|
||||
|
||||
@@ -56,10 +56,14 @@ class GDScriptSymbolParser {
|
||||
}
|
||||
|
||||
const determRange = (key:string, array: any): Range =>{
|
||||
return new Range(array[key], lines[array[key]].indexOf(key), array[key], lines[array[key]].indexOf(key) + key.length);
|
||||
let line = array[key];
|
||||
let startAt = lines[line].indexOf(key);
|
||||
if(line < 0) line = 0;
|
||||
if(startAt < 0) startAt = 0;
|
||||
return new Range(line, startAt, line, startAt + key.length);
|
||||
};
|
||||
|
||||
let funcsnames = getMatches(text, /func\s+([_A-Za-z]+[_A-Za-z0-9]*)\s*\(/g, 1);
|
||||
let funcsnames = getMatches(text, /func\s+([_A-Za-z]+[_A-Za-z0-9]*)\s*\(.*\)/g, 1);
|
||||
const funcs = findLineRanges(funcsnames, "func\\s+$X$\\s*\\(.*\\)");
|
||||
for (let key of Object.keys(funcs))
|
||||
script.functions[key] = determRange(key, funcs);
|
||||
@@ -68,7 +72,7 @@ class GDScriptSymbolParser {
|
||||
const signals = findLineRanges(signalnames, "signal\\s+$X$\\s*\\(.*\\)");
|
||||
for (let key of Object.keys(signals))
|
||||
script.signals[key] = determRange(key, signals);
|
||||
|
||||
|
||||
let varnames = getMatches(text, /var\s+([_A-Za-z]+[_A-Za-z0-9]*)\s*/g, 1);
|
||||
const vars = findLineRanges(varnames, "var\\s+$X$\\s*");
|
||||
for (let key of Object.keys(vars))
|
||||
|
||||
Reference in New Issue
Block a user