hledger-lsp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +632 -0
- package/out/extension.d.ts +1 -0
- package/out/extension.d.ts.map +1 -0
- package/out/extension.js +2 -0
- package/out/extension.js.map +1 -0
- package/out/features/codeActions.d.ts +73 -0
- package/out/features/codeActions.d.ts.map +1 -0
- package/out/features/codeActions.js +417 -0
- package/out/features/codeActions.js.map +1 -0
- package/out/features/completion.d.ts +94 -0
- package/out/features/completion.d.ts.map +1 -0
- package/out/features/completion.js +323 -0
- package/out/features/completion.js.map +1 -0
- package/out/features/definition.d.ts +12 -0
- package/out/features/definition.d.ts.map +1 -0
- package/out/features/definition.js +61 -0
- package/out/features/definition.js.map +1 -0
- package/out/features/documentLinks.d.ts +17 -0
- package/out/features/documentLinks.d.ts.map +1 -0
- package/out/features/documentLinks.js +68 -0
- package/out/features/documentLinks.js.map +1 -0
- package/out/features/findReferences.d.ts +33 -0
- package/out/features/findReferences.d.ts.map +1 -0
- package/out/features/findReferences.js +79 -0
- package/out/features/findReferences.js.map +1 -0
- package/out/features/foldingRanges.d.ts +27 -0
- package/out/features/foldingRanges.d.ts.map +1 -0
- package/out/features/foldingRanges.js +111 -0
- package/out/features/foldingRanges.js.map +1 -0
- package/out/features/formatter.d.ts +70 -0
- package/out/features/formatter.d.ts.map +1 -0
- package/out/features/formatter.js +373 -0
- package/out/features/formatter.js.map +1 -0
- package/out/features/hover.d.ts +66 -0
- package/out/features/hover.d.ts.map +1 -0
- package/out/features/hover.js +387 -0
- package/out/features/hover.js.map +1 -0
- package/out/features/inlayHints.d.ts +43 -0
- package/out/features/inlayHints.d.ts.map +1 -0
- package/out/features/inlayHints.js +221 -0
- package/out/features/inlayHints.js.map +1 -0
- package/out/features/selectionRange.d.ts +47 -0
- package/out/features/selectionRange.d.ts.map +1 -0
- package/out/features/selectionRange.js +273 -0
- package/out/features/selectionRange.js.map +1 -0
- package/out/features/semanticTokens.d.ts +83 -0
- package/out/features/semanticTokens.d.ts.map +1 -0
- package/out/features/semanticTokens.js +370 -0
- package/out/features/semanticTokens.js.map +1 -0
- package/out/features/symbols.d.ts +47 -0
- package/out/features/symbols.d.ts.map +1 -0
- package/out/features/symbols.js +249 -0
- package/out/features/symbols.js.map +1 -0
- package/out/features/transactionAnalyzer.d.ts +63 -0
- package/out/features/transactionAnalyzer.d.ts.map +1 -0
- package/out/features/transactionAnalyzer.js +127 -0
- package/out/features/transactionAnalyzer.js.map +1 -0
- package/out/features/validator.d.ts +142 -0
- package/out/features/validator.d.ts.map +1 -0
- package/out/features/validator.js +633 -0
- package/out/features/validator.js.map +1 -0
- package/out/parser/ast.d.ts +37 -0
- package/out/parser/ast.d.ts.map +1 -0
- package/out/parser/ast.js +606 -0
- package/out/parser/ast.js.map +1 -0
- package/out/parser/includes.d.ts +25 -0
- package/out/parser/includes.d.ts.map +1 -0
- package/out/parser/includes.js +106 -0
- package/out/parser/includes.js.map +1 -0
- package/out/parser/index.d.ts +54 -0
- package/out/parser/index.d.ts.map +1 -0
- package/out/parser/index.js +146 -0
- package/out/parser/index.js.map +1 -0
- package/out/server/deps.d.ts +19 -0
- package/out/server/deps.d.ts.map +1 -0
- package/out/server/deps.js +77 -0
- package/out/server/deps.js.map +1 -0
- package/out/server/settings.d.ts +60 -0
- package/out/server/settings.d.ts.map +1 -0
- package/out/server/settings.js +110 -0
- package/out/server/settings.js.map +1 -0
- package/out/server.d.ts +3 -0
- package/out/server.d.ts.map +1 -0
- package/out/server.js +420 -0
- package/out/server.js.map +1 -0
- package/out/types.d.ts +84 -0
- package/out/types.d.ts.map +1 -0
- package/out/types.js +6 -0
- package/out/types.js.map +1 -0
- package/out/utils/index.d.ts +38 -0
- package/out/utils/index.d.ts.map +1 -0
- package/out/utils/index.js +89 -0
- package/out/utils/index.js.map +1 -0
- package/out/utils/uri.d.ts +32 -0
- package/out/utils/uri.d.ts.map +1 -0
- package/out/utils/uri.js +215 -0
- package/out/utils/uri.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code actions provider for quick fixes and refactorings
|
|
3
|
+
*/
|
|
4
|
+
import { CodeAction, Diagnostic, WorkspaceEdit, Range, Position } from 'vscode-languageserver';
|
|
5
|
+
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
6
|
+
import { ParsedDocument } from '../types';
|
|
7
|
+
export declare class CodeActionProvider {
|
|
8
|
+
/**
|
|
9
|
+
* Provide code actions for the given range and diagnostics
|
|
10
|
+
*/
|
|
11
|
+
provideCodeActions(document: TextDocument, range: Range, diagnostics: Diagnostic[], parsedDoc: ParsedDocument): CodeAction[];
|
|
12
|
+
/**
|
|
13
|
+
* Create a code action to add an account declaration
|
|
14
|
+
*/
|
|
15
|
+
private createAddAccountDeclarationAction;
|
|
16
|
+
/**
|
|
17
|
+
* Create a code action to add a payee declaration
|
|
18
|
+
*/
|
|
19
|
+
private createAddPayeeDeclarationAction;
|
|
20
|
+
/**
|
|
21
|
+
* Create a code action to add a commodity declaration
|
|
22
|
+
*/
|
|
23
|
+
private createAddCommodityDeclarationAction;
|
|
24
|
+
/**
|
|
25
|
+
* Create a code action to add a tag declaration
|
|
26
|
+
*/
|
|
27
|
+
private createAddTagDeclarationAction;
|
|
28
|
+
/**
|
|
29
|
+
* Find the best position to insert a directive
|
|
30
|
+
* Tries to group directives of the same type together
|
|
31
|
+
*/
|
|
32
|
+
private findInsertPositionForDirective;
|
|
33
|
+
/**
|
|
34
|
+
* Get the item (account, payee, commodity, tag) at the cursor position
|
|
35
|
+
*/
|
|
36
|
+
getItemAtCursor(document: TextDocument, position: Position, parsedDoc: ParsedDocument): {
|
|
37
|
+
type: 'account' | 'payee' | 'commodity' | 'tag';
|
|
38
|
+
name: string;
|
|
39
|
+
} | null;
|
|
40
|
+
/**
|
|
41
|
+
* Create a rename refactoring action
|
|
42
|
+
*/
|
|
43
|
+
private createRenameAction;
|
|
44
|
+
/**
|
|
45
|
+
* Find all occurrences of an account name in the document
|
|
46
|
+
*/
|
|
47
|
+
findAccountReferences(document: TextDocument, accountName: string, parsedDoc: ParsedDocument): Range[];
|
|
48
|
+
/**
|
|
49
|
+
* Find all occurrences of a payee name in the document
|
|
50
|
+
*/
|
|
51
|
+
findPayeeReferences(document: TextDocument, payeeName: string, parsedDoc: ParsedDocument): Range[];
|
|
52
|
+
/**
|
|
53
|
+
* Find all occurrences of a commodity in the document
|
|
54
|
+
*/
|
|
55
|
+
findCommodityReferences(document: TextDocument, commodityName: string, parsedDoc: ParsedDocument): Range[];
|
|
56
|
+
/**
|
|
57
|
+
* Find all occurrences of a tag in the document
|
|
58
|
+
*/
|
|
59
|
+
findTagReferences(document: TextDocument, tagName: string, parsedDoc: ParsedDocument): Range[];
|
|
60
|
+
/**
|
|
61
|
+
* Escape special regex characters
|
|
62
|
+
*/
|
|
63
|
+
private escapeRegExp;
|
|
64
|
+
/**
|
|
65
|
+
* Create workspace edit to rename an item across all its references
|
|
66
|
+
*/
|
|
67
|
+
createRenameEdit(document: TextDocument, item: {
|
|
68
|
+
type: 'account' | 'payee' | 'commodity' | 'tag';
|
|
69
|
+
name: string;
|
|
70
|
+
}, newName: string, parsedDoc: ParsedDocument): WorkspaceEdit;
|
|
71
|
+
}
|
|
72
|
+
export declare const codeActionProvider: CodeActionProvider;
|
|
73
|
+
//# sourceMappingURL=codeActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeActions.d.ts","sourceRoot":"","sources":["../../src/features/codeActions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,UAAU,EAEV,UAAU,EAEV,aAAa,EACb,KAAK,EACL,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,kBAAkB,CAChB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,UAAU,EAAE,EACzB,SAAS,EAAE,cAAc,GACxB,UAAU,EAAE;IA4Cf;;OAEG;IACH,OAAO,CAAC,iCAAiC;IAyBzC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAyBvC;;OAEG;IACH,OAAO,CAAC,mCAAmC;IAyB3C;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAyBrC;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IA4CtC;;OAEG;IACI,eAAe,CACpB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,cAAc,GACxB;QAAE,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA4F3E;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACI,qBAAqB,CAC1B,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,cAAc,GACxB,KAAK,EAAE;IA6BV;;OAEG;IACI,mBAAmB,CACxB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,cAAc,GACxB,KAAK,EAAE;IA6BV;;OAEG;IACI,uBAAuB,CAC5B,QAAQ,EAAE,YAAY,EACtB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,cAAc,GACxB,KAAK,EAAE;IA8BV;;OAEG;IACI,iBAAiB,CACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,cAAc,GACxB,KAAK,EAAE;IA2BV;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACI,gBAAgB,CACrB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE;QAAE,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EACvE,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,cAAc,GACxB,aAAa;CA0BjB;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Code actions provider for quick fixes and refactorings
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.codeActionProvider = exports.CodeActionProvider = void 0;
|
|
7
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
8
|
+
class CodeActionProvider {
|
|
9
|
+
/**
|
|
10
|
+
* Provide code actions for the given range and diagnostics
|
|
11
|
+
*/
|
|
12
|
+
provideCodeActions(document, range, diagnostics, parsedDoc) {
|
|
13
|
+
const actions = [];
|
|
14
|
+
// Quick fixes for diagnostics
|
|
15
|
+
for (const diagnostic of diagnostics) {
|
|
16
|
+
// Quick fix for undeclared accounts
|
|
17
|
+
if (diagnostic.code === 'undeclared-account') {
|
|
18
|
+
const data = diagnostic.data;
|
|
19
|
+
if (data?.accountName) {
|
|
20
|
+
actions.push(this.createAddAccountDeclarationAction(document, data.accountName, diagnostic, parsedDoc));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// Quick fix for undeclared payees
|
|
24
|
+
if (diagnostic.code === 'undeclared-payee') {
|
|
25
|
+
const data = diagnostic.data;
|
|
26
|
+
if (data?.payeeName) {
|
|
27
|
+
actions.push(this.createAddPayeeDeclarationAction(document, data.payeeName, diagnostic, parsedDoc));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Quick fix for undeclared commodities
|
|
31
|
+
if (diagnostic.code === 'undeclared-commodity') {
|
|
32
|
+
const data = diagnostic.data;
|
|
33
|
+
if (data?.commodityName) {
|
|
34
|
+
actions.push(this.createAddCommodityDeclarationAction(document, data.commodityName, diagnostic, parsedDoc));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Quick fix for undeclared tags
|
|
38
|
+
if (diagnostic.code === 'undeclared-tag') {
|
|
39
|
+
const data = diagnostic.data;
|
|
40
|
+
if (data?.tagName) {
|
|
41
|
+
actions.push(this.createAddTagDeclarationAction(document, data.tagName, diagnostic, parsedDoc));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Note: Rename refactoring is now handled via the LSP rename provider
|
|
46
|
+
// (vim.lsp.buf.rename() or F2), not through code actions
|
|
47
|
+
return actions;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Create a code action to add an account declaration
|
|
51
|
+
*/
|
|
52
|
+
createAddAccountDeclarationAction(document, accountName, diagnostic, parsedDoc) {
|
|
53
|
+
const insertPosition = this.findInsertPositionForDirective(document, parsedDoc, 'account');
|
|
54
|
+
const edit = {
|
|
55
|
+
changes: {
|
|
56
|
+
[document.uri]: [
|
|
57
|
+
vscode_languageserver_1.TextEdit.insert(insertPosition, `account ${accountName}\n`)
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const action = {
|
|
62
|
+
title: `Add declaration for account '${accountName}'`,
|
|
63
|
+
kind: vscode_languageserver_1.CodeActionKind.QuickFix,
|
|
64
|
+
diagnostics: [diagnostic],
|
|
65
|
+
edit
|
|
66
|
+
};
|
|
67
|
+
return action;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create a code action to add a payee declaration
|
|
71
|
+
*/
|
|
72
|
+
createAddPayeeDeclarationAction(document, payeeName, diagnostic, parsedDoc) {
|
|
73
|
+
const insertPosition = this.findInsertPositionForDirective(document, parsedDoc, 'payee');
|
|
74
|
+
const edit = {
|
|
75
|
+
changes: {
|
|
76
|
+
[document.uri]: [
|
|
77
|
+
vscode_languageserver_1.TextEdit.insert(insertPosition, `payee ${payeeName}\n`)
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const action = {
|
|
82
|
+
title: `Add declaration for payee '${payeeName}'`,
|
|
83
|
+
kind: vscode_languageserver_1.CodeActionKind.QuickFix,
|
|
84
|
+
diagnostics: [diagnostic],
|
|
85
|
+
edit
|
|
86
|
+
};
|
|
87
|
+
return action;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Create a code action to add a commodity declaration
|
|
91
|
+
*/
|
|
92
|
+
createAddCommodityDeclarationAction(document, commodityName, diagnostic, parsedDoc) {
|
|
93
|
+
const insertPosition = this.findInsertPositionForDirective(document, parsedDoc, 'commodity');
|
|
94
|
+
const edit = {
|
|
95
|
+
changes: {
|
|
96
|
+
[document.uri]: [
|
|
97
|
+
vscode_languageserver_1.TextEdit.insert(insertPosition, `commodity ${commodityName}\n`)
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
const action = {
|
|
102
|
+
title: `Add declaration for commodity '${commodityName}'`,
|
|
103
|
+
kind: vscode_languageserver_1.CodeActionKind.QuickFix,
|
|
104
|
+
diagnostics: [diagnostic],
|
|
105
|
+
edit
|
|
106
|
+
};
|
|
107
|
+
return action;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Create a code action to add a tag declaration
|
|
111
|
+
*/
|
|
112
|
+
createAddTagDeclarationAction(document, tagName, diagnostic, parsedDoc) {
|
|
113
|
+
const insertPosition = this.findInsertPositionForDirective(document, parsedDoc, 'tag');
|
|
114
|
+
const edit = {
|
|
115
|
+
changes: {
|
|
116
|
+
[document.uri]: [
|
|
117
|
+
vscode_languageserver_1.TextEdit.insert(insertPosition, `tag ${tagName}\n`)
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
const action = {
|
|
122
|
+
title: `Add declaration for tag '${tagName}'`,
|
|
123
|
+
kind: vscode_languageserver_1.CodeActionKind.QuickFix,
|
|
124
|
+
diagnostics: [diagnostic],
|
|
125
|
+
edit
|
|
126
|
+
};
|
|
127
|
+
return action;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Find the best position to insert a directive
|
|
131
|
+
* Tries to group directives of the same type together
|
|
132
|
+
*/
|
|
133
|
+
findInsertPositionForDirective(document, parsedDoc, directiveType) {
|
|
134
|
+
const lines = document.getText().split('\n');
|
|
135
|
+
// Find the last directive of the same type
|
|
136
|
+
const directivesOfType = parsedDoc.directives
|
|
137
|
+
.filter(d => d.type === directiveType && d.sourceUri === document.uri);
|
|
138
|
+
if (directivesOfType.length > 0) {
|
|
139
|
+
// Insert after the last directive of the same type
|
|
140
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
141
|
+
const line = lines[i];
|
|
142
|
+
if (line.trim().startsWith(`${directiveType} `)) {
|
|
143
|
+
return vscode_languageserver_1.Position.create(i + 1, 0);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// Find the last directive of any type
|
|
148
|
+
const allDirectives = parsedDoc.directives
|
|
149
|
+
.filter(d => d.sourceUri === document.uri);
|
|
150
|
+
if (allDirectives.length > 0) {
|
|
151
|
+
// Insert after the last directive
|
|
152
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
153
|
+
const line = lines[i].trim();
|
|
154
|
+
if (line.startsWith('account ') ||
|
|
155
|
+
line.startsWith('commodity ') ||
|
|
156
|
+
line.startsWith('payee ') ||
|
|
157
|
+
line.startsWith('tag ') ||
|
|
158
|
+
line.startsWith('include ') ||
|
|
159
|
+
line.startsWith('alias ')) {
|
|
160
|
+
return vscode_languageserver_1.Position.create(i + 1, 0);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// If no directives, insert at the top of the file
|
|
165
|
+
return vscode_languageserver_1.Position.create(0, 0);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get the item (account, payee, commodity, tag) at the cursor position
|
|
169
|
+
*/
|
|
170
|
+
getItemAtCursor(document, position, parsedDoc) {
|
|
171
|
+
const lines = document.getText().split('\n');
|
|
172
|
+
if (position.line >= lines.length) {
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
const line = lines[position.line];
|
|
176
|
+
if (!line) {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
const char = position.character;
|
|
180
|
+
// Check if on an account directive
|
|
181
|
+
const accountDirectiveMatch = line.match(/^account\s+(.+?)(?:\s|$)/);
|
|
182
|
+
if (accountDirectiveMatch && char >= line.indexOf(accountDirectiveMatch[1])) {
|
|
183
|
+
return { type: 'account', name: accountDirectiveMatch[1].trim() };
|
|
184
|
+
}
|
|
185
|
+
// Check if on a payee directive
|
|
186
|
+
const payeeDirectiveMatch = line.match(/^payee\s+(.+?)(?:\s*;|$)/);
|
|
187
|
+
if (payeeDirectiveMatch && char >= line.indexOf(payeeDirectiveMatch[1])) {
|
|
188
|
+
return { type: 'payee', name: payeeDirectiveMatch[1].trim() };
|
|
189
|
+
}
|
|
190
|
+
// Check if on a commodity directive
|
|
191
|
+
const commodityDirectiveMatch = line.match(/^commodity\s+(.+?)(?:\s|$)/);
|
|
192
|
+
if (commodityDirectiveMatch && char >= line.indexOf(commodityDirectiveMatch[1])) {
|
|
193
|
+
// Extract just the commodity symbol, not the format
|
|
194
|
+
const commodityPart = commodityDirectiveMatch[1].trim().split(/\s+/)[0];
|
|
195
|
+
return { type: 'commodity', name: commodityPart };
|
|
196
|
+
}
|
|
197
|
+
// Check if on a tag directive
|
|
198
|
+
const tagDirectiveMatch = line.match(/^tag\s+(\w+)/);
|
|
199
|
+
if (tagDirectiveMatch && char >= line.indexOf(tagDirectiveMatch[1])) {
|
|
200
|
+
return { type: 'tag', name: tagDirectiveMatch[1] };
|
|
201
|
+
}
|
|
202
|
+
// Check if on an account in a posting
|
|
203
|
+
if (line.match(/^\s+\S/)) { // Indented line (posting)
|
|
204
|
+
const accountMatch = line.match(/^\s+([^;\s]+(?:\s+[^;\s]+)*?)(?:\s{2,}|\s+[-+$£€¥₹]|\s*$)/);
|
|
205
|
+
if (accountMatch) {
|
|
206
|
+
const accountName = accountMatch[1].trim();
|
|
207
|
+
const accountStart = line.indexOf(accountName);
|
|
208
|
+
const accountEnd = accountStart + accountName.length;
|
|
209
|
+
if (char >= accountStart && char <= accountEnd) {
|
|
210
|
+
return { type: 'account', name: accountName };
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Check if on a commodity in a posting amount
|
|
214
|
+
// Match common commodity symbols and currency codes
|
|
215
|
+
const commodityRegex = /[$£€¥₹]|[A-Z]{3,4}\b/g;
|
|
216
|
+
let commodityMatch;
|
|
217
|
+
while ((commodityMatch = commodityRegex.exec(line)) !== null) {
|
|
218
|
+
const commodityStart = commodityMatch.index;
|
|
219
|
+
const commodityEnd = commodityStart + commodityMatch[0].length;
|
|
220
|
+
if (char >= commodityStart && char <= commodityEnd) {
|
|
221
|
+
return { type: 'commodity', name: commodityMatch[0] };
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// Check if on a payee in a transaction header
|
|
226
|
+
const txHeaderMatch = line.match(/^\d{4}[-/]\d{2}[-/]\d{2}(?:\s+[*!])?(?:\s+\([^)]+\))?\s+(.+?)(?:\s*;|$)/);
|
|
227
|
+
if (txHeaderMatch) {
|
|
228
|
+
const payeeName = txHeaderMatch[1].trim();
|
|
229
|
+
const payeeStart = line.indexOf(payeeName);
|
|
230
|
+
const payeeEnd = payeeStart + payeeName.length;
|
|
231
|
+
if (char >= payeeStart && char <= payeeEnd) {
|
|
232
|
+
return { type: 'payee', name: payeeName };
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// Check if on a tag in a comment
|
|
236
|
+
const tagMatch = line.match(/;\s*(\w+):/g);
|
|
237
|
+
if (tagMatch) {
|
|
238
|
+
for (const match of tagMatch) {
|
|
239
|
+
const tagName = match.match(/(\w+):/)?.[1];
|
|
240
|
+
if (tagName) {
|
|
241
|
+
const tagStart = line.indexOf(match) + match.indexOf(tagName);
|
|
242
|
+
const tagEnd = tagStart + tagName.length;
|
|
243
|
+
if (char >= tagStart && char <= tagEnd) {
|
|
244
|
+
return { type: 'tag', name: tagName };
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Create a rename refactoring action
|
|
253
|
+
*/
|
|
254
|
+
createRenameAction(document, item, parsedDoc) {
|
|
255
|
+
// Note: This creates a code action that would need user input for the new name
|
|
256
|
+
// In a real implementation, this would trigger a rename dialog
|
|
257
|
+
// For now, we'll create an action that shows it's available
|
|
258
|
+
const action = {
|
|
259
|
+
title: `Rename ${item.type} '${item.name}'...`,
|
|
260
|
+
kind: vscode_languageserver_1.CodeActionKind.Refactor,
|
|
261
|
+
// In a full implementation, this would use the 'command' field to trigger
|
|
262
|
+
// a rename dialog. For now, we mark it as available but don't provide an edit.
|
|
263
|
+
command: {
|
|
264
|
+
title: `Rename ${item.type}`,
|
|
265
|
+
command: 'hledger.rename',
|
|
266
|
+
arguments: [document.uri, item.type, item.name]
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
return action;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Find all occurrences of an account name in the document
|
|
273
|
+
*/
|
|
274
|
+
findAccountReferences(document, accountName, parsedDoc) {
|
|
275
|
+
const ranges = [];
|
|
276
|
+
const lines = document.getText().split('\n');
|
|
277
|
+
for (let i = 0; i < lines.length; i++) {
|
|
278
|
+
const line = lines[i];
|
|
279
|
+
if (!line)
|
|
280
|
+
continue;
|
|
281
|
+
// Check account directives
|
|
282
|
+
const accountDirectiveMatch = line.match(/^account\s+(.+?)(?:\s|$)/);
|
|
283
|
+
if (accountDirectiveMatch && accountDirectiveMatch[1].trim() === accountName) {
|
|
284
|
+
const start = line.indexOf(accountName);
|
|
285
|
+
ranges.push(vscode_languageserver_1.Range.create(i, start, i, start + accountName.length));
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
// Check postings
|
|
289
|
+
if (line.match(/^\s+\S/)) {
|
|
290
|
+
const accountMatch = line.match(/^\s+([^;\s]+(?:\s+[^;\s]+)*?)(?:\s{2,}|\s+[-+$£€¥₹]|\s*$)/);
|
|
291
|
+
if (accountMatch && accountMatch[1].trim() === accountName) {
|
|
292
|
+
const start = line.indexOf(accountName);
|
|
293
|
+
ranges.push(vscode_languageserver_1.Range.create(i, start, i, start + accountName.length));
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return ranges;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Find all occurrences of a payee name in the document
|
|
301
|
+
*/
|
|
302
|
+
findPayeeReferences(document, payeeName, parsedDoc) {
|
|
303
|
+
const ranges = [];
|
|
304
|
+
const lines = document.getText().split('\n');
|
|
305
|
+
for (let i = 0; i < lines.length; i++) {
|
|
306
|
+
const line = lines[i];
|
|
307
|
+
if (!line)
|
|
308
|
+
continue;
|
|
309
|
+
// Check payee directives (match everything after "payee " up to comment or end of line)
|
|
310
|
+
if (line.startsWith('payee ')) {
|
|
311
|
+
const payeeText = line.substring(6).split(';')[0].trim();
|
|
312
|
+
if (payeeText === payeeName) {
|
|
313
|
+
const start = line.indexOf(payeeName);
|
|
314
|
+
ranges.push(vscode_languageserver_1.Range.create(i, start, i, start + payeeName.length));
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
// Check transaction headers
|
|
319
|
+
const txHeaderMatch = line.match(/^\d{4}[-/]\d{2}[-/]\d{2}(?:\s+[*!])?(?:\s+\([^)]+\))?\s+(.+?)(?:\s*;|$)/);
|
|
320
|
+
if (txHeaderMatch && txHeaderMatch[1].trim() === payeeName) {
|
|
321
|
+
const start = line.indexOf(payeeName);
|
|
322
|
+
ranges.push(vscode_languageserver_1.Range.create(i, start, i, start + payeeName.length));
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return ranges;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Find all occurrences of a commodity in the document
|
|
329
|
+
*/
|
|
330
|
+
findCommodityReferences(document, commodityName, parsedDoc) {
|
|
331
|
+
const ranges = [];
|
|
332
|
+
const lines = document.getText().split('\n');
|
|
333
|
+
for (let i = 0; i < lines.length; i++) {
|
|
334
|
+
const line = lines[i];
|
|
335
|
+
if (!line)
|
|
336
|
+
continue;
|
|
337
|
+
// Check commodity directives
|
|
338
|
+
const commodityDirectiveMatch = line.match(/^commodity\s+(.+?)(?:\s|$)/);
|
|
339
|
+
if (commodityDirectiveMatch) {
|
|
340
|
+
const commodityPart = commodityDirectiveMatch[1].trim().split(/\s+/)[0];
|
|
341
|
+
if (commodityPart === commodityName) {
|
|
342
|
+
const start = line.indexOf(commodityName);
|
|
343
|
+
ranges.push(vscode_languageserver_1.Range.create(i, start, i, start + commodityName.length));
|
|
344
|
+
continue;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
// Check for commodity in amounts (this is a simple match, may need refinement)
|
|
348
|
+
const regex = new RegExp(`\\b${this.escapeRegExp(commodityName)}\\b`, 'g');
|
|
349
|
+
let match;
|
|
350
|
+
while ((match = regex.exec(line)) !== null) {
|
|
351
|
+
ranges.push(vscode_languageserver_1.Range.create(i, match.index, i, match.index + commodityName.length));
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return ranges;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Find all occurrences of a tag in the document
|
|
358
|
+
*/
|
|
359
|
+
findTagReferences(document, tagName, parsedDoc) {
|
|
360
|
+
const ranges = [];
|
|
361
|
+
const lines = document.getText().split('\n');
|
|
362
|
+
for (let i = 0; i < lines.length; i++) {
|
|
363
|
+
const line = lines[i];
|
|
364
|
+
if (!line)
|
|
365
|
+
continue;
|
|
366
|
+
// Check tag directives
|
|
367
|
+
const tagDirectiveMatch = line.match(/^tag\s+(\w+)/);
|
|
368
|
+
if (tagDirectiveMatch && tagDirectiveMatch[1] === tagName) {
|
|
369
|
+
const start = line.indexOf(tagName);
|
|
370
|
+
ranges.push(vscode_languageserver_1.Range.create(i, start, i, start + tagName.length));
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
// Check for tags in comments
|
|
374
|
+
const regex = new RegExp(`\\b${tagName}:`, 'g');
|
|
375
|
+
let match;
|
|
376
|
+
while ((match = regex.exec(line)) !== null) {
|
|
377
|
+
ranges.push(vscode_languageserver_1.Range.create(i, match.index, i, match.index + tagName.length));
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
return ranges;
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Escape special regex characters
|
|
384
|
+
*/
|
|
385
|
+
escapeRegExp(string) {
|
|
386
|
+
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Create workspace edit to rename an item across all its references
|
|
390
|
+
*/
|
|
391
|
+
createRenameEdit(document, item, newName, parsedDoc) {
|
|
392
|
+
let ranges = [];
|
|
393
|
+
switch (item.type) {
|
|
394
|
+
case 'account':
|
|
395
|
+
ranges = this.findAccountReferences(document, item.name, parsedDoc);
|
|
396
|
+
break;
|
|
397
|
+
case 'payee':
|
|
398
|
+
ranges = this.findPayeeReferences(document, item.name, parsedDoc);
|
|
399
|
+
break;
|
|
400
|
+
case 'commodity':
|
|
401
|
+
ranges = this.findCommodityReferences(document, item.name, parsedDoc);
|
|
402
|
+
break;
|
|
403
|
+
case 'tag':
|
|
404
|
+
ranges = this.findTagReferences(document, item.name, parsedDoc);
|
|
405
|
+
break;
|
|
406
|
+
}
|
|
407
|
+
const edits = ranges.map(range => vscode_languageserver_1.TextEdit.replace(range, newName));
|
|
408
|
+
return {
|
|
409
|
+
changes: {
|
|
410
|
+
[document.uri]: edits
|
|
411
|
+
}
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
exports.CodeActionProvider = CodeActionProvider;
|
|
416
|
+
exports.codeActionProvider = new CodeActionProvider();
|
|
417
|
+
//# sourceMappingURL=codeActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeActions.js","sourceRoot":"","sources":["../../src/features/codeActions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Completion provider for hledger language server
|
|
3
|
+
*
|
|
4
|
+
* Provides intelligent auto-completion for:
|
|
5
|
+
* - Account names
|
|
6
|
+
* - Payee names
|
|
7
|
+
* - Commodity symbols
|
|
8
|
+
* - Directive keywords
|
|
9
|
+
* - Include file paths
|
|
10
|
+
* - Tags
|
|
11
|
+
*/
|
|
12
|
+
import { CompletionItem } from 'vscode-languageserver';
|
|
13
|
+
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
14
|
+
import { Position } from 'vscode-languageserver-protocol';
|
|
15
|
+
import { ParsedDocument } from '../types';
|
|
16
|
+
interface CompletionSettings {
|
|
17
|
+
onlyDeclaredAccounts?: boolean;
|
|
18
|
+
onlyDeclaredPayees?: boolean;
|
|
19
|
+
onlyDeclaredCommodities?: boolean;
|
|
20
|
+
onlyDeclaredTags?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare class CompletionProvider {
|
|
23
|
+
private accounts;
|
|
24
|
+
private payees;
|
|
25
|
+
private commodities;
|
|
26
|
+
private tags;
|
|
27
|
+
/**
|
|
28
|
+
* Update the list of known accounts
|
|
29
|
+
*/
|
|
30
|
+
updateAccounts(accounts: Array<{
|
|
31
|
+
name: string;
|
|
32
|
+
declared: boolean;
|
|
33
|
+
}>): void;
|
|
34
|
+
/**
|
|
35
|
+
* Update the list of known payees
|
|
36
|
+
*/
|
|
37
|
+
updatePayees(payees: Array<{
|
|
38
|
+
name: string;
|
|
39
|
+
declared: boolean;
|
|
40
|
+
}>): void;
|
|
41
|
+
/**
|
|
42
|
+
* Update the list of known commodities
|
|
43
|
+
*/
|
|
44
|
+
updateCommodities(commodities: Array<{
|
|
45
|
+
name: string;
|
|
46
|
+
declared: boolean;
|
|
47
|
+
}>): void;
|
|
48
|
+
/**
|
|
49
|
+
* Update the list of known tags
|
|
50
|
+
*/
|
|
51
|
+
updateTags(tags: Array<{
|
|
52
|
+
name: string;
|
|
53
|
+
declared: boolean;
|
|
54
|
+
}>): void;
|
|
55
|
+
/**
|
|
56
|
+
* Get completion items for the current position
|
|
57
|
+
*/
|
|
58
|
+
getCompletionItems(document: TextDocument, position: Position, parsed?: ParsedDocument, settings?: CompletionSettings): CompletionItem[];
|
|
59
|
+
/**
|
|
60
|
+
* Get account name completions
|
|
61
|
+
*/
|
|
62
|
+
private getAccountCompletions;
|
|
63
|
+
/**
|
|
64
|
+
* Get payee completions
|
|
65
|
+
*/
|
|
66
|
+
private getPayeeCompletions;
|
|
67
|
+
/**
|
|
68
|
+
* Get directive keyword completions
|
|
69
|
+
*/
|
|
70
|
+
private getDirectiveCompletions;
|
|
71
|
+
/**
|
|
72
|
+
* Get commodity completions
|
|
73
|
+
*/
|
|
74
|
+
getCommodityCompletions(settings?: CompletionSettings): CompletionItem[];
|
|
75
|
+
/**
|
|
76
|
+
* Get tag name completions
|
|
77
|
+
*/
|
|
78
|
+
getTagCompletions(settings?: CompletionSettings): CompletionItem[];
|
|
79
|
+
/**
|
|
80
|
+
* Get include file path completions
|
|
81
|
+
*/
|
|
82
|
+
private getIncludePathCompletions;
|
|
83
|
+
/**
|
|
84
|
+
* Get the payee of the current transaction being edited
|
|
85
|
+
*/
|
|
86
|
+
private getCurrentTransactionPayee;
|
|
87
|
+
/**
|
|
88
|
+
* Get smart account completions based on payee history
|
|
89
|
+
*/
|
|
90
|
+
private getSmartAccountCompletions;
|
|
91
|
+
}
|
|
92
|
+
export declare const completionProvider: CompletionProvider;
|
|
93
|
+
export {};
|
|
94
|
+
//# sourceMappingURL=completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/features/completion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAsB,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,UAAU,kBAAkB;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAkD;IAClE,OAAO,CAAC,MAAM,CAAkD;IAChE,OAAO,CAAC,WAAW,CAAkD;IACrE,OAAO,CAAC,IAAI,CAAkD;IAE9D;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAInE;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAI/D;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAIzE;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAI3D;;OAEG;IACH,kBAAkB,CAChB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,cAAc,EACvB,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,cAAc,EAAE;IAsDnB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;IACH,uBAAuB,CAAC,QAAQ,CAAC,EAAE,kBAAkB,GAAG,cAAc,EAAE;IAWxE;;OAEG;IACH,iBAAiB,CAAC,QAAQ,CAAC,EAAE,kBAAkB,GAAG,cAAc,EAAE;IAYlE;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAkEjC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAsBlC;;OAEG;IACH,OAAO,CAAC,0BAA0B;CA8CnC;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|