Editor
Editor
Pilih editor yang dapat diprediksi untuk workflow lokal dan container tanpa menyimpan arbitrary shell command di project configuration.
[tool.custy.editor]Category
Quick Command
windows = ["vscode", "notepad"]Propertiesâ
Properties
| Property | Type | Description | Default | Required |
|---|---|---|---|---|
prefer_environment | Boolean | Coba VISUAL lalu EDITOR sebelum candidates dari project configuration. | true | No |
allow_fallback | Boolean | Tambahkan built-in candidates Custy setelah configured list. | true | No |
candidates.windows | Editor ID array | Urutan candidates untuk host Windows. | ["vscode", "notepad"] | No |
candidates.linux | Editor ID array | Urutan candidates untuk Linux native. | ["micro", "nano", "vim", "vi"] | No |
candidates.macos | Editor ID array | Urutan candidates untuk macOS. | ["vscode", "micro", "nano", "vim", "vi"] | No |
candidates.container | Editor ID array | Urutan candidates ketika Custy mendeteksi container runtime. | ["micro", "nano", "vim", "vi"] | No |
Configuration yang Direkomendasikan
[tool.custy.editor]
prefer_environment = true
allow_fallback = true
[tool.custy.editor.candidates]
windows = ["vscode", "notepad"]
linux = ["micro", "nano", "vim", "vi"]
macos = ["vscode", "micro", "nano", "vim", "vi"]
container = ["micro", "nano", "vim", "vi"]Identifier pertama memiliki prioritas tertinggi. Custy melewati editor yang tidak terinstal atau tidak dapat dimulai, lalu mencoba candidate berikutnya. Jika editor sudah dimulai kemudian keluar dengan status gagal, Custy berhenti agar tidak membuka editor kedua setelah pengguna mungkin telah mengedit file.
Environment Variablesâ
VISUAL dan EDITOR berasal dari process environment. Keduanya bukan TOML
property, dan Custy tidak membuat, menyimpan secara persistent, atau
memodifikasinya. User, shell profile, operating system, IDE, Docker/Compose
service, atau CI job dapat mendefinisikannya sebelum menjalankan Custy.
Nama dan value yang diterimaâ
| Exact variable | Peran | Value yang diterima | Contoh |
|---|---|---|---|
VISUAL | Environment editor utama | Trusted executable dengan optional arguments | code --wait |
EDITOR | Environment editor kedua | Trusted executable dengan optional arguments | nano |
PATH | Executable discovery; bukan untuk memilih editor | Operating-system search paths | Directory yang berisi code.CMD atau micro |
CUSTY_CONTAINER | Memilih container candidates; bukan editor command | 1, true, yes, atau on | Official image menetapkan 1 |
Hanya VISUAL dan EDITOR yang menerima editor command. Gunakan uppercase
name tersebut secara tepat agar portable; environment name bersifat
case-sensitive pada shell Linux dan macOS yang umum. Contoh command yang
diterima meliputi code --wait, notepad, micro, nano, vim, dan
nvim -f. Berbeda dari TOML candidate list, environment command dapat menunjuk
editor terinstal lainnya. Custy memisahkan arguments lalu menjalankan resolved
executable tanpa shell, tetapi value tersebut tetap harus dianggap trusted
input.
Value VISUAL atau EDITOR yang kosong atau tidak didefinisikan dilewati
tanpa error. Jika executable tidak tersedia, Custy mencatat candidate tersebut
dan melanjutkan sesuai configured policy.
Tempat mengaturnyaâ
Untuk process PowerShell saat ini dan command yang dijalankan darinya:
$env:VISUAL = "code --wait"
$env:EDITOR = "notepad"
custy run releaseUntuk process Command Prompt saat ini:
set VISUAL=code --wait
set EDITOR=notepad
custy run releaseUntuk Linux, macOS, WSL, atau POSIX container shell:
export VISUAL="micro"
export EDITOR="nano"
custy run releaseSession value hilang ketika shell ditutup. Untuk local value yang persistent,
gunakan Windows User/System Environment Variables atau shell startup file
seperti ~/.bashrc, ~/.zshrc, atau ~/.profile, lalu buka terminal baru.
Untuk container command satu kali, teruskan variable ke dalam container:
docker run --rm -it -e VISUAL="micro" -e EDITOR="nano" -v "${PWD}:/workspace" -w /workspace custy-prod:latest run releaseUntuk Compose atau CI, definisikan exact name yang sama pada service atau job:
services:
app:
environment:
VISUAL: micro
EDITOR: nanoCusty tidak me-load .env file secara langsung. Docker Compose, CI runner,
atau launcher lain dapat membacanya lalu meneruskan value ke Custy process.
Host value seperti VISUAL="code --wait" tidak otomatis tersedia di dalam
container, dan executable terkait harus tersedia di environment tempat Custy
benar-benar berjalan.
Waktu Custy membacanyaâ
- Shell, operating system, container runtime, atau CI runner menjalankan Custy dengan process environment miliknya.
- Custy me-load
[tool.custy.editor]dan membangun workflow yang diminta. - Ketika workflow mencapai commit atau tag message editing,
EditorService.resolve_candidates()membacaVISUALlaluEDITOR. - Custy mencoba command dan configured candidates yang dihasilkan secara berurutan.
Atur variable sebelum menjalankan Custy. Mengubah variable di terminal lain tidak mengubah environment milik Custy process yang sudah berjalan.
Behavior Matrixâ
prefer_environment | allow_fallback | Urutan efektif | Penggunaan yang direkomendasikan |
|---|---|---|---|
true | true | VISUAL â EDITOR â configured candidates â built-in defaults | Direkomendasikan untuk sebagian besar user |
true | false | VISUAL â EDITOR â configured candidates saja | Personal override dengan controlled project list |
false | true | Configured candidates â built-in defaults | Team atau container behavior yang predictable dengan recovery |
false | false | Configured candidates saja | Environment yang strict dan locked-down |
Fallback berarti Custy menambahkan built-in candidates untuk active runtime
yang sama. Custy dapat melanjutkan ketika candidate tidak tersedia atau tidak
dapat dimulai. Jika editor process sudah dimulai lalu keluar dengan status
gagal, Custy berhenti dengan EDITOR_PROCESS_FAILED dan tidak membuka editor
lain secara tidak terduga.
Urutan Resolusi
VISUAL, laluEDITOR, ketikaprefer_environment = true.candidates.containerdi dalam container yang terdeteksi; jika tidak, candidates untuk host Windows, Linux, atau macOS yang aktif.- Built-in candidates untuk runtime yang sama ketika
allow_fallback = true.
Project configuration hanya menerima identifier yang didukung: vscode,
notepad, micro, nano, vim, vi, dan neovim. code diterima sebagai
alias vscode; nvim diterima sebagai alias neovim.
Host Lokal dan Docker
Container Linux biasanya tidak dapat membuka graphical editor yang terinstal
pada host Windows. Karena itu, Custy menggunakan candidates.container di
dalam image dan candidates.windows ketika dijalankan secara native pada
Windows. Pertahankan -it agar terminal editor memperoleh TTY.
Production image menyertakan Micro, Nano, Vim, dan Vi. VS Code, Notepad, dan Neovim merupakan identifier yang didukung tetapi tidak disertakan dalam image standar. Custom image dapat memasangnya, tetapi graphical host integration berada di luar workflow container standar.
Kontrol Terminal Selama Editing
Ketika blocking terminal editor seperti Micro, Nano, Vim, atau Vi dibuka, Custy menyembunyikan dan menghentikan sementara live pipeline progress display. Editor kemudian memiliki kontrol eksklusif atas terminal sehingga refresh dari Rich tidak menimpa baris editor. Setelah editor ditutup, Custy menjalankan kembali display, memulihkan current step, lalu melanjutkan pipeline.
Workflow tetap berada pada EditFilesStep selama editor terbuka. Penangguhan
display tidak melewati step, mengubah message file, atau mengubah dry-run
behavior; proses ini hanya mengoordinasikan terminal presentation.
Keybindings di Container
| Editor | Undo | Redo | Catatan |
|---|---|---|---|
| Micro | Ctrl+Z atau Alt+Z | Ctrl+Y atau Alt+Y | Custy menambahkan alias Alt; shortcut native Micro tetap tersedia. |
| Nano | Alt+U | Alt+E | Custy mempertahankan mapping native Nano. Alt+Z dan Alt+Y tidak diganti karena dipakai Nano untuk toggle interface dan syntax color. |
| Vim / Vi | u atau Alt+Z | Ctrl+R atau Alt+Y | Custy menambahkan alias Alt pada normal dan insert mode tanpa menghapus command native. |
Pengaturan ini hanya berlaku untuk editor yang dibuka di dalam Custy image. Custy tidak menimpa pengaturan VS Code atau konfigurasi lokal Micro, Nano, Vim, dan Neovim pada host.