diff --git a/hledger-lib/.date.m4 b/hledger-lib/.date.m4 index c366e46f4..173ae01a6 100644 --- a/hledger-lib/.date.m4 +++ b/hledger-lib/.date.m4 @@ -1,2 +1,2 @@ m4_dnl Date to show in man pages. Updated by "Shake manuals" -m4_define({{_monthyear_}}, {{November 2025}})m4_dnl +m4_define({{_monthyear_}}, {{December 2025}})m4_dnl diff --git a/hledger-ui/.date.m4 b/hledger-ui/.date.m4 index c366e46f4..173ae01a6 100644 --- a/hledger-ui/.date.m4 +++ b/hledger-ui/.date.m4 @@ -1,2 +1,2 @@ m4_dnl Date to show in man pages. Updated by "Shake manuals" -m4_define({{_monthyear_}}, {{November 2025}})m4_dnl +m4_define({{_monthyear_}}, {{December 2025}})m4_dnl diff --git a/hledger-web/.date.m4 b/hledger-web/.date.m4 index c366e46f4..173ae01a6 100644 --- a/hledger-web/.date.m4 +++ b/hledger-web/.date.m4 @@ -1,2 +1,2 @@ m4_dnl Date to show in man pages. Updated by "Shake manuals" -m4_define({{_monthyear_}}, {{November 2025}})m4_dnl +m4_define({{_monthyear_}}, {{December 2025}})m4_dnl diff --git a/hledger/.date.m4 b/hledger/.date.m4 index c366e46f4..173ae01a6 100644 --- a/hledger/.date.m4 +++ b/hledger/.date.m4 @@ -1,2 +1,2 @@ m4_dnl Date to show in man pages. Updated by "Shake manuals" -m4_define({{_monthyear_}}, {{November 2025}})m4_dnl +m4_define({{_monthyear_}}, {{December 2025}})m4_dnl diff --git a/hledger/hledger.1 b/hledger/hledger.1 index cb9da176c..217be18d8 100644 --- a/hledger/hledger.1 +++ b/hledger/hledger.1 @@ -3479,23 +3479,23 @@ character; \f[CR][a\-z]\f[R] to match any character in a range; separator (like \f[CR]/\f[R]); \f[CR]**\f[R] to match zero or more subdirectories and/or zero or more characters at the start of a file name; etc. -Also, hledger\[aq]s globs always exclude the including file itself. +For convenience, \f[CR]include\f[R] always excludes the current file. So, you can do .IP \[bu] 2 \f[CR]include *.journal\f[R] to include all other journal files in the current directory (excluding dot files) .IP \[bu] 2 \f[CR]include **.journal\f[R] to include all other journal files in this -directory and below (excluding dot directories/files) +directory and below (excluding dot files and top\-level dot directories) .IP \[bu] 2 \f[CR]include timelogs/2???.timedot\f[R] to include all timedot files named like a year number. .PP -There is a limitation: hledger\[aq]s globs always exclude paths -involving dot files or dot directories. -This is a workaround for unavoidable dot directory traversal; you can -disable it and revert to older behaviour with the -\f[CR]\-\-old\-glob\f[R] flag, for now. +Note \f[CR]*\f[R] and \f[CR]**\f[R] usually won\[aq]t match dot files or +dot directories, with one exception: \f[CR]**\f[R] does search +non\-top\-level dot directories. +If this causes problems, make your glob pattern more specific (eg +\f[CR]**.journal\f[R] instead of \f[CR]**\f[R]). .PP If you are using many, or deeply nested, include files, and have an error that\[aq]s hard to pinpoint: a good troubleshooting command is diff --git a/hledger/hledger.info b/hledger/hledger.info index 56e70b885..ffb7d6e9a 100644 --- a/hledger/hledger.info +++ b/hledger/hledger.info @@ -3308,20 +3308,21 @@ hledger's globs are similar to zsh's: '?' to match any character; '[a-z]' to match any character in a range; '*' to match zero or more characters that aren't a path separator (like '/'); '**' to match zero or more subdirectories and/or zero or more characters at the start of a -file name; etc. Also, hledger's globs always exclude the including file -itself. So, you can do +file name; etc. For convenience, 'include' always excludes the current +file. So, you can do * 'include *.journal' to include all other journal files in the current directory (excluding dot files) * 'include **.journal' to include all other journal files in this - directory and below (excluding dot directories/files) + directory and below (excluding dot files and top-level dot + directories) * 'include timelogs/2???.timedot' to include all timedot files named like a year number. - There is a limitation: hledger's globs always exclude paths involving -dot files or dot directories. This is a workaround for unavoidable dot -directory traversal; you can disable it and revert to older behaviour -with the '--old-glob' flag, for now. + Note '*' and '**' usually won't match dot files or dot directories, +with one exception: '**' does search non-top-level dot directories. If +this causes problems, make your glob pattern more specific (eg +'**.journal' instead of '**'). If you are using many, or deeply nested, include files, and have an error that's hard to pinpoint: a good troubleshooting command is @@ -13426,300 +13427,300 @@ Node: Commodity directive syntax121789 Node: Commodity error checking123438 Node: decimal-mark directive123913 Node: include directive124492 -Node: P directive126710 -Node: payee directive127744 -Node: tag directive128366 -Node: Periodic transactions128978 -Node: Periodic rule syntax131132 -Node: Periodic rules and relative dates131955 -Node: Two spaces between period expression and description!132732 -Node: Auto postings133693 -Node: Auto postings and multiple files136979 -Node: Auto postings and dates137384 -Node: Auto postings and transaction balancing / inferred amounts / balance assertions137825 -Node: Auto posting tags138671 -Node: Auto postings on forecast transactions only139566 -Node: Other syntax140036 -Node: Balance assignments140808 -Node: Balance assignments and costs142336 -Node: Balance assignments and multiple files142758 -Node: Bracketed posting dates143181 -Node: D directive143879 -Node: apply account directive145652 -Node: Y directive146519 -Node: Secondary dates147507 -Node: Star comments148992 -Node: Valuation expressions149684 -Node: Virtual postings149983 -Node: Other Ledger directives151607 -Node: Other cost/lot notations152369 -Node: CSV155210 -Node: CSV rules cheatsheet157410 -Node: source159708 -Node: Data cleaning / data generating commands161112 -Node: archive163011 -Node: encoding163939 -Node: separator164982 -Node: skip165635 -Node: date-format166285 -Node: timezone167230 -Node: newest-first168356 -Node: intra-day-reversed169069 -Node: decimal-mark169671 -Node: CSV fields and hledger fields170169 -Node: fields list172045 -Node: Field assignment173870 -Node: Field names175089 -Node: date field176421 -Node: date2 field176585 -Node: status field176780 -Node: code field176970 -Node: description field177158 -Node: comment field177375 -Node: account field177932 -Node: amount field178650 -Node: currency field181489 -Node: balance field181897 -Node: if block182420 -Node: Matchers183947 -Node: Multiple matchers185875 -Node: Match groups186683 -Node: if table187576 -Node: balance-type189639 -Node: include190466 -Node: Working with CSV191035 -Node: Rapid feedback191624 -Node: Valid CSV192207 -Node: File Extension193083 -Node: Reading CSV from standard input193818 -Node: Reading multiple CSV files194204 -Node: Reading files specified by rule194680 -Node: Valid transactions196077 -Node: Deduplicating importing196902 -Node: Regular expressions in CSV rules198148 -Node: Setting amounts199640 -Node: Amount signs202178 -Node: Setting currency/commodity203243 -Node: Amount decimal places204619 -Node: Referencing other fields205876 -Node: How CSV rules are evaluated206984 -Node: Well factored rules209701 -Node: CSV rules examples210191 -Node: Bank of Ireland210389 -Node: Coinbase211986 -Node: Amazon213169 -Node: Paypal215011 -Node: Timeclock222761 -Node: Timedot226814 -Node: Timedot examples230291 -Node: PART 3 REPORTING CONCEPTS232568 -Node: Time periods232732 -Node: Report start & end date233005 -Node: Smart dates234481 -Node: Report intervals236604 -Node: Date adjustments237178 -Node: Start date adjustment237398 -Node: End date adjustment238301 -Node: Period headings239082 -Node: Period expressions240015 -Node: Period expressions with a report interval241920 -Node: More complex report intervals242368 -Node: Multiple weekday intervals244484 -Node: Depth245495 -Node: Combining depth options246481 -Node: Queries247431 -Node: Query types250103 -Node: acct query250478 -Node: amt query250789 -Node: code query251486 -Node: cur query251681 -Node: desc query252287 -Node: date query252470 -Node: date2 query252866 -Node: depth query253157 -Node: note query253493 -Node: payee query253759 -Node: real query254040 -Node: status query254245 -Node: type query254485 -Node: tag query255018 -Node: Negative queries255647 -Node: not query255829 -Node: Space-separated queries256116 -Node: Boolean queries256804 -Node: expr query258122 -Node: any query258802 -Node: all query259255 -Node: Queries and command options259837 -Node: Queries and account aliases260285 -Node: Queries and valuation260610 -Node: Pivoting260972 -Node: Generating data263255 -Node: Forecasting265055 -Node: --forecast265711 -Node: Inspecting forecast transactions266812 -Node: Forecast reports268145 -Node: Forecast tags269254 -Node: Forecast period in detail269874 -Node: Forecast troubleshooting270962 -Node: Budgeting272033 -Node: Amount formatting272593 -Node: Commodity display style272837 -Node: Rounding274678 -Node: Trailing decimal marks275283 -Node: Amount parseability276216 -Node: Cost reporting277825 -Node: Recording costs278656 -Node: Reporting at cost280383 -Node: Equity conversion postings281148 -Node: Inferring equity conversion postings283793 -Node: Combining costs and equity conversion postings284935 -Node: Requirements for detecting equity conversion postings286160 -Node: Infer cost and equity by default ?287682 -Node: Value reporting288119 -Node: -X Value in specified commodity289077 -Node: -V Value in default commoditys289937 -Node: Valuation date290674 -Node: Finding market price291506 -Node: --infer-market-prices market prices from transactions292886 -Node: Valuation commodity295930 -Node: --value Flexible valuation297363 -Node: Valuation examples299206 -Node: Interaction of valuation and queries301350 -Node: Effect of valuation on reports302067 -Node: PART 4 COMMANDS309917 -Node: Help commands312706 -Node: commands312892 -Node: demo313100 -Node: help314193 -Node: User interface commands315898 -Node: repl316109 -Node: Examples318373 -Node: run318931 -Node: Examples 2321346 -Node: ui322370 -Node: web322507 -Node: Data entry commands322635 -Node: add322896 -Node: add and balance assertions325470 -Node: add and balance assignments326044 -Node: import326737 -Node: Import dry run327816 -Node: Overlap detection328764 -Node: First import331650 -Node: Importing balance assignments332845 -Node: Import and commodity styles333900 -Node: Import archiving334334 -Node: Import special cases335159 -Node: Deduplication335377 -Node: Varying file name335868 -Node: Multiple versions336252 -Node: Basic report commands337359 -Node: accounts337660 -Node: codes340172 -Node: commodities341194 -Node: descriptions342202 -Node: files342662 -Node: notes342959 -Node: payees343471 -Node: prices344628 -Node: stats345520 -Node: tags347578 -Node: Standard report commands349402 -Node: print349707 -Node: print amount explicitness352438 -Node: print alignment353376 -Node: print amount style353690 -Node: print parseability354920 -Node: print other features356197 -Node: print output format357159 -Node: aregister360444 -Node: aregister and posting dates364909 -Node: register365810 -Node: Custom register output373050 -Node: balancesheet374235 -Node: balancesheetequity379200 -Node: cashflow384535 -Node: incomestatement389348 -Node: Advanced report commands394197 -Node: balance394405 -Node: balance features399826 -Node: Simple balance report401929 -Node: Balance report line format403739 -Node: Filtered balance report406099 -Node: List or tree mode406618 -Node: Depth limiting408131 -Node: Dropping top-level accounts408898 -Node: Showing declared accounts409408 -Node: Sorting by amount410138 -Node: Percentages410992 -Node: Multi-period balance report411699 -Node: Balance change end balance414451 -Node: Balance report modes416088 -Node: Calculation mode416767 -Node: Accumulation mode417471 -Node: Valuation mode418572 -Node: Combining balance report modes419916 -Node: Budget report421946 -Node: Using the budget report424246 -Node: Budget date surprises426522 -Node: Selecting budget goals427886 -Node: Budgeting vs forecasting428834 -Node: Balance report layout430511 -Node: Wide layout431716 -Node: Tall layout434121 -Node: Bare layout435427 -Node: Tidy layout437491 -Node: Balance report output439035 -Node: Some useful balance reports439809 -Node: roi441069 -Node: Spaces and special characters in --inv and --pnl443316 -Node: Semantics of --inv and --pnl444042 -Node: IRR and TWR explained446129 -Node: Chart commands449540 -Node: activity449721 -Node: Data generation commands450218 -Node: close450424 -Node: close --clopen453489 -Node: close --close455385 -Node: close --open455909 -Node: close --assert456159 -Node: close --assign456486 -Node: close --retain457165 -Node: close customisation458022 -Node: close and balance assertions459700 -Node: close examples461222 -Node: Retain earnings461459 -Node: Migrate balances to a new file461962 -Node: More detailed close examples463324 -Node: rewrite463546 -Node: Re-write rules in a file466106 -Node: Diff output format467407 -Node: rewrite vs print --auto468677 -Node: Maintenance commands469391 -Node: check469610 -Node: Basic checks470693 -Node: Strict checks471759 -Node: Other checks472632 -Node: Custom checks474334 -Node: diff474773 -Node: setup475981 -Node: test478848 -Node: PART 5 COMMON TASKS479751 -Node: Getting help480200 -Node: Constructing command lines481101 -Node: Starting a journal file481966 -Node: Setting LEDGER_FILE483370 -Node: Set LEDGER_FILE on unix483658 -Node: Set LEDGER_FILE on mac484175 -Node: Set LEDGER_FILE on Windows484903 -Node: Setting opening balances486626 -Node: Recording transactions489968 -Node: Reconciling490713 -Node: Reporting493122 -Node: Migrating to a new file497256 -Node: BUGS497712 -Node: Troubleshooting498538 +Node: P directive126715 +Node: payee directive127749 +Node: tag directive128371 +Node: Periodic transactions128983 +Node: Periodic rule syntax131137 +Node: Periodic rules and relative dates131960 +Node: Two spaces between period expression and description!132737 +Node: Auto postings133698 +Node: Auto postings and multiple files136984 +Node: Auto postings and dates137389 +Node: Auto postings and transaction balancing / inferred amounts / balance assertions137830 +Node: Auto posting tags138676 +Node: Auto postings on forecast transactions only139571 +Node: Other syntax140041 +Node: Balance assignments140813 +Node: Balance assignments and costs142341 +Node: Balance assignments and multiple files142763 +Node: Bracketed posting dates143186 +Node: D directive143884 +Node: apply account directive145657 +Node: Y directive146524 +Node: Secondary dates147512 +Node: Star comments148997 +Node: Valuation expressions149689 +Node: Virtual postings149988 +Node: Other Ledger directives151612 +Node: Other cost/lot notations152374 +Node: CSV155215 +Node: CSV rules cheatsheet157415 +Node: source159713 +Node: Data cleaning / data generating commands161117 +Node: archive163016 +Node: encoding163944 +Node: separator164987 +Node: skip165640 +Node: date-format166290 +Node: timezone167235 +Node: newest-first168361 +Node: intra-day-reversed169074 +Node: decimal-mark169676 +Node: CSV fields and hledger fields170174 +Node: fields list172050 +Node: Field assignment173875 +Node: Field names175094 +Node: date field176426 +Node: date2 field176590 +Node: status field176785 +Node: code field176975 +Node: description field177163 +Node: comment field177380 +Node: account field177937 +Node: amount field178655 +Node: currency field181494 +Node: balance field181902 +Node: if block182425 +Node: Matchers183952 +Node: Multiple matchers185880 +Node: Match groups186688 +Node: if table187581 +Node: balance-type189644 +Node: include190471 +Node: Working with CSV191040 +Node: Rapid feedback191629 +Node: Valid CSV192212 +Node: File Extension193088 +Node: Reading CSV from standard input193823 +Node: Reading multiple CSV files194209 +Node: Reading files specified by rule194685 +Node: Valid transactions196082 +Node: Deduplicating importing196907 +Node: Regular expressions in CSV rules198153 +Node: Setting amounts199645 +Node: Amount signs202183 +Node: Setting currency/commodity203248 +Node: Amount decimal places204624 +Node: Referencing other fields205881 +Node: How CSV rules are evaluated206989 +Node: Well factored rules209706 +Node: CSV rules examples210196 +Node: Bank of Ireland210394 +Node: Coinbase211991 +Node: Amazon213174 +Node: Paypal215016 +Node: Timeclock222766 +Node: Timedot226819 +Node: Timedot examples230296 +Node: PART 3 REPORTING CONCEPTS232573 +Node: Time periods232737 +Node: Report start & end date233010 +Node: Smart dates234486 +Node: Report intervals236609 +Node: Date adjustments237183 +Node: Start date adjustment237403 +Node: End date adjustment238306 +Node: Period headings239087 +Node: Period expressions240020 +Node: Period expressions with a report interval241925 +Node: More complex report intervals242373 +Node: Multiple weekday intervals244489 +Node: Depth245500 +Node: Combining depth options246486 +Node: Queries247436 +Node: Query types250108 +Node: acct query250483 +Node: amt query250794 +Node: code query251491 +Node: cur query251686 +Node: desc query252292 +Node: date query252475 +Node: date2 query252871 +Node: depth query253162 +Node: note query253498 +Node: payee query253764 +Node: real query254045 +Node: status query254250 +Node: type query254490 +Node: tag query255023 +Node: Negative queries255652 +Node: not query255834 +Node: Space-separated queries256121 +Node: Boolean queries256809 +Node: expr query258127 +Node: any query258807 +Node: all query259260 +Node: Queries and command options259842 +Node: Queries and account aliases260290 +Node: Queries and valuation260615 +Node: Pivoting260977 +Node: Generating data263260 +Node: Forecasting265060 +Node: --forecast265716 +Node: Inspecting forecast transactions266817 +Node: Forecast reports268150 +Node: Forecast tags269259 +Node: Forecast period in detail269879 +Node: Forecast troubleshooting270967 +Node: Budgeting272038 +Node: Amount formatting272598 +Node: Commodity display style272842 +Node: Rounding274683 +Node: Trailing decimal marks275288 +Node: Amount parseability276221 +Node: Cost reporting277830 +Node: Recording costs278661 +Node: Reporting at cost280388 +Node: Equity conversion postings281153 +Node: Inferring equity conversion postings283798 +Node: Combining costs and equity conversion postings284940 +Node: Requirements for detecting equity conversion postings286165 +Node: Infer cost and equity by default ?287687 +Node: Value reporting288124 +Node: -X Value in specified commodity289082 +Node: -V Value in default commoditys289942 +Node: Valuation date290679 +Node: Finding market price291511 +Node: --infer-market-prices market prices from transactions292891 +Node: Valuation commodity295935 +Node: --value Flexible valuation297368 +Node: Valuation examples299211 +Node: Interaction of valuation and queries301355 +Node: Effect of valuation on reports302072 +Node: PART 4 COMMANDS309922 +Node: Help commands312711 +Node: commands312897 +Node: demo313105 +Node: help314198 +Node: User interface commands315903 +Node: repl316114 +Node: Examples318378 +Node: run318936 +Node: Examples 2321351 +Node: ui322375 +Node: web322512 +Node: Data entry commands322640 +Node: add322901 +Node: add and balance assertions325475 +Node: add and balance assignments326049 +Node: import326742 +Node: Import dry run327821 +Node: Overlap detection328769 +Node: First import331655 +Node: Importing balance assignments332850 +Node: Import and commodity styles333905 +Node: Import archiving334339 +Node: Import special cases335164 +Node: Deduplication335382 +Node: Varying file name335873 +Node: Multiple versions336257 +Node: Basic report commands337364 +Node: accounts337665 +Node: codes340177 +Node: commodities341199 +Node: descriptions342207 +Node: files342667 +Node: notes342964 +Node: payees343476 +Node: prices344633 +Node: stats345525 +Node: tags347583 +Node: Standard report commands349407 +Node: print349712 +Node: print amount explicitness352443 +Node: print alignment353381 +Node: print amount style353695 +Node: print parseability354925 +Node: print other features356202 +Node: print output format357164 +Node: aregister360449 +Node: aregister and posting dates364914 +Node: register365815 +Node: Custom register output373055 +Node: balancesheet374240 +Node: balancesheetequity379205 +Node: cashflow384540 +Node: incomestatement389353 +Node: Advanced report commands394202 +Node: balance394410 +Node: balance features399831 +Node: Simple balance report401934 +Node: Balance report line format403744 +Node: Filtered balance report406104 +Node: List or tree mode406623 +Node: Depth limiting408136 +Node: Dropping top-level accounts408903 +Node: Showing declared accounts409413 +Node: Sorting by amount410143 +Node: Percentages410997 +Node: Multi-period balance report411704 +Node: Balance change end balance414456 +Node: Balance report modes416093 +Node: Calculation mode416772 +Node: Accumulation mode417476 +Node: Valuation mode418577 +Node: Combining balance report modes419921 +Node: Budget report421951 +Node: Using the budget report424251 +Node: Budget date surprises426527 +Node: Selecting budget goals427891 +Node: Budgeting vs forecasting428839 +Node: Balance report layout430516 +Node: Wide layout431721 +Node: Tall layout434126 +Node: Bare layout435432 +Node: Tidy layout437496 +Node: Balance report output439040 +Node: Some useful balance reports439814 +Node: roi441074 +Node: Spaces and special characters in --inv and --pnl443321 +Node: Semantics of --inv and --pnl444047 +Node: IRR and TWR explained446134 +Node: Chart commands449545 +Node: activity449726 +Node: Data generation commands450223 +Node: close450429 +Node: close --clopen453494 +Node: close --close455390 +Node: close --open455914 +Node: close --assert456164 +Node: close --assign456491 +Node: close --retain457170 +Node: close customisation458027 +Node: close and balance assertions459705 +Node: close examples461227 +Node: Retain earnings461464 +Node: Migrate balances to a new file461967 +Node: More detailed close examples463329 +Node: rewrite463551 +Node: Re-write rules in a file466111 +Node: Diff output format467412 +Node: rewrite vs print --auto468682 +Node: Maintenance commands469396 +Node: check469615 +Node: Basic checks470698 +Node: Strict checks471764 +Node: Other checks472637 +Node: Custom checks474339 +Node: diff474778 +Node: setup475986 +Node: test478853 +Node: PART 5 COMMON TASKS479756 +Node: Getting help480205 +Node: Constructing command lines481106 +Node: Starting a journal file481971 +Node: Setting LEDGER_FILE483375 +Node: Set LEDGER_FILE on unix483663 +Node: Set LEDGER_FILE on mac484180 +Node: Set LEDGER_FILE on Windows484908 +Node: Setting opening balances486631 +Node: Recording transactions489973 +Node: Reconciling490718 +Node: Reporting493127 +Node: Migrating to a new file497261 +Node: BUGS497717 +Node: Troubleshooting498543  End Tag Table diff --git a/hledger/hledger.txt b/hledger/hledger.txt index 66477a5e1..7c34263ad 100644 --- a/hledger/hledger.txt +++ b/hledger/hledger.txt @@ -2615,22 +2615,22 @@ Journal any character in a range; * to match zero or more characters that aren't a path separator (like /); ** to match zero or more subdirecto- ries and/or zero or more characters at the start of a file name; etc. - Also, hledger's globs always exclude the including file itself. So, - you can do + For convenience, include always excludes the current file. So, you can + do - o include *.journal to include all other journal files in the current + o include *.journal to include all other journal files in the current directory (excluding dot files) - o include **.journal to include all other journal files in this direc- - tory and below (excluding dot directories/files) + o include **.journal to include all other journal files in this direc- + tory and below (excluding dot files and top-level dot directories) o include timelogs/2???.timedot to include all timedot files named like a year number. - There is a limitation: hledger's globs always exclude paths involving - dot files or dot directories. This is a workaround for unavoidable dot - directory traversal; you can disable it and revert to older behaviour - with the --old-glob flag, for now. + Note * and ** usually won't match dot files or dot directories, with + one exception: ** does search non-top-level dot directories. If this + causes problems, make your glob pattern more specific (eg **.journal + instead of **). If you are using many, or deeply nested, include files, and have an er- ror that's hard to pinpoint: a good troubleshooting command is hledger