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,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Completion provider for hledger language server
|
|
4
|
+
*
|
|
5
|
+
* Provides intelligent auto-completion for:
|
|
6
|
+
* - Account names
|
|
7
|
+
* - Payee names
|
|
8
|
+
* - Commodity symbols
|
|
9
|
+
* - Directive keywords
|
|
10
|
+
* - Include file paths
|
|
11
|
+
* - Tags
|
|
12
|
+
*/
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
30
|
+
var ownKeys = function(o) {
|
|
31
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
32
|
+
var ar = [];
|
|
33
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
34
|
+
return ar;
|
|
35
|
+
};
|
|
36
|
+
return ownKeys(o);
|
|
37
|
+
};
|
|
38
|
+
return function (mod) {
|
|
39
|
+
if (mod && mod.__esModule) return mod;
|
|
40
|
+
var result = {};
|
|
41
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
42
|
+
__setModuleDefault(result, mod);
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
})();
|
|
46
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
exports.completionProvider = exports.CompletionProvider = void 0;
|
|
48
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
49
|
+
const fs = __importStar(require("fs"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const transactionAnalyzer_1 = require("./transactionAnalyzer");
|
|
52
|
+
class CompletionProvider {
|
|
53
|
+
constructor() {
|
|
54
|
+
this.accounts = [];
|
|
55
|
+
this.payees = [];
|
|
56
|
+
this.commodities = [];
|
|
57
|
+
this.tags = [];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Update the list of known accounts
|
|
61
|
+
*/
|
|
62
|
+
updateAccounts(accounts) {
|
|
63
|
+
this.accounts = accounts;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Update the list of known payees
|
|
67
|
+
*/
|
|
68
|
+
updatePayees(payees) {
|
|
69
|
+
this.payees = payees;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Update the list of known commodities
|
|
73
|
+
*/
|
|
74
|
+
updateCommodities(commodities) {
|
|
75
|
+
this.commodities = commodities;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Update the list of known tags
|
|
79
|
+
*/
|
|
80
|
+
updateTags(tags) {
|
|
81
|
+
this.tags = tags;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get completion items for the current position
|
|
85
|
+
*/
|
|
86
|
+
getCompletionItems(document, position, parsed, settings) {
|
|
87
|
+
const line = document.getText({
|
|
88
|
+
start: { line: position.line, character: 0 },
|
|
89
|
+
end: { line: position.line, character: position.character }
|
|
90
|
+
});
|
|
91
|
+
// Include directive - suggest file paths
|
|
92
|
+
const includeMatch = line.match(/^include\s+(.*)$/);
|
|
93
|
+
if (includeMatch) {
|
|
94
|
+
return this.getIncludePathCompletions(document.uri, includeMatch[1]);
|
|
95
|
+
}
|
|
96
|
+
// Comment - suggest tags (tags appear after ; in format tag:value)
|
|
97
|
+
const commentMatch = line.match(/;([^;]*?)$/);
|
|
98
|
+
if (commentMatch) {
|
|
99
|
+
const commentPart = commentMatch[1];
|
|
100
|
+
// Check if we're typing a tag name (after whitespace or after another tag)
|
|
101
|
+
if (/(?:^|\s)(\w*)$/.test(commentPart)) {
|
|
102
|
+
return this.getTagCompletions(settings);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Cost notation - suggest commodities after @ or @@
|
|
106
|
+
if (/^\s+/.test(line) && !commentMatch) {
|
|
107
|
+
// Check if cursor is after @ or @@ (for cost notation)
|
|
108
|
+
const costMatch = line.match(/@@?\s*[^\s]*$/);
|
|
109
|
+
if (costMatch) {
|
|
110
|
+
return this.getCommodityCompletions(settings);
|
|
111
|
+
}
|
|
112
|
+
// Otherwise, suggest accounts for posting line
|
|
113
|
+
// Try to get smart suggestions based on current transaction context
|
|
114
|
+
if (parsed) {
|
|
115
|
+
const payee = this.getCurrentTransactionPayee(document, position);
|
|
116
|
+
if (payee) {
|
|
117
|
+
return this.getSmartAccountCompletions(payee, parsed, settings);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return this.getAccountCompletions(settings);
|
|
121
|
+
}
|
|
122
|
+
// Transaction header - suggest payees
|
|
123
|
+
if (/^\d{4}[-/]\d{2}[-/]\d{2}/.test(line) && !commentMatch) {
|
|
124
|
+
return this.getPayeeCompletions(settings);
|
|
125
|
+
}
|
|
126
|
+
// Directive line
|
|
127
|
+
if (line.trim().length === 0 || /^[a-z]/.test(line.trim())) {
|
|
128
|
+
return this.getDirectiveCompletions();
|
|
129
|
+
}
|
|
130
|
+
return [];
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get account name completions
|
|
134
|
+
*/
|
|
135
|
+
getAccountCompletions(settings) {
|
|
136
|
+
const onlyDeclared = settings?.onlyDeclaredAccounts ?? true;
|
|
137
|
+
const filtered = onlyDeclared ? this.accounts.filter(a => a.declared) : this.accounts;
|
|
138
|
+
return filtered.map(account => ({
|
|
139
|
+
label: account.name,
|
|
140
|
+
kind: vscode_languageserver_1.CompletionItemKind.Field,
|
|
141
|
+
detail: 'Account'
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get payee completions
|
|
146
|
+
*/
|
|
147
|
+
getPayeeCompletions(settings) {
|
|
148
|
+
const onlyDeclared = settings?.onlyDeclaredPayees ?? true;
|
|
149
|
+
const filtered = onlyDeclared ? this.payees.filter(p => p.declared) : this.payees;
|
|
150
|
+
return filtered.map(payee => ({
|
|
151
|
+
label: payee.name,
|
|
152
|
+
kind: vscode_languageserver_1.CompletionItemKind.Text,
|
|
153
|
+
detail: 'Payee'
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get directive keyword completions
|
|
158
|
+
*/
|
|
159
|
+
getDirectiveCompletions() {
|
|
160
|
+
const directives = [
|
|
161
|
+
{ label: 'account', detail: 'Declare an account' },
|
|
162
|
+
{ label: 'commodity', detail: 'Declare a commodity' },
|
|
163
|
+
{ label: 'payee', detail: 'Declare a payee' },
|
|
164
|
+
{ label: 'tag', detail: 'Declare a tag' },
|
|
165
|
+
{ label: 'include', detail: 'Include another file' },
|
|
166
|
+
{ label: 'alias', detail: 'Define an account alias' }
|
|
167
|
+
];
|
|
168
|
+
return directives.map(d => ({
|
|
169
|
+
label: d.label,
|
|
170
|
+
kind: vscode_languageserver_1.CompletionItemKind.Keyword,
|
|
171
|
+
detail: d.detail
|
|
172
|
+
}));
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get commodity completions
|
|
176
|
+
*/
|
|
177
|
+
getCommodityCompletions(settings) {
|
|
178
|
+
const onlyDeclared = settings?.onlyDeclaredCommodities ?? true;
|
|
179
|
+
const filtered = onlyDeclared ? this.commodities.filter(c => c.declared) : this.commodities;
|
|
180
|
+
return filtered.map(commodity => ({
|
|
181
|
+
label: commodity.name,
|
|
182
|
+
kind: vscode_languageserver_1.CompletionItemKind.Unit,
|
|
183
|
+
detail: 'Commodity'
|
|
184
|
+
}));
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get tag name completions
|
|
188
|
+
*/
|
|
189
|
+
getTagCompletions(settings) {
|
|
190
|
+
const onlyDeclared = settings?.onlyDeclaredTags ?? true;
|
|
191
|
+
const filtered = onlyDeclared ? this.tags.filter(t => t.declared) : this.tags;
|
|
192
|
+
return filtered.map(tag => ({
|
|
193
|
+
label: tag.name,
|
|
194
|
+
kind: vscode_languageserver_1.CompletionItemKind.Property,
|
|
195
|
+
detail: 'Tag',
|
|
196
|
+
insertText: `${tag.name}:`
|
|
197
|
+
}));
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Get include file path completions
|
|
201
|
+
*/
|
|
202
|
+
getIncludePathCompletions(documentUri, partialPath) {
|
|
203
|
+
try {
|
|
204
|
+
// Convert URI to file path
|
|
205
|
+
const currentFilePath = documentUri.startsWith('file://')
|
|
206
|
+
? documentUri.substring(7)
|
|
207
|
+
: documentUri;
|
|
208
|
+
const currentDir = path.dirname(currentFilePath);
|
|
209
|
+
// Determine which directory to search based on partialPath
|
|
210
|
+
let searchDir;
|
|
211
|
+
if (partialPath.endsWith('/') || partialPath.endsWith(path.sep)) {
|
|
212
|
+
// If ends with /, search in that directory (e.g., "../" -> parent dir, "../monthly/" -> monthly dir)
|
|
213
|
+
searchDir = path.resolve(currentDir, partialPath);
|
|
214
|
+
}
|
|
215
|
+
else if (partialPath.includes('/') || partialPath.includes(path.sep)) {
|
|
216
|
+
// Has a path separator but doesn't end with it
|
|
217
|
+
// Extract directory part: "../monthly/feb" -> search in "../monthly"
|
|
218
|
+
const dirPart = path.dirname(partialPath);
|
|
219
|
+
searchDir = path.resolve(currentDir, dirPart);
|
|
220
|
+
}
|
|
221
|
+
else if (partialPath === '..' || partialPath === '.') {
|
|
222
|
+
// Special case: typing ".." or "." should show parent/current directory
|
|
223
|
+
searchDir = path.resolve(currentDir, partialPath);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
// No path separator, search in current directory
|
|
227
|
+
searchDir = currentDir;
|
|
228
|
+
}
|
|
229
|
+
// Check if directory exists
|
|
230
|
+
if (!fs.existsSync(searchDir) || !fs.statSync(searchDir).isDirectory()) {
|
|
231
|
+
return [];
|
|
232
|
+
}
|
|
233
|
+
// Read directory contents
|
|
234
|
+
const files = fs.readdirSync(searchDir);
|
|
235
|
+
const completions = [];
|
|
236
|
+
for (const file of files) {
|
|
237
|
+
const filePath = path.join(searchDir, file);
|
|
238
|
+
const stats = fs.statSync(filePath);
|
|
239
|
+
if (stats.isDirectory()) {
|
|
240
|
+
// Add directories with trailing slash
|
|
241
|
+
completions.push({
|
|
242
|
+
label: file + '/',
|
|
243
|
+
kind: vscode_languageserver_1.CompletionItemKind.Folder,
|
|
244
|
+
detail: 'Directory'
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
else if (file.endsWith('.journal') || file.endsWith('.hledger')) {
|
|
248
|
+
// Add journal files
|
|
249
|
+
completions.push({
|
|
250
|
+
label: file,
|
|
251
|
+
kind: vscode_languageserver_1.CompletionItemKind.File,
|
|
252
|
+
detail: 'Journal file'
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return completions;
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
// If any error occurs (permissions, etc.), return empty array
|
|
260
|
+
return [];
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get the payee of the current transaction being edited
|
|
265
|
+
*/
|
|
266
|
+
getCurrentTransactionPayee(document, position) {
|
|
267
|
+
const lines = document.getText().split('\n');
|
|
268
|
+
// Search backwards from current line to find transaction header
|
|
269
|
+
for (let i = position.line; i >= 0; i--) {
|
|
270
|
+
const line = lines[i];
|
|
271
|
+
// Transaction header with payee
|
|
272
|
+
const match = line.match(/^\d{4}[-/]\d{2}[-/]\d{2}(?:\s+[*!])?(?:\s+\([^)]+\))?\s+(.+?)(?:\s*;|$)/);
|
|
273
|
+
if (match) {
|
|
274
|
+
return match[1].trim();
|
|
275
|
+
}
|
|
276
|
+
// Stop if we hit a non-transaction line (directive or empty)
|
|
277
|
+
if (line.trim() && !line.match(/^\s+/) && !line.match(/^\d{4}/)) {
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Get smart account completions based on payee history
|
|
285
|
+
*/
|
|
286
|
+
getSmartAccountCompletions(payee, parsed, settings) {
|
|
287
|
+
// Analyze the parsed document to build patterns
|
|
288
|
+
transactionAnalyzer_1.transactionAnalyzer.analyze(parsed);
|
|
289
|
+
// Get accounts historically used with this payee
|
|
290
|
+
const patterns = transactionAnalyzer_1.transactionAnalyzer.getAccountsForPayee(payee, 5);
|
|
291
|
+
const suggestedAccounts = new Set(patterns.map(p => p.account));
|
|
292
|
+
// Get all accounts with frequency info
|
|
293
|
+
const frequencyMap = new Map(transactionAnalyzer_1.transactionAnalyzer.getAccountsByFrequency().map(f => [f.account, f.count]));
|
|
294
|
+
// Filter accounts based on settings
|
|
295
|
+
const onlyDeclared = settings?.onlyDeclaredAccounts ?? true;
|
|
296
|
+
const filtered = onlyDeclared ? this.accounts.filter(a => a.declared) : this.accounts;
|
|
297
|
+
// Create completion items with smart sorting
|
|
298
|
+
const items = filtered.map(account => {
|
|
299
|
+
const item = {
|
|
300
|
+
label: account.name,
|
|
301
|
+
kind: vscode_languageserver_1.CompletionItemKind.Field,
|
|
302
|
+
detail: 'Account'
|
|
303
|
+
};
|
|
304
|
+
// Add sort text to prioritize suggested accounts
|
|
305
|
+
if (suggestedAccounts.has(account.name)) {
|
|
306
|
+
const frequency = patterns.find(p => p.account === account.name)?.frequency || 0;
|
|
307
|
+
// Use '0' prefix for suggested accounts to sort them first
|
|
308
|
+
item.sortText = `0_${String(1000 - frequency).padStart(4, '0')}_${account.name}`;
|
|
309
|
+
item.detail = `Account (used ${frequency}x with ${payee})`;
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
// Use '1' prefix for other accounts, sorted by global frequency
|
|
313
|
+
const freq = frequencyMap.get(account.name) || 0;
|
|
314
|
+
item.sortText = `1_${String(10000 - freq).padStart(5, '0')}_${account.name}`;
|
|
315
|
+
}
|
|
316
|
+
return item;
|
|
317
|
+
});
|
|
318
|
+
return items;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
exports.CompletionProvider = CompletionProvider;
|
|
322
|
+
exports.completionProvider = new CompletionProvider();
|
|
323
|
+
//# sourceMappingURL=completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/features/completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Location } from 'vscode-languageserver';
|
|
2
|
+
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
3
|
+
import { ParsedDocument } from '../types';
|
|
4
|
+
export declare class DefinitionProvider {
|
|
5
|
+
/**
|
|
6
|
+
* Provide a definition location for the token at the given position.
|
|
7
|
+
* Accepts `parsed` produced by server's parser (follows includes, uses fileReader).
|
|
8
|
+
*/
|
|
9
|
+
provideDefinition(document: TextDocument, line: number, character: number, parsed: ParsedDocument): Location | null;
|
|
10
|
+
}
|
|
11
|
+
export declare const definitionProvider: DefinitionProvider;
|
|
12
|
+
//# sourceMappingURL=definition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/features/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,qBAAa,kBAAkB;IAC7B;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI;CAkDpH;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.definitionProvider = exports.DefinitionProvider = void 0;
|
|
4
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
5
|
+
class DefinitionProvider {
|
|
6
|
+
/**
|
|
7
|
+
* Provide a definition location for the token at the given position.
|
|
8
|
+
* Accepts `parsed` produced by server's parser (follows includes, uses fileReader).
|
|
9
|
+
*/
|
|
10
|
+
provideDefinition(document, line, character, parsed) {
|
|
11
|
+
// Get token at position (reuse simple logic from hover)
|
|
12
|
+
const fullLine = document.getText({ start: { line, character: 0 }, end: { line, character: Number.MAX_SAFE_INTEGER } });
|
|
13
|
+
const col = Math.min(character, fullLine.length);
|
|
14
|
+
let start = col - 1;
|
|
15
|
+
while (start >= 0) {
|
|
16
|
+
const ch = fullLine[start];
|
|
17
|
+
if (/\s|;|#/.test(ch))
|
|
18
|
+
break;
|
|
19
|
+
start--;
|
|
20
|
+
}
|
|
21
|
+
start++;
|
|
22
|
+
let end = col;
|
|
23
|
+
while (end < fullLine.length) {
|
|
24
|
+
const ch = fullLine[end];
|
|
25
|
+
if (/\s|;|#/.test(ch))
|
|
26
|
+
break;
|
|
27
|
+
end++;
|
|
28
|
+
}
|
|
29
|
+
const token = fullLine.substring(start, end).trim();
|
|
30
|
+
if (!token)
|
|
31
|
+
return null;
|
|
32
|
+
// Search accounts
|
|
33
|
+
const account = parsed.accounts.find(a => a.name === token);
|
|
34
|
+
if (account && account.sourceUri) {
|
|
35
|
+
const lineNum = account.line ?? 0;
|
|
36
|
+
return vscode_languageserver_1.Location.create(account.sourceUri, vscode_languageserver_1.Range.create(vscode_languageserver_1.Position.create(lineNum, 0), vscode_languageserver_1.Position.create(lineNum, 0)));
|
|
37
|
+
}
|
|
38
|
+
// Search payees
|
|
39
|
+
const payee = parsed.payees.find(p => p.name === token);
|
|
40
|
+
if (payee && payee.sourceUri) {
|
|
41
|
+
const lineNum = payee.line ?? 0;
|
|
42
|
+
return vscode_languageserver_1.Location.create(payee.sourceUri, vscode_languageserver_1.Range.create(vscode_languageserver_1.Position.create(lineNum, 0), vscode_languageserver_1.Position.create(lineNum, 0)));
|
|
43
|
+
}
|
|
44
|
+
// Search commodities
|
|
45
|
+
const commodity = parsed.commodities.find(c => c.name === token || c.format?.symbol === token);
|
|
46
|
+
if (commodity && commodity.sourceUri) {
|
|
47
|
+
const lineNum = commodity.line ?? 0;
|
|
48
|
+
return vscode_languageserver_1.Location.create(commodity.sourceUri, vscode_languageserver_1.Range.create(vscode_languageserver_1.Position.create(lineNum, 0), vscode_languageserver_1.Position.create(lineNum, 0)));
|
|
49
|
+
}
|
|
50
|
+
// Search tags
|
|
51
|
+
const tag = parsed.tags.find(t => t.name === token);
|
|
52
|
+
if (tag && tag.sourceUri) {
|
|
53
|
+
const lineNum = tag.line ?? 0;
|
|
54
|
+
return vscode_languageserver_1.Location.create(tag.sourceUri, vscode_languageserver_1.Range.create(vscode_languageserver_1.Position.create(lineNum, 0), vscode_languageserver_1.Position.create(lineNum, 0)));
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.DefinitionProvider = DefinitionProvider;
|
|
60
|
+
exports.definitionProvider = new DefinitionProvider();
|
|
61
|
+
//# sourceMappingURL=definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/features/definition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document links provider for hledger journal files
|
|
3
|
+
*
|
|
4
|
+
* Provides clickable links for:
|
|
5
|
+
* - Include directive paths
|
|
6
|
+
*/
|
|
7
|
+
import { DocumentLink } from 'vscode-languageserver/node';
|
|
8
|
+
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
9
|
+
import { ParsedDocument } from '../types';
|
|
10
|
+
export declare class DocumentLinksProvider {
|
|
11
|
+
/**
|
|
12
|
+
* Provide document links for a document
|
|
13
|
+
*/
|
|
14
|
+
provideDocumentLinks(document: TextDocument, parsedDoc: ParsedDocument): DocumentLink[];
|
|
15
|
+
}
|
|
16
|
+
export declare const documentLinksProvider: DocumentLinksProvider;
|
|
17
|
+
//# sourceMappingURL=documentLinks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentLinks.d.ts","sourceRoot":"","sources":["../../src/features/documentLinks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,qBAAa,qBAAqB;IAChC;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,GAAG,YAAY,EAAE;CAwDxF;AAED,eAAO,MAAM,qBAAqB,uBAA8B,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Document links provider for hledger journal files
|
|
4
|
+
*
|
|
5
|
+
* Provides clickable links for:
|
|
6
|
+
* - Include directive paths
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.documentLinksProvider = exports.DocumentLinksProvider = void 0;
|
|
10
|
+
const uri_1 = require("../utils/uri");
|
|
11
|
+
class DocumentLinksProvider {
|
|
12
|
+
/**
|
|
13
|
+
* Provide document links for a document
|
|
14
|
+
*/
|
|
15
|
+
provideDocumentLinks(document, parsedDoc) {
|
|
16
|
+
const links = [];
|
|
17
|
+
const lines = document.getText().split('\n');
|
|
18
|
+
// Create links for each include directive
|
|
19
|
+
for (const directive of parsedDoc.directives) {
|
|
20
|
+
if (directive.type === 'include' && directive.line !== undefined) {
|
|
21
|
+
const line = lines[directive.line];
|
|
22
|
+
if (!line)
|
|
23
|
+
continue;
|
|
24
|
+
// Find the include path in the line
|
|
25
|
+
const includeKeyword = 'include';
|
|
26
|
+
const keywordIndex = line.indexOf(includeKeyword);
|
|
27
|
+
if (keywordIndex === -1)
|
|
28
|
+
continue;
|
|
29
|
+
// The path starts after 'include ' (with space)
|
|
30
|
+
const pathStart = keywordIndex + includeKeyword.length;
|
|
31
|
+
// Skip whitespace after 'include'
|
|
32
|
+
let actualPathStart = pathStart;
|
|
33
|
+
while (actualPathStart < line.length && /\s/.test(line[actualPathStart])) {
|
|
34
|
+
actualPathStart++;
|
|
35
|
+
}
|
|
36
|
+
// Find the end of the path (end of line or start of comment)
|
|
37
|
+
let pathEnd = actualPathStart;
|
|
38
|
+
while (pathEnd < line.length) {
|
|
39
|
+
const char = line[pathEnd];
|
|
40
|
+
if (char === ';' || char === '#') {
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
pathEnd++;
|
|
44
|
+
}
|
|
45
|
+
// Trim trailing whitespace
|
|
46
|
+
while (pathEnd > actualPathStart && /\s/.test(line[pathEnd - 1])) {
|
|
47
|
+
pathEnd--;
|
|
48
|
+
}
|
|
49
|
+
const includePath = line.substring(actualPathStart, pathEnd).trim();
|
|
50
|
+
if (!includePath)
|
|
51
|
+
continue;
|
|
52
|
+
// Resolve the include path to a full URI
|
|
53
|
+
const resolvedUri = (0, uri_1.resolveIncludePath)(includePath, document.uri);
|
|
54
|
+
links.push({
|
|
55
|
+
range: {
|
|
56
|
+
start: { line: directive.line, character: actualPathStart },
|
|
57
|
+
end: { line: directive.line, character: pathEnd }
|
|
58
|
+
},
|
|
59
|
+
target: resolvedUri
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return links;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.DocumentLinksProvider = DocumentLinksProvider;
|
|
67
|
+
exports.documentLinksProvider = new DocumentLinksProvider();
|
|
68
|
+
//# sourceMappingURL=documentLinks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentLinks.js","sourceRoot":"","sources":["../../src/features/documentLinks.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAKH,sCAAkD;AAElD,MAAa,qBAAqB;IAChC;;OAEG;IACH,oBAAoB,CAAC,QAAsB,EAAE,SAAyB;QACpE,MAAM,KAAK,GAAmB,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE7C,0CAA0C;QAC1C,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YAC7C,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACjE,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,CAAC,IAAI;oBAAE,SAAS;gBAEpB,oCAAoC;gBACpC,MAAM,cAAc,GAAG,SAAS,CAAC;gBACjC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAClD,IAAI,YAAY,KAAK,CAAC,CAAC;oBAAE,SAAS;gBAElC,gDAAgD;gBAChD,MAAM,SAAS,GAAG,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC;gBACvD,kCAAkC;gBAClC,IAAI,eAAe,GAAG,SAAS,CAAC;gBAChC,OAAO,eAAe,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;oBACzE,eAAe,EAAE,CAAC;gBACpB,CAAC;gBAED,6DAA6D;gBAC7D,IAAI,OAAO,GAAG,eAAe,CAAC;gBAC9B,OAAO,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC3B,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;wBACjC,MAAM;oBACR,CAAC;oBACD,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,2BAA2B;gBAC3B,OAAO,OAAO,GAAG,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjE,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBACpE,IAAI,CAAC,WAAW;oBAAE,SAAS;gBAE3B,yCAAyC;gBACzC,MAAM,WAAW,GAAG,IAAA,wBAAkB,EAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAElE,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK,EAAE;wBACL,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE;wBAC3D,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE;qBAClD;oBACD,MAAM,EAAE,WAAW;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA5DD,sDA4DC;AAEY,QAAA,qBAAqB,GAAG,IAAI,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Find references provider for hledger language server
|
|
3
|
+
*
|
|
4
|
+
* Finds all occurrences of accounts, payees, commodities, and tags
|
|
5
|
+
* across the journal file and its includes.
|
|
6
|
+
*/
|
|
7
|
+
import { Location, Position } from 'vscode-languageserver';
|
|
8
|
+
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
9
|
+
import { ParsedDocument } from '../types';
|
|
10
|
+
export declare class FindReferencesProvider {
|
|
11
|
+
/**
|
|
12
|
+
* Find all references to the symbol at the given position
|
|
13
|
+
*/
|
|
14
|
+
findReferences(document: TextDocument, position: Position, parsed: ParsedDocument, includeDeclaration: boolean): Location[] | null;
|
|
15
|
+
/**
|
|
16
|
+
* Find all references to an account
|
|
17
|
+
*/
|
|
18
|
+
private findAccountReferences;
|
|
19
|
+
/**
|
|
20
|
+
* Find all references to a payee
|
|
21
|
+
*/
|
|
22
|
+
private findPayeeReferences;
|
|
23
|
+
/**
|
|
24
|
+
* Find all references to a commodity
|
|
25
|
+
*/
|
|
26
|
+
private findCommodityReferences;
|
|
27
|
+
/**
|
|
28
|
+
* Find all references to a tag
|
|
29
|
+
*/
|
|
30
|
+
private findTagReferences;
|
|
31
|
+
}
|
|
32
|
+
export declare const findReferencesProvider: FindReferencesProvider;
|
|
33
|
+
//# sourceMappingURL=findReferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findReferences.d.ts","sourceRoot":"","sources":["../../src/features/findReferences.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAS,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,qBAAa,sBAAsB;IACjC;;OAEG;IACH,cAAc,CACZ,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,cAAc,EACtB,kBAAkB,EAAE,OAAO,GAC1B,QAAQ,EAAE,GAAG,IAAI;IAsCpB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAQ1B;AAED,eAAO,MAAM,sBAAsB,wBAA+B,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Find references provider for hledger language server
|
|
4
|
+
*
|
|
5
|
+
* Finds all occurrences of accounts, payees, commodities, and tags
|
|
6
|
+
* across the journal file and its includes.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.findReferencesProvider = exports.FindReferencesProvider = void 0;
|
|
10
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
11
|
+
const codeActions_1 = require("./codeActions");
|
|
12
|
+
class FindReferencesProvider {
|
|
13
|
+
/**
|
|
14
|
+
* Find all references to the symbol at the given position
|
|
15
|
+
*/
|
|
16
|
+
findReferences(document, position, parsed, includeDeclaration) {
|
|
17
|
+
// Get the item at cursor
|
|
18
|
+
const item = codeActions_1.codeActionProvider.getItemAtCursor(document, position, parsed);
|
|
19
|
+
if (!item) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
// Find all references across all files
|
|
23
|
+
const locations = [];
|
|
24
|
+
// Build a map of URI -> document content for all files
|
|
25
|
+
const fileContents = new Map();
|
|
26
|
+
fileContents.set(document.uri, document.getText());
|
|
27
|
+
// We need to process the main document and any included files
|
|
28
|
+
// For now, we'll only search the current document since we don't have
|
|
29
|
+
// access to other file contents in this provider
|
|
30
|
+
// TODO: This could be extended to search included files if we have access to them
|
|
31
|
+
// Find references based on item type
|
|
32
|
+
switch (item.type) {
|
|
33
|
+
case 'account':
|
|
34
|
+
locations.push(...this.findAccountReferences(document, item.name, parsed));
|
|
35
|
+
break;
|
|
36
|
+
case 'payee':
|
|
37
|
+
locations.push(...this.findPayeeReferences(document, item.name, parsed));
|
|
38
|
+
break;
|
|
39
|
+
case 'commodity':
|
|
40
|
+
locations.push(...this.findCommodityReferences(document, item.name, parsed));
|
|
41
|
+
break;
|
|
42
|
+
case 'tag':
|
|
43
|
+
locations.push(...this.findTagReferences(document, item.name, parsed));
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
return locations;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Find all references to an account
|
|
50
|
+
*/
|
|
51
|
+
findAccountReferences(document, accountName, parsed) {
|
|
52
|
+
const ranges = codeActions_1.codeActionProvider.findAccountReferences(document, accountName, parsed);
|
|
53
|
+
return ranges.map(range => vscode_languageserver_1.Location.create(document.uri, range));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Find all references to a payee
|
|
57
|
+
*/
|
|
58
|
+
findPayeeReferences(document, payeeName, parsed) {
|
|
59
|
+
const ranges = codeActions_1.codeActionProvider.findPayeeReferences(document, payeeName, parsed);
|
|
60
|
+
return ranges.map(range => vscode_languageserver_1.Location.create(document.uri, range));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Find all references to a commodity
|
|
64
|
+
*/
|
|
65
|
+
findCommodityReferences(document, commodityName, parsed) {
|
|
66
|
+
const ranges = codeActions_1.codeActionProvider.findCommodityReferences(document, commodityName, parsed);
|
|
67
|
+
return ranges.map(range => vscode_languageserver_1.Location.create(document.uri, range));
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Find all references to a tag
|
|
71
|
+
*/
|
|
72
|
+
findTagReferences(document, tagName, parsed) {
|
|
73
|
+
const ranges = codeActions_1.codeActionProvider.findTagReferences(document, tagName, parsed);
|
|
74
|
+
return ranges.map(range => vscode_languageserver_1.Location.create(document.uri, range));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.FindReferencesProvider = FindReferencesProvider;
|
|
78
|
+
exports.findReferencesProvider = new FindReferencesProvider();
|
|
79
|
+
//# sourceMappingURL=findReferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findReferences.js","sourceRoot":"","sources":["../../src/features/findReferences.ts"],"names":[],"mappings":"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"}
|