hledger-lsp 0.2.0 → 0.2.2

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.
Files changed (38) hide show
  1. package/out/features/codeActions.d.ts.map +1 -1
  2. package/out/features/codeActions.js +5 -2
  3. package/out/features/codeActions.js.map +1 -1
  4. package/out/features/codeLens.d.ts.map +1 -1
  5. package/out/features/codeLens.js +4 -1
  6. package/out/features/codeLens.js.map +1 -1
  7. package/out/features/foldingRanges.d.ts.map +1 -1
  8. package/out/features/foldingRanges.js +4 -1
  9. package/out/features/foldingRanges.js.map +1 -1
  10. package/out/features/formatter.d.ts +7 -10
  11. package/out/features/formatter.d.ts.map +1 -1
  12. package/out/features/formatter.js +124 -265
  13. package/out/features/formatter.js.map +1 -1
  14. package/out/features/inlayHints.d.ts +11 -10
  15. package/out/features/inlayHints.d.ts.map +1 -1
  16. package/out/features/inlayHints.js +131 -126
  17. package/out/features/inlayHints.js.map +1 -1
  18. package/out/features/semanticTokens.js +6 -6
  19. package/out/features/semanticTokens.js.map +1 -1
  20. package/out/features/symbols.d.ts.map +1 -1
  21. package/out/features/symbols.js +5 -2
  22. package/out/features/symbols.js.map +1 -1
  23. package/out/features/validator.d.ts.map +1 -1
  24. package/out/features/validator.js +32 -19
  25. package/out/features/validator.js.map +1 -1
  26. package/out/parser/ast.js +6 -6
  27. package/out/parser/ast.js.map +1 -1
  28. package/out/server.js +108 -39
  29. package/out/server.js.map +1 -1
  30. package/out/utils/amountFormatter.d.ts +31 -11
  31. package/out/utils/amountFormatter.d.ts.map +1 -1
  32. package/out/utils/amountFormatter.js +147 -70
  33. package/out/utils/amountFormatter.js.map +1 -1
  34. package/out/utils/runningBalanceCalculator.d.ts +44 -0
  35. package/out/utils/runningBalanceCalculator.d.ts.map +1 -0
  36. package/out/utils/runningBalanceCalculator.js +163 -0
  37. package/out/utils/runningBalanceCalculator.js.map +1 -0
  38. package/package.json +1 -1
@@ -4,8 +4,10 @@
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.formattingProvider = exports.FormattingProvider = void 0;
7
+ const vscode_uri_1 = require("vscode-uri");
7
8
  const ast_1 = require("../parser/ast");
8
9
  const index_1 = require("../utils/index");
