Make fzf prompt more legible

This commit is contained in:
2026-02-05 14:37:27 -05:00
parent 54871d04cd
commit fbab1c9174
4 changed files with 12 additions and 5 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
CLAUDE.md
# ---> Python # ---> Python
uv.lock uv.lock
# Byte-compiled / optimized / DLL files # Byte-compiled / optimized / DLL files

View File

@@ -5,8 +5,10 @@ import sys
EXECUTABLE_NAME = "fzf.exe" if sys.platform == "win32" else "fzf" EXECUTABLE_NAME = "fzf.exe" if sys.platform == "win32" else "fzf"
def iterfzf(iterable, prompt="> "): def iterfzf(iterable, prompt="> ", header=None, height="50%"):
cmd = [EXECUTABLE_NAME, "--prompt=" + prompt] cmd = [EXECUTABLE_NAME, "--prompt=" + prompt, "--height=" + height, "--reverse"]
if header:
cmd.append("--header=" + header)
encoding = sys.getdefaultencoding() encoding = sys.getdefaultencoding()
proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=None) proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=None)
if proc.stdin is None: if proc.stdin is None:

View File

@@ -397,8 +397,9 @@ def add_account2_interactive(transaction: Transaction, categories: List[str]):
"""Interactively add account2 to a transaction.""" """Interactively add account2 to a transaction."""
t = transaction t = transaction
account2 = None account2 = None
prompt = f"{t.account1} {t.date} {t.description} {t.debit} > " header = f"{t.account1} | {t.date} | {t.description} | {t.debit}"
logging.warning(f"No mapping for '{t}'.")
while account2 is None: while account2 is None:
account2 = iterfzf(categories, prompt=prompt) account2 = iterfzf(categories, header=header)
transaction.account2 = account2 transaction.account2 = account2
print(f"Assigned category '{account2}'.") print(f"Assigned category '{account2}'.")

View File

@@ -68,6 +68,7 @@ def get_transactions(csv_file: str, config: CsvConfig) -> list[Transaction]:
def apply_mappings(transactions: list[Transaction], mappings: dict[str, Mapping]): def apply_mappings(transactions: list[Transaction], mappings: dict[str, Mapping]):
"""Apply mappings to transactions.""" """Apply mappings to transactions."""
unmapped_count = 0
for t in transactions: for t in transactions:
if t.key() in mappings: if t.key() in mappings:
mapping = mappings[t.key()] mapping = mappings[t.key()]
@@ -76,7 +77,9 @@ def apply_mappings(transactions: list[Transaction], mappings: dict[str, Mapping]
mapping.count -= 1 mapping.count -= 1
t.mapping = mapping t.mapping = mapping
else: else:
logging.warning(f"No mapping for '{t}'.") unmapped_count += 1
if unmapped_count > 0:
logging.info(f"{unmapped_count} transactions without mappings.")
for mapping in mappings.values(): for mapping in mappings.values():
assert mapping.count == 0, f"{mapping} was not used as often as expected!" assert mapping.count == 0, f"{mapping} was not used as often as expected!"