Skip to content

Commit 80cc8f9

Browse files
Ionut Adrian CiolanCopilot
andcommitted
docs: clarify Emacs integration philosophy vs Neovim UI approach
- fff.nvim in Neovim are UI custom 97KB (picker_ui.lua), NU Telescope backend - Pentru Emacs: zero UI propriu, plugging in completing-read / consult - Utilizatorul primeste vertico/embark/marginalia gratis - Abordare superioara celei din Neovim din perspectiva UX Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 900de47 commit 80cc8f9

1 file changed

Lines changed: 35 additions & 1 deletion

File tree

docs/emacs-integration-plan.md

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Plan de implementare: fff.el — Suport Emacs pentru fff.nvim
22

3-
> **Status**: Draft tehnic v1.0
3+
> **Status**: Draft tehnic v1.1
44
> **Audiență**: Contribuitori Rust + Emacs Lisp
55
> **Bază de cod analizată**: `dmtrKovalenko/fff.nvim` @ `2465c2ca`
66
@@ -14,6 +14,40 @@ fff.nvim are un backend Rust de înaltă calitate (`fff-core`) izolat de fronten
1414

1515
---
1616

17+
## 0. Clarificare esențială: fff în Neovim NU se integrează în Telescope
18+
19+
> Această secțiune există pentru a evita o greșeală de design frecventă.
20+
21+
O presupunere naturală este că fff.nvim funcționează ca un backend pentru Telescope sau `vim.ui.select` — adică se integrează în tooling-ul de completion existent din Neovim. **Presupunerea e greșită.**
22+
23+
`picker_ui.lua` are **97KB** de cod — fff are propria interfață grafică completă: floating window, renderer, scrollbar, highlighting, preview panel, keybindings proprii. Este un picker standalone, ca Telescope însuși, nu un backend pentru Telescope.
24+
25+
```
26+
Neovim: fff = UI custom 97KB + backend Rust (fff-core)
27+
28+
construit de la zero,
29+
fără vim.ui.select, fără Telescope
30+
```
31+
32+
### De ce Emacs e diferit — și mai bun în acest caz
33+
34+
Emacs are un contract standardizat: **`completing-read`**. Orice funcție care returnează candidați prin `completing-read` este interceptată automat de framework-ul de completion instalat de utilizator:
35+
36+
| Dacă utilizatorul are | Primește automat |
37+
|---|---|
38+
| `vertico` | UI vertical cu preview |
39+
| `ivy` | UI ivy cu acțiuni |
40+
| `helm` | UI helm cu secțiuni |
41+
| `marginalia` | adnotări (frecency, git status) în coloana dreaptă |
42+
| `embark` | acțiuni (open, copy-path, git-diff, grep-in-dir) via `C-;` |
43+
| `consult` | source async cu narrowing și preview live |
44+
45+
**Concluzie**: pentru Emacs NU construim UI. Contribuția noastră este exclusiv backend-ul Rust (scoring Smith-Waterman, frecency LMDB, git status, query parser). UI-ul vine gratis din stack-ul deja instalat al utilizatorului.
46+
47+
Această abordare este idiomatică în Emacs (ex: `consult-fd` = `fd` subprocess + `completing-read`, zero UI propriu) și produce o integrare superioară celei din Neovim — utilizatorul nu trebuie să reînvețe keybindings, acțiunile embark funcționează imediat, marginalia afișează scorurile fff automat.
48+
49+
---
50+
1751
## 1. Decizie arhitecturală
1852

1953
### Opțiunile evaluate

0 commit comments

Comments
 (0)