hledger-lsp 0.1.5 → 0.1.7
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/README.md +87 -167
- package/out/features/codeActions.d.ts +0 -4
- package/out/features/codeActions.d.ts.map +1 -1
- package/out/features/codeActions.js +11 -25
- package/out/features/codeActions.js.map +1 -1
- package/out/features/codeLens.d.ts +29 -0
- package/out/features/codeLens.d.ts.map +1 -0
- package/out/features/codeLens.js +105 -0
- package/out/features/codeLens.js.map +1 -0
- package/out/features/completion.d.ts.map +1 -1
- package/out/features/completion.js +21 -9
- package/out/features/completion.js.map +1 -1
- package/out/features/definition.d.ts.map +1 -1
- package/out/features/definition.js.map +1 -1
- package/out/features/foldingRanges.d.ts.map +1 -1
- package/out/features/foldingRanges.js +9 -2
- package/out/features/foldingRanges.js.map +1 -1
- package/out/features/formatter.d.ts +2 -0
- package/out/features/formatter.d.ts.map +1 -1
- package/out/features/formatter.js +36 -7
- package/out/features/formatter.js.map +1 -1
- package/out/features/formattingUtils.d.ts +38 -0
- package/out/features/formattingUtils.d.ts.map +1 -0
- package/out/features/formattingUtils.js +107 -0
- package/out/features/formattingUtils.js.map +1 -0
- package/out/features/hover.d.ts +2 -5
- package/out/features/hover.d.ts.map +1 -1
- package/out/features/hover.js +60 -36
- package/out/features/hover.js.map +1 -1
- package/out/features/inlayHints.d.ts +7 -5
- package/out/features/inlayHints.d.ts.map +1 -1
- package/out/features/inlayHints.js +164 -91
- package/out/features/inlayHints.js.map +1 -1
- package/out/features/semanticTokens.d.ts.map +1 -1
- package/out/features/semanticTokens.js +22 -1
- package/out/features/semanticTokens.js.map +1 -1
- package/out/features/symbols.d.ts.map +1 -1
- package/out/features/symbols.js +9 -3
- package/out/features/symbols.js.map +1 -1
- package/out/features/validator.d.ts +0 -8
- package/out/features/validator.d.ts.map +1 -1
- package/out/features/validator.js +367 -171
- package/out/features/validator.js.map +1 -1
- package/out/parser/ast.d.ts +2 -2
- package/out/parser/ast.d.ts.map +1 -1
- package/out/parser/ast.js +10 -5
- package/out/parser/ast.js.map +1 -1
- package/out/parser/index.d.ts +8 -5
- package/out/parser/index.d.ts.map +1 -1
- package/out/parser/index.js +0 -7
- package/out/parser/index.js.map +1 -1
- package/out/server/configFile.d.ts +104 -0
- package/out/server/configFile.d.ts.map +1 -0
- package/out/server/configFile.js +231 -0
- package/out/server/configFile.js.map +1 -0
- package/out/server/settings.d.ts +9 -0
- package/out/server/settings.d.ts.map +1 -1
- package/out/server/settings.js +9 -0
- package/out/server/settings.js.map +1 -1
- package/out/server/workspace.d.ts +126 -0
- package/out/server/workspace.d.ts.map +1 -0
- package/out/server/workspace.js +605 -0
- package/out/server/workspace.js.map +1 -0
- package/out/server.js +438 -29
- package/out/server.js.map +1 -1
- package/out/types.d.ts +15 -4
- package/out/types.d.ts.map +1 -1
- package/out/types.js +11 -0
- package/out/types.js.map +1 -1
- package/out/utils/amountFormatter.d.ts +26 -0
- package/out/utils/amountFormatter.d.ts.map +1 -0
- package/out/utils/amountFormatter.js +91 -0
- package/out/utils/amountFormatter.js.map +1 -0
- package/out/utils/balanceCalculator.d.ts +32 -0
- package/out/utils/balanceCalculator.d.ts.map +1 -0
- package/out/utils/balanceCalculator.js +93 -0
- package/out/utils/balanceCalculator.js.map +1 -0
- package/out/utils/index.d.ts.map +1 -1
- package/out/utils/index.js +2 -1
- package/out/utils/index.js.map +1 -1
- package/package.json +1 -1
package/out/features/hover.js
CHANGED
|
@@ -14,11 +14,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
14
14
|
exports.hoverProvider = exports.HoverProvider = void 0;
|
|
15
15
|
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
16
16
|
const index_1 = require("../utils/index");
|
|
17
|
+
const balanceCalculator_1 = require("../utils/balanceCalculator");
|
|
18
|
+
const amountFormatter_1 = require("../utils/amountFormatter");
|
|
19
|
+
const uri_1 = require("../utils/uri");
|
|
17
20
|
class HoverProvider {
|
|
18
21
|
/**
|
|
19
22
|
* Provide hover information at the given document position
|
|
20
23
|
*/
|
|
21
|
-
provideHover(document, line, character, parsed) {
|
|
24
|
+
provideHover(document, line, character, parsed, settings) {
|
|
22
25
|
if (!parsed) {
|
|
23
26
|
return this.provideBasicHover(document, line, character);
|
|
24
27
|
}
|
|
@@ -26,14 +29,6 @@ class HoverProvider {
|
|
|
26
29
|
start: { line, character: 0 },
|
|
27
30
|
end: { line, character: Number.MAX_SAFE_INTEGER }
|
|
28
31
|
});
|
|
29
|
-
// Get token at cursor position
|
|
30
|
-
const token = this.getTokenAtPosition(fullLine, character);
|
|
31
|
-
if (!token)
|
|
32
|
-
return null;
|
|
33
|
-
// Check for date first (highest priority)
|
|
34
|
-
if (this.isDate(token)) {
|
|
35
|
-
return this.provideDateHover(token);
|
|
36
|
-
}
|
|
37
32
|
// Check for tag (in comments) before other checks
|
|
38
33
|
if (fullLine.includes(';') || fullLine.includes('#')) {
|
|
39
34
|
// Check if cursor is after the comment marker
|
|
@@ -42,19 +37,47 @@ class HoverProvider {
|
|
|
42
37
|
const commentStart = Math.min(semicolonPos >= 0 ? semicolonPos : Infinity, hashPos >= 0 ? hashPos : Infinity);
|
|
43
38
|
if (character > commentStart) {
|
|
44
39
|
// If token contains ':', extract just the tag name part
|
|
45
|
-
|
|
46
|
-
if (token
|
|
47
|
-
tagName = token
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
40
|
+
const token = this.getTokenAtPosition(fullLine, character);
|
|
41
|
+
if (token) {
|
|
42
|
+
let tagName = token;
|
|
43
|
+
if (token.includes(':')) {
|
|
44
|
+
tagName = token.substring(0, token.indexOf(':'));
|
|
45
|
+
}
|
|
46
|
+
// Check if this is a tag (tag name followed by colon in the line)
|
|
47
|
+
if (tagName && fullLine.includes(`${tagName}:`)) {
|
|
48
|
+
return this.provideTagHover(tagName, parsed);
|
|
49
|
+
}
|
|
52
50
|
}
|
|
53
51
|
// If in comment but not a tag, return null
|
|
54
52
|
return null;
|
|
55
53
|
}
|
|
56
54
|
}
|
|
57
|
-
// Check
|
|
55
|
+
// Check if we are on a posting line (account) - Robust check for accounts with spaces
|
|
56
|
+
// This takes priority over generic token scanning for account,
|
|
57
|
+
// because extractAccountFromPosting handles "Expenses:Credit Card" correctly
|
|
58
|
+
// whereas getTokenAtPosition breaks on spaces.
|
|
59
|
+
if ((0, index_1.isPosting)(fullLine)) {
|
|
60
|
+
const accountName = (0, index_1.extractAccountFromPosting)(fullLine);
|
|
61
|
+
if (accountName) {
|
|
62
|
+
const indentation = (0, index_1.getIndentationLevel)(fullLine);
|
|
63
|
+
const start = indentation;
|
|
64
|
+
const end = start + accountName.length;
|
|
65
|
+
// Check if cursor is within the account name
|
|
66
|
+
if (character >= start && character <= end) {
|
|
67
|
+
return this.provideAccountHover(accountName, parsed);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Fallback to token matching for other items
|
|
72
|
+
// Get token at cursor position
|
|
73
|
+
const token = this.getTokenAtPosition(fullLine, character);
|
|
74
|
+
if (!token)
|
|
75
|
+
return null;
|
|
76
|
+
// Check for date first (highest priority)
|
|
77
|
+
if (this.isDate(token)) {
|
|
78
|
+
return this.provideDateHover(token);
|
|
79
|
+
}
|
|
80
|
+
// Check for account (contains ':') - Legacy check, mostly covered above but good fallback
|
|
58
81
|
if (token.includes(':')) {
|
|
59
82
|
return this.provideAccountHover(token, parsed);
|
|
60
83
|
}
|
|
@@ -71,7 +94,7 @@ class HoverProvider {
|
|
|
71
94
|
// Check if we're on a transaction header (lowest priority)
|
|
72
95
|
const trimmedLine = fullLine.trim();
|
|
73
96
|
if ((0, index_1.isTransactionHeader)(trimmedLine)) {
|
|
74
|
-
return this.provideTransactionHover(fullLine, line, parsed);
|
|
97
|
+
return this.provideTransactionHover(fullLine, line, parsed, document.uri, settings);
|
|
75
98
|
}
|
|
76
99
|
return null;
|
|
77
100
|
}
|
|
@@ -294,9 +317,21 @@ class HoverProvider {
|
|
|
294
317
|
/**
|
|
295
318
|
* Provide hover for transaction headers
|
|
296
319
|
*/
|
|
297
|
-
provideTransactionHover(line, lineNumber, parsed) {
|
|
320
|
+
provideTransactionHover(line, lineNumber, parsed, documentUri, settings) {
|
|
298
321
|
// Find the transaction at this line
|
|
299
|
-
|
|
322
|
+
// Must match both line number AND source URI (normalized) to avoid collisions in workspace mode
|
|
323
|
+
const normalizedDocUri = (0, uri_1.toFileUri)((0, uri_1.toFilePath)(documentUri));
|
|
324
|
+
const transaction = parsed.transactions.find(t => {
|
|
325
|
+
if (t.line !== lineNumber)
|
|
326
|
+
return false;
|
|
327
|
+
// If transaction has sourceUri, check it. If not, assume it matches (std parser behavior?)
|
|
328
|
+
// Actually, parseTransactionHeader adds sourceUri.
|
|
329
|
+
if (t.sourceUri) {
|
|
330
|
+
const normalizedSource = (0, uri_1.toFileUri)((0, uri_1.toFilePath)(t.sourceUri));
|
|
331
|
+
return normalizedSource === normalizedDocUri;
|
|
332
|
+
}
|
|
333
|
+
return true;
|
|
334
|
+
});
|
|
300
335
|
if (!transaction)
|
|
301
336
|
return null;
|
|
302
337
|
const parts = [`**Transaction**\n\n\`${transaction.description}\``];
|
|
@@ -311,13 +346,15 @@ class HoverProvider {
|
|
|
311
346
|
parts.push(`**Code:** \`${transaction.code}\``);
|
|
312
347
|
}
|
|
313
348
|
// Calculate totals per commodity
|
|
314
|
-
const totals =
|
|
349
|
+
const totals = (0, balanceCalculator_1.calculateTransactionBalanceSimple)(transaction);
|
|
315
350
|
if (Object.keys(totals).length > 0) {
|
|
316
351
|
const totalLines = ['**Totals:**'];
|
|
317
352
|
for (const [commodity, total] of Object.entries(totals)) {
|
|
318
353
|
const sign = total >= 0 ? '+' : '';
|
|
319
|
-
const
|
|
320
|
-
|
|
354
|
+
const formattedAmount = commodity
|
|
355
|
+
? (0, amountFormatter_1.formatAmount)(total, commodity, parsed, settings?.formatting)
|
|
356
|
+
: total.toFixed(2);
|
|
357
|
+
totalLines.push(`- ${sign}${formattedAmount}`);
|
|
321
358
|
}
|
|
322
359
|
parts.push(totalLines.join('\n'));
|
|
323
360
|
}
|
|
@@ -330,19 +367,6 @@ class HoverProvider {
|
|
|
330
367
|
}
|
|
331
368
|
};
|
|
332
369
|
}
|
|
333
|
-
/**
|
|
334
|
-
* Calculate transaction totals per commodity
|
|
335
|
-
*/
|
|
336
|
-
calculateTransactionTotals(transaction) {
|
|
337
|
-
const totals = {};
|
|
338
|
-
for (const posting of transaction.postings) {
|
|
339
|
-
if (posting.amount) {
|
|
340
|
-
const commodity = posting.amount.commodity || '';
|
|
341
|
-
totals[commodity] = (totals[commodity] || 0) + posting.amount.quantity;
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
return totals;
|
|
345
|
-
}
|
|
346
370
|
/**
|
|
347
371
|
* Count how many times an account is used
|
|
348
372
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hover.js","sourceRoot":"","sources":["../../src/features/hover.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hover.js","sourceRoot":"","sources":["../../src/features/hover.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,19 +17,21 @@ export interface InlayHintsSettings {
|
|
|
17
17
|
/** Show cost conversions (e.g., "= $135") */
|
|
18
18
|
showCostConversions?: boolean;
|
|
19
19
|
}
|
|
20
|
+
import { HledgerSettings } from '../server/settings';
|
|
20
21
|
export declare class InlayHintsProvider {
|
|
21
|
-
/**
|
|
22
|
-
* Format an amount with proper commodity placement
|
|
23
|
-
*/
|
|
24
|
-
private formatAmount;
|
|
25
22
|
/**
|
|
26
23
|
* Provide inlay hints for a document
|
|
27
24
|
*/
|
|
28
|
-
provideInlayHints(document: TextDocument, range: Range, parsed: ParsedDocument, settings?:
|
|
25
|
+
provideInlayHints(document: TextDocument, range: Range, parsed: ParsedDocument, settings?: HledgerSettings): InlayHint[];
|
|
29
26
|
/**
|
|
30
27
|
* Get hints for inferred amounts (postings without explicit amounts)
|
|
31
28
|
*/
|
|
32
29
|
private getInferredAmountHints;
|
|
30
|
+
/**
|
|
31
|
+
* Calculate inferred amounts for a transaction
|
|
32
|
+
* Returns a map of posting index to inferred amounts (commodity -> quantity)
|
|
33
|
+
*/
|
|
34
|
+
private calculateInferredAmounts;
|
|
33
35
|
/**
|
|
34
36
|
* Calculate running balances for all transactions
|
|
35
37
|
* Returns a map of transaction->posting index->account->commodity->balance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inlayHints.d.ts","sourceRoot":"","sources":["../../src/features/inlayHints.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"inlayHints.d.ts","sourceRoot":"","sources":["../../src/features/inlayHints.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAA+C,KAAK,EAAW,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAwB,MAAM,UAAU,CAAC;AAKhE,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,8CAA8C;IAC9C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6CAA6C;IAC7C,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAQD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,iBAAiB,CACf,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,cAAc,EACtB,QAAQ,CAAC,EAAE,eAAe,GACzB,SAAS,EAAE;IA6Cd;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmE9B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IA6ChC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAwEhC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAgFvC;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAsD/B;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|
|
@@ -10,49 +10,20 @@
|
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.inlayHintsProvider = exports.InlayHintsProvider = void 0;
|
|
12
12
|
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
13
|
+
const amountFormatter_1 = require("../utils/amountFormatter");
|
|
14
|
+
const balanceCalculator_1 = require("../utils/balanceCalculator");
|
|
15
|
+
const uri_1 = require("../utils/uri");
|
|
13
16
|
const DEFAULT_SETTINGS = {
|
|
14
17
|
showInferredAmounts: false,
|
|
15
18
|
showRunningBalances: false,
|
|
16
19
|
showCostConversions: false
|
|
17
20
|
};
|
|
18
21
|
class InlayHintsProvider {
|
|
19
|
-
/**
|
|
20
|
-
* Format an amount with proper commodity placement
|
|
21
|
-
*/
|
|
22
|
-
formatAmount(quantity, commodity, parsed) {
|
|
23
|
-
// Find commodity format if available
|
|
24
|
-
const commodityInfo = parsed.commodities.get(commodity);
|
|
25
|
-
// Determine commodity placement
|
|
26
|
-
let commodityBefore = '';
|
|
27
|
-
let commodityAfter = '';
|
|
28
|
-
if (commodityInfo?.format) {
|
|
29
|
-
if (commodityInfo.format.symbolOnLeft) {
|
|
30
|
-
commodityBefore = commodityInfo.format.symbol || commodity;
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
commodityAfter = commodityInfo.format.symbol || commodity;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
else if (commodity) {
|
|
37
|
-
// Default heuristic: common currencies go on left
|
|
38
|
-
const leftSymbols = ['$', '€', '£', '¥'];
|
|
39
|
-
if (leftSymbols.includes(commodity)) {
|
|
40
|
-
commodityBefore = commodity;
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
commodityAfter = ' ' + commodity;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// Format the number
|
|
47
|
-
const formattedNumber = quantity.toFixed(2);
|
|
48
|
-
// Build the formatted amount
|
|
49
|
-
return commodityBefore + formattedNumber + commodityAfter;
|
|
50
|
-
}
|
|
51
22
|
/**
|
|
52
23
|
* Provide inlay hints for a document
|
|
53
24
|
*/
|
|
54
25
|
provideInlayHints(document, range, parsed, settings) {
|
|
55
|
-
const config = { ...DEFAULT_SETTINGS, ...settings };
|
|
26
|
+
const config = { ...DEFAULT_SETTINGS, ...settings?.inlayHints };
|
|
56
27
|
const hints = [];
|
|
57
28
|
// If showing running balances, we need to process all transactions to accumulate balances
|
|
58
29
|
// Otherwise, only process transactions within the requested range
|
|
@@ -61,6 +32,12 @@ class InlayHintsProvider {
|
|
|
61
32
|
: new Map();
|
|
62
33
|
// Only process transactions within the requested range
|
|
63
34
|
for (const transaction of parsed.transactions) {
|
|
35
|
+
// Only show inlay hints for transactions in the current document
|
|
36
|
+
// Normalize document URI to match internal storage format (decoded spaces, etc.)
|
|
37
|
+
const normalizedDocUri = (0, uri_1.toFileUri)((0, uri_1.toFilePath)(document.uri));
|
|
38
|
+
if (transaction.sourceUri !== normalizedDocUri) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
64
41
|
const txLine = transaction.line ?? 0;
|
|
65
42
|
// Skip transactions outside the range
|
|
66
43
|
if (txLine < range.start.line || txLine > range.end.line) {
|
|
@@ -68,15 +45,15 @@ class InlayHintsProvider {
|
|
|
68
45
|
}
|
|
69
46
|
// Inferred amount hints
|
|
70
47
|
if (config.showInferredAmounts) {
|
|
71
|
-
hints.push(...this.getInferredAmountHints(document, transaction, parsed));
|
|
48
|
+
hints.push(...this.getInferredAmountHints(document, transaction, parsed, settings));
|
|
72
49
|
}
|
|
73
50
|
// Running balance hints
|
|
74
51
|
if (config.showRunningBalances) {
|
|
75
|
-
hints.push(...this.getRunningBalanceHintsWithState(document, transaction, parsed, runningBalances));
|
|
52
|
+
hints.push(...this.getRunningBalanceHintsWithState(document, transaction, parsed, runningBalances, settings));
|
|
76
53
|
}
|
|
77
54
|
// Cost conversion hints
|
|
78
55
|
if (config.showCostConversions) {
|
|
79
|
-
hints.push(...this.getCostConversionHints(document, transaction, parsed));
|
|
56
|
+
hints.push(...this.getCostConversionHints(document, transaction, parsed, settings));
|
|
80
57
|
}
|
|
81
58
|
}
|
|
82
59
|
return hints;
|
|
@@ -84,7 +61,7 @@ class InlayHintsProvider {
|
|
|
84
61
|
/**
|
|
85
62
|
* Get hints for inferred amounts (postings without explicit amounts)
|
|
86
63
|
*/
|
|
87
|
-
getInferredAmountHints(document, transaction, parsed) {
|
|
64
|
+
getInferredAmountHints(document, transaction, parsed, settings) {
|
|
88
65
|
const hints = [];
|
|
89
66
|
// Calculate which posting(s) have inferred amounts
|
|
90
67
|
const postingsWithAmounts = transaction.postings.filter(p => p.amount);
|
|
@@ -93,7 +70,59 @@ class InlayHintsProvider {
|
|
|
93
70
|
return hints;
|
|
94
71
|
}
|
|
95
72
|
// Calculate the inferred amount(s)
|
|
96
|
-
|
|
73
|
+
const balances = (0, balanceCalculator_1.calculateTransactionBalance)(transaction);
|
|
74
|
+
// The inferred amount is the negation of the sum
|
|
75
|
+
const inferredAmounts = [];
|
|
76
|
+
for (const [commodity, balance] of balances.entries()) {
|
|
77
|
+
const amount = -balance;
|
|
78
|
+
inferredAmounts.push((0, amountFormatter_1.formatAmount)(amount, commodity, parsed, settings?.formatting));
|
|
79
|
+
}
|
|
80
|
+
// Find posting(s) without amounts and add hints
|
|
81
|
+
const txLine = transaction.line ?? 0;
|
|
82
|
+
let postingIndex = 0;
|
|
83
|
+
for (const posting of transaction.postings) {
|
|
84
|
+
if (!posting.amount) {
|
|
85
|
+
const lineNum = txLine + 1 + postingIndex; // +1 for header, then posting index
|
|
86
|
+
const line = document.getText({
|
|
87
|
+
start: { line: lineNum, character: 0 },
|
|
88
|
+
end: { line: lineNum, character: Number.MAX_SAFE_INTEGER }
|
|
89
|
+
});
|
|
90
|
+
// Find end of account name
|
|
91
|
+
const accountEnd = line.indexOf(posting.account) + posting.account.length;
|
|
92
|
+
const amountText = inferredAmounts.join(', ');
|
|
93
|
+
// Create clickable label part with command to insert the amount
|
|
94
|
+
const labelPart = {
|
|
95
|
+
value: ` ${amountText}`,
|
|
96
|
+
command: {
|
|
97
|
+
title: 'Insert inferred amount',
|
|
98
|
+
command: 'hledger.insertInferredAmount',
|
|
99
|
+
arguments: [
|
|
100
|
+
document.uri,
|
|
101
|
+
lineNum,
|
|
102
|
+
posting.account,
|
|
103
|
+
amountText
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
hints.push({
|
|
108
|
+
position: vscode_languageserver_1.Position.create(lineNum, accountEnd),
|
|
109
|
+
label: [labelPart],
|
|
110
|
+
kind: vscode_languageserver_1.InlayHintKind.Parameter,
|
|
111
|
+
paddingLeft: true,
|
|
112
|
+
tooltip: 'Click to insert this inferred amount into the document'
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
postingIndex++;
|
|
116
|
+
}
|
|
117
|
+
return hints;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Calculate inferred amounts for a transaction
|
|
121
|
+
* Returns a map of posting index to inferred amounts (commodity -> quantity)
|
|
122
|
+
*/
|
|
123
|
+
calculateInferredAmounts(transaction) {
|
|
124
|
+
const result = new Map();
|
|
125
|
+
// Calculate balance per commodity from explicit amounts
|
|
97
126
|
const balances = new Map();
|
|
98
127
|
for (const posting of transaction.postings) {
|
|
99
128
|
if (posting.amount) {
|
|
@@ -118,33 +147,17 @@ class InlayHintsProvider {
|
|
|
118
147
|
}
|
|
119
148
|
}
|
|
120
149
|
// The inferred amount is the negation of the sum
|
|
121
|
-
const inferredAmounts =
|
|
150
|
+
const inferredAmounts = new Map();
|
|
122
151
|
for (const [commodity, balance] of balances.entries()) {
|
|
123
|
-
|
|
124
|
-
inferredAmounts.push(this.formatAmount(amount, commodity, parsed));
|
|
152
|
+
inferredAmounts.set(commodity, -balance);
|
|
125
153
|
}
|
|
126
|
-
//
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
if (!posting.amount) {
|
|
131
|
-
const lineNum = txLine + 1 + postingIndex; // +1 for header, then posting index
|
|
132
|
-
const line = document.getText({
|
|
133
|
-
start: { line: lineNum, character: 0 },
|
|
134
|
-
end: { line: lineNum, character: Number.MAX_SAFE_INTEGER }
|
|
135
|
-
});
|
|
136
|
-
// Find end of account name
|
|
137
|
-
const accountEnd = line.indexOf(posting.account) + posting.account.length;
|
|
138
|
-
hints.push({
|
|
139
|
-
position: vscode_languageserver_1.Position.create(lineNum, accountEnd),
|
|
140
|
-
label: ` ${inferredAmounts.join(', ')}`,
|
|
141
|
-
kind: vscode_languageserver_1.InlayHintKind.Parameter,
|
|
142
|
-
paddingLeft: true
|
|
143
|
-
});
|
|
154
|
+
// Assign inferred amounts to postings without explicit amounts
|
|
155
|
+
for (let i = 0; i < transaction.postings.length; i++) {
|
|
156
|
+
if (!transaction.postings[i].amount) {
|
|
157
|
+
result.set(i, new Map(inferredAmounts));
|
|
144
158
|
}
|
|
145
|
-
postingIndex++;
|
|
146
159
|
}
|
|
147
|
-
return
|
|
160
|
+
return result;
|
|
148
161
|
}
|
|
149
162
|
/**
|
|
150
163
|
* Calculate running balances for all transactions
|
|
@@ -154,25 +167,55 @@ class InlayHintsProvider {
|
|
|
154
167
|
const result = new Map();
|
|
155
168
|
// Track global account balances across all transactions
|
|
156
169
|
const accountBalances = new Map();
|
|
157
|
-
|
|
158
|
-
|
|
170
|
+
// Sort transactions by date to calculate balances in chronological order
|
|
171
|
+
// This is important when transactions come from multiple files via includes
|
|
172
|
+
const sortedTransactions = [...parsed.transactions].sort((a, b) => {
|
|
173
|
+
return a.date.localeCompare(b.date);
|
|
174
|
+
});
|
|
175
|
+
// Create a map from sorted index to original index
|
|
176
|
+
const sortedToOriginalIndex = new Map();
|
|
177
|
+
sortedTransactions.forEach((tx, sortedIdx) => {
|
|
178
|
+
const originalIdx = parsed.transactions.indexOf(tx);
|
|
179
|
+
sortedToOriginalIndex.set(sortedIdx, originalIdx);
|
|
180
|
+
});
|
|
181
|
+
for (let sortedIdx = 0; sortedIdx < sortedTransactions.length; sortedIdx++) {
|
|
182
|
+
const transaction = sortedTransactions[sortedIdx];
|
|
183
|
+
const txIndex = sortedToOriginalIndex.get(sortedIdx);
|
|
159
184
|
const postingBalances = new Map();
|
|
185
|
+
// Calculate inferred amounts for this transaction
|
|
186
|
+
const inferredAmounts = this.calculateInferredAmounts(transaction);
|
|
160
187
|
for (let postingIndex = 0; postingIndex < transaction.postings.length; postingIndex++) {
|
|
161
188
|
const posting = transaction.postings[postingIndex];
|
|
189
|
+
const account = posting.account;
|
|
190
|
+
// Get amount (either explicit or inferred)
|
|
191
|
+
let amountMap;
|
|
162
192
|
if (posting.amount) {
|
|
163
|
-
|
|
193
|
+
// Explicit amount
|
|
164
194
|
const commodity = posting.amount.commodity || '';
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
195
|
+
amountMap = new Map([[commodity, posting.amount.quantity]]);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
// Inferred amount
|
|
199
|
+
amountMap = inferredAmounts.get(postingIndex);
|
|
200
|
+
}
|
|
201
|
+
if (amountMap) {
|
|
202
|
+
// Update balance for each commodity in this posting
|
|
203
|
+
for (const [commodity, quantity] of amountMap.entries()) {
|
|
204
|
+
// Get or create account balance map
|
|
205
|
+
if (!accountBalances.has(account)) {
|
|
206
|
+
accountBalances.set(account, new Map());
|
|
207
|
+
}
|
|
208
|
+
const commodityBalances = accountBalances.get(account);
|
|
209
|
+
// Update balance
|
|
210
|
+
const currentBalance = commodityBalances.get(commodity) || 0;
|
|
211
|
+
const newBalance = currentBalance + quantity;
|
|
212
|
+
commodityBalances.set(commodity, newBalance);
|
|
213
|
+
// Store this posting's resulting balance
|
|
214
|
+
if (!postingBalances.has(postingIndex)) {
|
|
215
|
+
postingBalances.set(postingIndex, new Map());
|
|
216
|
+
}
|
|
217
|
+
postingBalances.get(postingIndex).set(commodity, newBalance);
|
|
168
218
|
}
|
|
169
|
-
const commodityBalances = accountBalances.get(account);
|
|
170
|
-
// Update balance
|
|
171
|
-
const currentBalance = commodityBalances.get(commodity) || 0;
|
|
172
|
-
const newBalance = currentBalance + posting.amount.quantity;
|
|
173
|
-
commodityBalances.set(commodity, newBalance);
|
|
174
|
-
// Store this posting's resulting balance
|
|
175
|
-
postingBalances.set(postingIndex, new Map([[commodity, newBalance]]));
|
|
176
219
|
}
|
|
177
220
|
}
|
|
178
221
|
result.set(txIndex, postingBalances);
|
|
@@ -182,7 +225,7 @@ class InlayHintsProvider {
|
|
|
182
225
|
/**
|
|
183
226
|
* Get hints for running balances after each posting (with pre-calculated state)
|
|
184
227
|
*/
|
|
185
|
-
getRunningBalanceHintsWithState(document, transaction, parsed, runningBalances) {
|
|
228
|
+
getRunningBalanceHintsWithState(document, transaction, parsed, runningBalances, settings) {
|
|
186
229
|
const hints = [];
|
|
187
230
|
// Find transaction index
|
|
188
231
|
const txIndex = parsed.transactions.indexOf(transaction);
|
|
@@ -197,7 +240,9 @@ class InlayHintsProvider {
|
|
|
197
240
|
for (let postingIndex = 0; postingIndex < transaction.postings.length; postingIndex++) {
|
|
198
241
|
const posting = transaction.postings[postingIndex];
|
|
199
242
|
const balanceMap = postingBalances.get(postingIndex);
|
|
200
|
-
if
|
|
243
|
+
// Don't show running balance hint if posting already has a balance assertion
|
|
244
|
+
// Show hint for both explicit and inferred amounts
|
|
245
|
+
if (balanceMap && !posting.assertion) {
|
|
201
246
|
const lineNum = txLine + 1 + postingIndex;
|
|
202
247
|
const line = document.getText({
|
|
203
248
|
start: { line: lineNum, character: 0 },
|
|
@@ -212,14 +257,31 @@ class InlayHintsProvider {
|
|
|
212
257
|
// Format all commodity balances for this posting
|
|
213
258
|
const balanceHints = [];
|
|
214
259
|
for (const [commodity, balance] of balanceMap.entries()) {
|
|
215
|
-
const formattedBalance =
|
|
260
|
+
const formattedBalance = (0, amountFormatter_1.formatAmount)(balance, commodity, parsed, settings?.formatting);
|
|
216
261
|
balanceHints.push(formattedBalance);
|
|
217
262
|
}
|
|
263
|
+
const balanceText = balanceHints.join(', ');
|
|
264
|
+
// Create clickable label part with command to insert balance assertion
|
|
265
|
+
// Format as actual balance assertion syntax: " = $amount"
|
|
266
|
+
const labelPart = {
|
|
267
|
+
value: ` = ${balanceText} `,
|
|
268
|
+
command: {
|
|
269
|
+
title: 'Insert balance assertion',
|
|
270
|
+
command: 'hledger.insertBalanceAssertion',
|
|
271
|
+
arguments: [
|
|
272
|
+
document.uri,
|
|
273
|
+
lineNum,
|
|
274
|
+
posting.account,
|
|
275
|
+
balanceHints
|
|
276
|
+
]
|
|
277
|
+
}
|
|
278
|
+
};
|
|
218
279
|
hints.push({
|
|
219
280
|
position: vscode_languageserver_1.Position.create(lineNum, endPos),
|
|
220
|
-
label:
|
|
281
|
+
label: [labelPart],
|
|
221
282
|
kind: vscode_languageserver_1.InlayHintKind.Type,
|
|
222
|
-
paddingLeft: true
|
|
283
|
+
paddingLeft: true,
|
|
284
|
+
tooltip: `Click to insert balance assertion for ${posting.account}`
|
|
223
285
|
});
|
|
224
286
|
}
|
|
225
287
|
}
|
|
@@ -228,19 +290,15 @@ class InlayHintsProvider {
|
|
|
228
290
|
/**
|
|
229
291
|
* Get hints for cost conversions
|
|
230
292
|
*/
|
|
231
|
-
getCostConversionHints(document, transaction, parsed) {
|
|
293
|
+
getCostConversionHints(document, transaction, parsed, settings) {
|
|
232
294
|
const hints = [];
|
|
233
295
|
const txLine = transaction.line ?? 0;
|
|
234
296
|
let postingIndex = 0;
|
|
235
297
|
for (const posting of transaction.postings) {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
totalCost = posting.cost.amount.quantity;
|
|
243
|
-
}
|
|
298
|
+
// Only show cost conversion hints for unit cost (@), not total cost (@@)
|
|
299
|
+
// since total cost is already explicit
|
|
300
|
+
if (posting.amount && posting.cost && posting.cost.type === 'unit') {
|
|
301
|
+
const totalCost = posting.amount.quantity * posting.cost.amount.quantity;
|
|
244
302
|
const lineNum = txLine + 1 + postingIndex;
|
|
245
303
|
const line = document.getText({
|
|
246
304
|
start: { line: lineNum, character: 0 },
|
|
@@ -250,12 +308,27 @@ class InlayHintsProvider {
|
|
|
250
308
|
const costMatch = line.match(/@@?[^;#]*/);
|
|
251
309
|
if (costMatch) {
|
|
252
310
|
const costEnd = line.indexOf(costMatch[0]) + costMatch[0].length;
|
|
253
|
-
const formattedCost =
|
|
311
|
+
const formattedCost = (0, amountFormatter_1.formatAmount)(totalCost, posting.cost.amount.commodity || '', parsed);
|
|
312
|
+
// For unit cost (@), show total cost equivalent (@@ notation)
|
|
313
|
+
const labelPart = {
|
|
314
|
+
value: ` @@${formattedCost} `,
|
|
315
|
+
command: {
|
|
316
|
+
title: 'Convert to total cost',
|
|
317
|
+
command: 'hledger.convertToTotalCost',
|
|
318
|
+
arguments: [
|
|
319
|
+
document.uri,
|
|
320
|
+
lineNum,
|
|
321
|
+
posting.account,
|
|
322
|
+
formattedCost
|
|
323
|
+
]
|
|
324
|
+
}
|
|
325
|
+
};
|
|
254
326
|
hints.push({
|
|
255
327
|
position: vscode_languageserver_1.Position.create(lineNum, costEnd),
|
|
256
|
-
label:
|
|
328
|
+
label: [labelPart],
|
|
257
329
|
kind: vscode_languageserver_1.InlayHintKind.Type,
|
|
258
|
-
paddingLeft: true
|
|
330
|
+
paddingLeft: true,
|
|
331
|
+
tooltip: 'Click to convert unit cost (@) to total cost (@@)'
|
|
259
332
|
});
|
|
260
333
|
}
|
|
261
334
|
}
|