10
+ const amountFormatter_1 = require("../utils/amountFormatter");
9
11
  const DEFAULT_OPTIONS = {
10
12
  indentation: 4,
11
13
  maxAccountWidth: 42,
@@ -20,8 +22,10 @@ class FormattingProvider {
20
22
  /**
21
23
  * Format an entire document
22
24
  */
23
- formatDocument(document, parsed, _lspOptions, userOptions = {}) {
25
+ formatDocument(document, parsed, _lspOptions, userOptions = {}, hledgerSettings) {
24
26
  const options = { ...DEFAULT_OPTIONS, ...userOptions };
27
+ // Normalize document URI to ensure proper encoding
28
+ const documentUri = vscode_uri_1.URI.parse(document.uri).toString();
25
29
  const text = document.getText();
26
30
  const lines = text.split('\n');
27
31
  // Format line by line, tracking transactions
@@ -35,7 +39,7 @@ class FormattingProvider {
35
39
  formattedLines.push(this.formatTransactionHeader(trimmed));
36
40
  // Find the corresponding transaction in the parsed document
37
41
  // to get inferred costs and other parsing results
38
- const transaction = parsed.transactions.find(t => (t.line === i && t.sourceUri?.toString() === document.uri));
42
+ const transaction = parsed.transactions.find(t => (t.line === i && t.sourceUri?.toString() === documentUri));
39
43
  // Collect and format all postings in this transaction
40
44
  const transactionLines = [];
41
45
  i++;
@@ -50,7 +54,7 @@ class FormattingProvider {
50
54
  i++;
51
55
  }
52
56
  // Format all postings in the transaction together for alignment
53
- formattedLines.push(...this.formatTransactionLines(transactionLines, transaction, parsed, options));
57
+ formattedLines.push(...this.formatTransactionLines(transactionLines, transaction, parsed, options, hledgerSettings));
54
58
  // Don't increment i here as we've already moved past the transaction
55
59
  continue;
56
60
  }
@@ -78,217 +82,97 @@ class FormattingProvider {
78
82
  newText: formattedText
79
83
  }];
80
84
  }
81
- formatTransactionLines(lines, transaction, parsed, options) {
85
+ formatTransactionLines(lines, transaction, parsed, options, hledgerSettings) {
82
86
  let formattedLines = [];
87
+ let postingHasInlayHintsArray = [];
83
88
  if (!transaction) {
84
89
  // No transaction info, just trim lines
85
90
  formattedLines = lines.map(line => line.trimEnd());
86
91
  return formattedLines;
87
92
  }
88
- let indentColumnWidth = 0;
89
- let accountColumnWidth = 0;
90
- let commodityBeforeColumnWidth = 0;
91
- let spaceBetweenCommodityBeforeAndAmount = 0;
92
- let negativeSignColumnWidth = 0;
93
- let amountIntegerColumnWidth = 0;
94
- let amountDecimalMarkColumnWidth = 0;
95
- let amountDecimalColumnWidth = 0;
96
- let spaceBetweenAmountAndCommodityAfterColumnWidth = 0;
97
- let commodityAfterColumnWidth = 0;
98
- let costColumnWidth = 0;
99
- let costCommodityBeforeColumnWidth = 0;
100
- let spaceBetweenCostCommodityBeforeAndAmount = 0;
101
- let costNegativeSignColumnWidth = 0;
102
- let costAmountIntegerColumnWidth = 0;
103
- let costAmountDecimalMarkColumnWidth = 0;
104
- let costAmountDecimalColumnWidth = 0;
105
- let spaceBetweenCostAmountAndCommodityAfterColumnWidth = 0;
106
- let costCommodityAfterColumnWidth = 0;
107
- let assertionColumnWidth = 0;
108
- let assertionCommodityBeforeColumnWidth = 0;
109
- let spaceBetweenAssertionCommodityBeforeAndAmount = 0;
110
- let assertionNegativeSignColumnWidth = 0;
111
- let assertionAmountIntegerColumnWidth = 0;
112
- let assertionAmountDecimalMarkColumnWidth = 0;
113
- let assertionAmountDecimalColumnWidth = 0;
114
- let spaceBetweenAssertionAmountAndCommodityAfterColumnWidth = 0;
115
- let assertionCommodityAfterColumnWidth = 0;
116
- // First pass: determine column widths and cache layouts
117
- const postingLayouts = [];
118
- for (let posting of transaction.postings) {
119
- let postingLayout = {};
120
- indentColumnWidth = Math.max(indentColumnWidth, options.indentation);
121
- accountColumnWidth = Math.max(accountColumnWidth, posting.account.length);
122
- // Skip layouting inferred amounts since they don't exist in the source
123
- if (posting.amount && !posting.amount.inferred) {
124
- const layout = this.layoutAmount(posting.amount, parsed, options);
125
- postingLayout.amountLayout = layout;
126
- commodityBeforeColumnWidth = Math.max(commodityBeforeColumnWidth, layout.commodityBefore.length);
127
- negativeSignColumnWidth = Math.max(negativeSignColumnWidth, layout.isNegative ? 1 : 0);
128
- spaceBetweenCommodityBeforeAndAmount = Math.max(spaceBetweenCommodityBeforeAndAmount, (layout.spaceBetweenCommodityAndAmount && layout.commodityBefore.length) ? 1 : 0);
129
- amountIntegerColumnWidth = Math.max(amountIntegerColumnWidth, layout.amountIntegerString.length);
130
- amountDecimalMarkColumnWidth = Math.max(amountDecimalMarkColumnWidth, layout.amountDecimalString ? 1 : 0);
131
- amountDecimalColumnWidth = Math.max(amountDecimalColumnWidth, layout.amountDecimalString.length);
132
- spaceBetweenAmountAndCommodityAfterColumnWidth = Math.max(spaceBetweenAmountAndCommodityAfterColumnWidth, (layout.spaceBetweenCommodityAndAmount && layout.commodityAfter.length) ? 1 : 0);
133
- commodityAfterColumnWidth = Math.max(commodityAfterColumnWidth, layout.commodityAfter.length);
134
- }
135
- // Skip layouting inferred costs since they don't exist in the source
136
- if (posting.cost && !posting.cost.inferred) {
137
- const layout = this.layoutAmount(posting.cost.amount, parsed, options);
138
- postingLayout.costLayout = layout;
139
- costColumnWidth = Math.max(costColumnWidth, posting.cost.type === 'unit' ? 3 : 4);
140
- costCommodityBeforeColumnWidth = Math.max(costCommodityBeforeColumnWidth, layout.commodityBefore.length);
141
- costNegativeSignColumnWidth = Math.max(costNegativeSignColumnWidth, layout.isNegative ? 1 : 0);
142
- spaceBetweenCostCommodityBeforeAndAmount = Math.max(spaceBetweenCostCommodityBeforeAndAmount, (layout.spaceBetweenCommodityAndAmount && layout.commodityBefore.length) ? 1 : 0);
143
- costAmountIntegerColumnWidth = Math.max(costAmountIntegerColumnWidth, layout.amountIntegerString.length);
144
- costAmountDecimalMarkColumnWidth = Math.max(costAmountDecimalMarkColumnWidth, layout.amountDecimalString ? 1 : 0);
145
- costAmountDecimalColumnWidth = Math.max(costAmountDecimalColumnWidth, layout.amountDecimalString.length);
146
- spaceBetweenCostAmountAndCommodityAfterColumnWidth = Math.max(spaceBetweenCostAmountAndCommodityAfterColumnWidth, (layout.spaceBetweenCommodityAndAmount && layout.commodityAfter.length) ? 1 : 0);
147
- costCommodityAfterColumnWidth = Math.max(costCommodityAfterColumnWidth, layout.commodityAfter.length);
148
- }
149
- if (posting.assertion) {
150
- const layout = this.layoutAmount(posting.assertion, parsed, options);
151
- postingLayout.assertionLayout = layout;
152
- assertionColumnWidth = Math.max(assertionColumnWidth, 3); // for the assertion operator with spaces
153
- assertionCommodityBeforeColumnWidth = Math.max(assertionCommodityBeforeColumnWidth, layout.commodityBefore.length);
154
- assertionNegativeSignColumnWidth = Math.max(assertionNegativeSignColumnWidth, layout.isNegative ? 1 : 0);
155
- spaceBetweenAssertionCommodityBeforeAndAmount = Math.max(spaceBetweenAssertionCommodityBeforeAndAmount, layout.isNegative ? 1 : 0);
156
- assertionAmountIntegerColumnWidth = Math.max(assertionAmountIntegerColumnWidth, layout.amountIntegerString.length);
157
- assertionAmountDecimalMarkColumnWidth = Math.max(assertionAmountDecimalMarkColumnWidth, layout.amountDecimalString ? 1 : 0);
158
- assertionAmountDecimalColumnWidth = Math.max(assertionAmountDecimalColumnWidth, layout.amountDecimalString.length);
159
- spaceBetweenAssertionAmountAndCommodityAfterColumnWidth = Math.max(spaceBetweenAssertionAmountAndCommodityAfterColumnWidth, (layout.spaceBetweenCommodityAndAmount && layout.commodityAfter.length) ? 1 : 0);
160
- assertionCommodityAfterColumnWidth = Math.max(assertionCommodityAfterColumnWidth, layout.commodityAfter.length);
161
- }
162
- postingLayouts.push(postingLayout);
163
- }
93
+ // First pass: Calculate all column widths
94
+ const widths = this.calculateTransactionWidths(transaction, parsed, options);
164
95
  // Second pass: format each posting line
165
96
  const formattedPostingLines = [];
166
- for (let idx = 0; idx < transaction.postings.length; idx++) {
167
- const posting = transaction.postings[idx];
168
- const postingLayout = postingLayouts[idx];
97
+ for (let posting of transaction.postings) {
169
98
  let line = ' '.repeat(options.indentation);
170
- line += posting.account.padEnd(accountColumnWidth, ' ');
99
+ line += posting.account.padEnd(widths.account, ' ');
171
100
  line += ' '.repeat(options.minSpacing);
172
- // Skip formatting inferred amounts since they don't exist in the source
101
+ const postingHasInlayHints = (hledgerSettings?.inlayHints?.showInferredAmounts && posting.amount?.inferred) ||
102
+ (hledgerSettings?.inlayHints?.showCostConversions && posting.cost?.inferred) || (hledgerSettings?.inlayHints?.showRunningBalances) || false;
103
+ // 1. Amount
173
104
  if (posting.amount && !posting.amount.inferred) {
174
- const lengthAtPaddingLocation = line.length;
175
- const layout = postingLayout.amountLayout;
176
- // Handle sign position based on layout.negativeSignBefore
177
- if (layout.negativeSignBefore) {
178
- // Format as: -$100 (sign before commodity)
179
- line += layout.isNegative ? '-'.padStart(negativeSignColumnWidth, ' ') : ' '.repeat(negativeSignColumnWidth);
180
- line += layout.commodityBefore.padStart(commodityBeforeColumnWidth, ' ');
181
- }
182
- else {
183
- // Format as: $-100 (commodity before sign, default)
184
- line += layout.commodityBefore.padStart(commodityBeforeColumnWidth, ' ');
185
- line += layout.isNegative ? '-'.padStart(negativeSignColumnWidth, ' ') : ' '.repeat(negativeSignColumnWidth);
186
- }
187
- line += ' '.repeat(spaceBetweenCommodityBeforeAndAmount);
188
- line += layout.amountIntegerString.padStart(amountIntegerColumnWidth, ' ');
189
- const lengthAtDecimalLocation = line.length;
190
- const targetDecimalColumn = options.decimalAlignColumn;
191
- const linePrePadding = line.substring(0, lengthAtPaddingLocation);
192
- const linePostPadding = line.substring(lengthAtPaddingLocation);
193
- const currentDecimalColumn = lengthAtDecimalLocation;
194
- const neededPadding = targetDecimalColumn - currentDecimalColumn;
195
- line = linePrePadding + ' '.repeat(Math.max(0, neededPadding)) + linePostPadding;
196
- if (layout.demicalMark) {
197
- line += layout.demicalMark.padEnd(amountDecimalMarkColumnWidth, ' ');
198
- line += layout.amountDecimalString.padEnd(amountDecimalColumnWidth, ' ');
199
- }
200
- else {
201
- line += ' '.repeat(amountDecimalMarkColumnWidth + amountDecimalColumnWidth);
202
- }
203
- line += ' '.repeat(spaceBetweenAmountAndCommodityAfterColumnWidth);
204
- line += layout.commodityAfter.padEnd(commodityAfterColumnWidth, ' ');
105
+ const layout = (0, amountFormatter_1.getAmountLayout)(posting.amount, parsed, options);
106
+ const amountBlock = (0, amountFormatter_1.renderAmountLayout)(layout, widths.amount);
107
+ // Calculate decimal alignment padding
108
+ const preDecimalWidth = widths.amount.commodityBefore +
109
+ widths.amount.spaceBetweenCommodityBeforeAndAmount +
110
+ widths.amount.negativeSign +
111
+ widths.amount.integer;
112
+ const currentLen = line.length;
113
+ const targetLen = options.decimalAlignColumn;
114
+ const padding = Math.max(0, targetLen - currentLen - preDecimalWidth);
115
+ line += ' '.repeat(padding) + amountBlock;
205
116
  }
206
117
  else {
207
- const lengthAtPaddingLocation = line.length;
208
- const neededPadding = options.decimalAlignColumn - lengthAtPaddingLocation;
209
- line += ' '.repeat(Math.max(0, neededPadding));
210
- line += ' '.repeat(amountDecimalMarkColumnWidth +
211
- amountDecimalColumnWidth +
212
- spaceBetweenAmountAndCommodityAfterColumnWidth +
213
- commodityAfterColumnWidth); // space for missing amount
118
+ // Space for missing amount
119
+ const preDecimalWidth = widths.amount.commodityBefore +
120
+ widths.amount.spaceBetweenCommodityBeforeAndAmount +
121
+ widths.amount.negativeSign +
122
+ widths.amount.integer;
123
+ const postDecimalWidth = widths.amount.decimalMark +
124
+ widths.amount.decimal +
125
+ widths.amount.spaceBetweenAmountAndCommodityAfter +
126
+ widths.amount.commodityAfter;
127
+ const currentLen = line.length;
128
+ const targetLen = options.decimalAlignColumn;
129
+ const padding = Math.max(0, targetLen - currentLen - preDecimalWidth);
130
+ line += ' '.repeat(padding + preDecimalWidth + postDecimalWidth);
214
131
  }
215
- // Skip formatting inferred costs since they don't exist in the source
132
+ // 2. Cost
216
133
  if (posting.cost && !posting.cost.inferred) {
217
- const layout = postingLayout.costLayout;
218
- line += posting.cost.type === 'unit' ? ' @'.padEnd(costColumnWidth, ' ') : ' @@'.padEnd(costColumnWidth, ' ');
219
- // Handle sign position for cost
220
- if (layout.negativeSignBefore) {
221
- line += layout.isNegative ? '-'.padStart(costNegativeSignColumnWidth, ' ') : ' '.repeat(costNegativeSignColumnWidth);
222
- line += layout.commodityBefore.padStart(costCommodityBeforeColumnWidth, ' ');
223
- }
224
- else {
225
- line += layout.commodityBefore.padStart(costCommodityBeforeColumnWidth, ' ');
226
- line += layout.isNegative ? '-'.padStart(costNegativeSignColumnWidth, ' ') : ' '.repeat(costNegativeSignColumnWidth);
227
- }
228
- line += ' '.repeat(spaceBetweenCostCommodityBeforeAndAmount);
229
- line += layout.amountIntegerString.padStart(costAmountIntegerColumnWidth, ' ');
230
- if (layout.demicalMark) {
231
- line += layout.demicalMark.padEnd(costAmountDecimalMarkColumnWidth, ' ');
232
- line += layout.amountDecimalString.padEnd(costAmountDecimalColumnWidth, ' ');
233
- }
234
- else {
235
- line += ' '.repeat(costAmountDecimalColumnWidth + costAmountDecimalMarkColumnWidth);
236
- }
237
- line += ' '.repeat(spaceBetweenCostAmountAndCommodityAfterColumnWidth);
238
- line += layout.commodityAfter.padEnd(costCommodityAfterColumnWidth, ' ');
134
+ line += (posting.cost.type === 'unit' ? ' @ ' : ' @@ ').padEnd(widths.cost.marker, ' ');
135
+ const layout = (0, amountFormatter_1.getAmountLayout)(posting.cost.amount, parsed, options);
136
+ line += (0, amountFormatter_1.renderAmountLayout)(layout, widths.cost);
239
137
  }
240
138
  else {
241
- line += ' '.repeat(costColumnWidth +
242
- costCommodityBeforeColumnWidth +
243
- spaceBetweenCostCommodityBeforeAndAmount +
244
- costNegativeSignColumnWidth +
245
- costAmountIntegerColumnWidth +
246
- costAmountDecimalMarkColumnWidth +
247
- costAmountDecimalColumnWidth +
248
- spaceBetweenCostAmountAndCommodityAfterColumnWidth +
249
- costCommodityAfterColumnWidth); // space for missing cost
139
+ const totalWidth = widths.cost.marker +
140
+ widths.cost.commodityBefore +
141
+ widths.cost.spaceBetweenCommodityBeforeAndAmount +
142
+ widths.cost.negativeSign +
143
+ widths.cost.integer +
144
+ widths.cost.decimalMark +
145
+ widths.cost.decimal +
146
+ widths.cost.spaceBetweenAmountAndCommodityAfter +
147
+ widths.cost.commodityAfter;
148
+ line += ' '.repeat(totalWidth);
250
149
  }
150
+ // 3. Assertion
251
151
  if (posting.assertion) {
252
- const layout = postingLayout.assertionLayout;
253
- line += ' ='.padEnd(assertionColumnWidth, ' ');
254
- // Handle sign position for assertion
255
- if (layout.negativeSignBefore) {
256
- line += layout.isNegative ? '-'.padStart(assertionNegativeSignColumnWidth, ' ') : ' '.repeat(assertionNegativeSignColumnWidth);
257
- line += layout.commodityBefore.padStart(assertionCommodityBeforeColumnWidth, ' ');
258
- }
259
- else {
260
- line += layout.commodityBefore.padStart(assertionCommodityBeforeColumnWidth, ' ');
261
- line += layout.isNegative ? '-'.padStart(assertionNegativeSignColumnWidth, ' ') : ' '.repeat(assertionNegativeSignColumnWidth);
262
- }
263
- line += ' '.repeat(spaceBetweenAssertionCommodityBeforeAndAmount);
264
- line += layout.amountIntegerString.padStart(assertionAmountIntegerColumnWidth, ' ');
265
- if (layout.demicalMark) {
266
- line += layout.demicalMark.padEnd(assertionAmountDecimalMarkColumnWidth, ' ');
267
- line += layout.amountDecimalString.padEnd(assertionAmountDecimalColumnWidth, ' ');
268
- }
269
- else {
270
- line += ' '.repeat(assertionAmountDecimalColumnWidth + assertionAmountDecimalMarkColumnWidth);
271
- }
272
- line += ' '.repeat(spaceBetweenAssertionAmountAndCommodityAfterColumnWidth);
273
- line += layout.commodityAfter.padEnd(assertionCommodityAfterColumnWidth, ' ');
152
+ line += ' = '.padEnd(widths.assertion.marker, ' ');
153
+ const layout = (0, amountFormatter_1.getAmountLayout)(posting.assertion, parsed, options);
154
+ line += (0, amountFormatter_1.renderAmountLayout)(layout, widths.assertion);
274
155
  }
275
156
  else {
276
- line += ' '.repeat(2 + // space for spaces around assertion indicator
277
- assertionColumnWidth +
278
- assertionCommodityBeforeColumnWidth +
279
- spaceBetweenAssertionCommodityBeforeAndAmount +
280
- assertionNegativeSignColumnWidth +
281
- assertionAmountIntegerColumnWidth +
282
- assertionAmountDecimalColumnWidth +
283
- assertionAmountDecimalMarkColumnWidth +
284
- spaceBetweenAssertionAmountAndCommodityAfterColumnWidth +
285
- assertionCommodityAfterColumnWidth); // space for missing assertion
157
+ const totalWidth = widths.assertion.marker +
158
+ widths.assertion.commodityBefore +
159
+ widths.assertion.spaceBetweenCommodityBeforeAndAmount +
160
+ widths.assertion.negativeSign +
161
+ widths.assertion.integer +
162
+ widths.assertion.decimalMark +
163
+ widths.assertion.decimal +
164
+ widths.assertion.spaceBetweenAmountAndCommodityAfter +
165
+ widths.assertion.commodityAfter;
166
+ line += ' '.repeat(totalWidth);
286
167
  }
287
168
  if (posting.comment) {
288
- line = line.trimEnd();
169
+ if (!postingHasInlayHints) {
170
+ line = line.trimEnd();
171
+ }
289
172
  line += ';' + posting.comment.trim();
290
173
  }
291
174
  formattedPostingLines.push(line);
175
+ postingHasInlayHintsArray.push(postingHasInlayHints);
292
176
  }
293
177
  // Third pass: Reintegrate with comments from original lines
294
178
  let postingIndex = 0;
@@ -298,103 +182,84 @@ class FormattingProvider {
298
182
  formattedLines.push(line.trimEnd());
299
183
  }
300
184
  else {
301
- formattedLines.push(formattedPostingLines[postingIndex].trimEnd());
185
+ if (!postingHasInlayHintsArray[postingIndex]) {
186
+ formattedLines.push(formattedPostingLines[postingIndex].trimEnd());
187
+ }
188
+ else {
189
+ formattedLines.push(formattedPostingLines[postingIndex]);
190
+ }
302
191
  postingIndex++;
303
192
  }
304
193
  }
305
194
  return formattedLines;
306
195
  }
307
- layoutAmount(amount, parsed, options) {
308
- const commodity = this.findCommodity(amount.commodity, parsed);
309
- let format = {};
310
- let declaredPrecision = undefined;
311
- if (commodity && commodity.format) {
312
- format = commodity.format;
313
- declaredPrecision = commodity.format.precision ?? undefined;
314
- }
315
- else if (amount.format) {
316
- format = amount.format;
317
- }
318
- else {
319
- format = {};
320
- }
321
- // Determine the actual precision to use based on the rules:
322
- // 1. Never reduce precision if posting has higher precision than declared
323
- // 2. Add zeros to match declared precision when actual < declared
324
- // 3. Don't change formatting when commodity is not declared
325
- const actualPrecision = amount.format?.precision ?? undefined;
326
- let targetPrecision = undefined;
327
- if (declaredPrecision !== undefined) {
328
- // Commodity is declared - use max of actual and declared precision
329
- if (actualPrecision !== undefined) {
330
- targetPrecision = Math.max(actualPrecision, declaredPrecision);
196
+ calculateTransactionWidths(transaction, parsed, options) {
197
+ const widths = {
198
+ indent: options.indentation,
199
+ account: 0,
200
+ amount: this.emptyAmountWidths(),
201
+ cost: { ...this.emptyAmountWidths(), marker: 0 },
202
+ assertion: { ...this.emptyAmountWidths(), marker: 0 }
203
+ };
204
+ for (const posting of transaction.postings) {
205
+ widths.account = Math.max(widths.account, posting.account.length);
206
+ if (posting.amount && !posting.amount.inferred) {
207
+ const layout = (0, amountFormatter_1.getAmountLayout)(posting.amount, parsed, options);
208
+ this.updateAmountWidths(widths.amount, layout);
331
209
  }
332
- else {
333
- targetPrecision = declaredPrecision;
210
+ if (posting.cost && !posting.cost.inferred) {
211
+ const layout = (0, amountFormatter_1.getAmountLayout)(posting.cost.amount, parsed, options);
212
+ this.updateAmountWidths(widths.cost, layout);
213
+ widths.cost.marker = Math.max(widths.cost.marker, posting.cost.type === 'unit' ? 3 : 4);
214
+ }
215
+ if (posting.assertion) {
216
+ const layout = (0, amountFormatter_1.getAmountLayout)(posting.assertion, parsed, options);
217
+ this.updateAmountWidths(widths.assertion, layout);
218
+ widths.assertion.marker = Math.max(widths.assertion.marker, 3);
334
219
  }
335
220
  }
336
- else {
337
- // Commodity is not declared - preserve original precision
338
- targetPrecision = actualPrecision;
339
- }
340
- // Determine if negative sign should be before commodity symbol
341
- // This only applies when commodity is on left
342
- const symbolOnLeft = format.symbolOnLeft || false;
343
- const negativeSignBefore = symbolOnLeft && options.signPosition === 'before-symbol';
221
+ return widths;
222
+ }
223
+ emptyAmountWidths() {
344
224
  return {
345
- commodityBefore: format.symbolOnLeft ? format.symbol || '' : '',
346
- isNegative: amount.quantity < 0,
347
- negativeSignBefore,
348
- amountIntegerString: this.formatIntegerAmount(amount, format),
349
- amountDecimalString: this.formatDecimalAmount(amount, format, targetPrecision),
350
- demicalMark: targetPrecision && targetPrecision > 0 ? (format.decimalMark || '.') : '',
351
- spaceBetweenCommodityAndAmount: format.spaceBetween || false,
352
- commodityAfter: !format.symbolOnLeft ? format.symbol || '' : ''
225
+ commodityBefore: 0,
226
+ spaceBetweenCommodityBeforeAndAmount: 0,
227
+ negativeSign: 0,
228
+ integer: 0,
229
+ decimalMark: 0,
230
+ decimal: 0,
231
+ spaceBetweenAmountAndCommodityAfter: 0,
232
+ commodityAfter: 0
353
233
  };
354
234
  }
355
- formatIntegerAmount(amount, format) {
356
- const integerPart = Math.floor(Math.abs(amount.quantity)).toString();
357
- // Format integer part with grouping if specified
358
- let integerString = '';
359
- if (format.thousandsSeparator) {
360
- const regex = /\B(?=(\d{3})+(?!\d))/g;
361
- integerString = integerPart.replace(regex, format.thousandsSeparator);
362
- }
363
- else {
364
- integerString = integerPart;
365
- }
366
- return integerString;
367
- }
368
- formatDecimalAmount(amount, format, targetPrecision) {
369
- const decimalPart = Math.abs(amount.quantity) % 1;
370
- // Format decimal part based on target precision
371
- let decimalString = '';
372
- if (targetPrecision !== undefined && targetPrecision > 0) {
373
- decimalString = decimalPart.toFixed(targetPrecision).substring(2); // Skip "0."
374
- }
375
- else if (decimalPart > 0) {
376
- decimalString = decimalPart.toString().substring(2); // Skip "0."
377
- }
378
- return decimalString;
235
+ updateAmountWidths(widths, layout) {
236
+ widths.commodityBefore = Math.max(widths.commodityBefore, layout.commodityBefore.length);
237
+ widths.spaceBetweenCommodityBeforeAndAmount = Math.max(widths.spaceBetweenCommodityBeforeAndAmount, (layout.spaceBetweenCommodityAndAmount && layout.commodityBefore.length) ? 1 : 0);
238
+ widths.negativeSign = Math.max(widths.negativeSign, layout.isNegative ? 1 : 0);
239
+ widths.integer = Math.max(widths.integer, layout.amountIntegerString.length);
240
+ widths.decimalMark = Math.max(widths.decimalMark, layout.amountDecimalString ? 1 : 0);
241
+ widths.decimal = Math.max(widths.decimal, layout.amountDecimalString.length);
242
+ widths.spaceBetweenAmountAndCommodityAfter = Math.max(widths.spaceBetweenAmountAndCommodityAfter, (layout.spaceBetweenCommodityAndAmount && layout.commodityAfter.length) ? 1 : 0);
243
+ widths.commodityAfter = Math.max(widths.commodityAfter, layout.commodityAfter.length);
379
244
  }
380
245
  /**
381
246
  * Format a range of lines
382
247
  */
383
- formatRange(document, _range, parsed, _lspOptions, userOptions = {}) {
248
+ formatRange(document, _range, parsed, _lspOptions, userOptions = {}, hledgerSettings) {
384
249
  // For range formatting, we format the entire document and then extract the range
385
250
  // This ensures consistency when formatting partial selections
386
- return this.formatDocument(document, parsed, _lspOptions, userOptions);
251
+ return this.formatDocument(document, parsed, _lspOptions, userOptions, hledgerSettings);
387
252
  }
388
253
  /**
389
254
  * Format on type (after pressing Enter)
390
255
  */
391
- formatOnType(document, _position, ch, parsed, _lspOptions, userOptions = {}) {
256
+ formatOnType(document, _position, ch, parsed, _lspOptions, userOptions = {}, hledgerSettings) {
392
257
  // Only format on newline
393
258
  if (ch !== '\n') {
394
259
  return [];
395
260
  }
396
261
  // Format the entire document to maintain alignment
397
- return this.formatDocument(document, parsed, _lspOptions, userOptions);
262
+ return this.formatDocument(document, parsed, _lspOptions, userOptions, hledgerSettings);
398
263
  }
399
264
  /**
400
265
  * Format a transaction header
@@ -442,12 +307,6 @@ class FormattingProvider {
442
307
  }
443
308
  return result;
444
309
  }
445
- /**
446
- * Find the commodity format from parsed document
447
- */
448
- findCommodity(commodityName, parsed) {
449
- return parsed.commodities.get(commodityName);
450
- }
451
310
  }
452
311
  exports.FormattingProvider = FormattingProvider;
453
312
  exports.formattingProvider = new FormattingProvider();
@@ -1 +1 @@
1
- {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/features/formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/features/formatter.ts"],"names":[],"mappings":"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"}
@@ -24,20 +24,21 @@ export declare class InlayHintsProvider {
24
24
  */
25
25
  provideInlayHints(document: TextDocument, range: Range, parsed: ParsedDocument, settings?: HledgerSettings): InlayHint[];
26
26
  /**
27
- * Get hints for inferred amounts (postings with amounts marked as inferred)
27
+ * Calculate insertion position for inferred amount hint
28
28
  */
29
- private getInferredAmountHints;
29
+ private calculateInferredAmountHintInsertionPosition;
30
30
  /**
31
- * Get inferred amounts for a transaction from the AST.
32
- * Returns a map of posting index to inferred amounts (commodity -> quantity)
33
- * This is no longer calculated - it uses the amounts already inferred during parsing.
34
- */
35
- private getInferredAmountsFromAST;
31
+ * Calculate insertion position for Running Balance assertion hint
32
+ */
33
+ private calculateAssertionHintInsertionPosition;
36
34
  /**
37
- * Calculate running balances for all transactions
38
- * Returns a map of transaction->posting index->account->commodity->balance
35
+ * Calculate insertion position for Cost assertion hint
36
+ */
37
+ private calculateCostHintInsertionPosition;
38
+ /**
39
+ * Get hints for inferred amounts (postings with amounts marked as inferred)
39
40
  */
40
- private calculateRunningBalances;
41
+ private getInferredAmountHints;
41
42
  /**
42
43
  * Get hints for running balances after each posting (with pre-calculated state)
43
44
  */
@@ -1 +1 @@
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;IA4Cd;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsD9B;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAejC;;;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"}
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;AAElE,OAAO,EAAE,cAAc,EAAgC,MAAM,UAAU,CAAC;AAMxE,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,4CAA4C;IAmCpD;;KAEC;IACD,OAAO,CAAC,uCAAuC;IAyB/C;;KAEC;IACD,OAAO,CAAC,kCAAkC;IAwB1C;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmF9B;;OAEG;IACH,OAAO,CAAC,+BAA+B;IA6FvC;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAoE/B;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}