Lewati ke konten utama

Editor

Editor

Active

Pilih editor yang dapat diprediksi untuk workflow lokal dan container tanpa menyimpan arbitrary shell command di project configuration.

Command[tool.custy.editor]

Category

Configuration

Quick Command

windows = ["vscode", "notepad"]

platform precedencesafe fallbackcontainer editors

Properties​

Properties

PropertyTypeDescriptionDefaultRequired
prefer_environmentBooleanCoba VISUAL lalu EDITOR sebelum candidates dari project configuration.trueNo
allow_fallbackBooleanTambahkan built-in candidates Custy setelah configured list.trueNo
candidates.windowsEditor ID arrayUrutan candidates untuk host Windows.["vscode", "notepad"]No
candidates.linuxEditor ID arrayUrutan candidates untuk Linux native.["micro", "nano", "vim", "vi"]No
candidates.macosEditor ID arrayUrutan candidates untuk macOS.["vscode", "micro", "nano", "vim", "vi"]No
candidates.containerEditor ID arrayUrutan candidates ketika Custy mendeteksi container runtime.["micro", "nano", "vim", "vi"]No

Configuration yang Direkomendasikan

.config/custy/config.toml
toml
[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 variablePeranValue yang diterimaContoh
VISUALEnvironment editor utamaTrusted executable dengan optional argumentscode --wait
EDITOREnvironment editor keduaTrusted executable dengan optional argumentsnano
PATHExecutable discovery; bukan untuk memilih editorOperating-system search pathsDirectory yang berisi code.CMD atau micro
CUSTY_CONTAINERMemilih container candidates; bukan editor command1, true, yes, atau onOfficial 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:

PowerShell session
powershell
$env:VISUAL = "code --wait"
$env:EDITOR = "notepad"
custy run release

Untuk process Command Prompt saat ini:

Command Prompt session
batch
set VISUAL=code --wait
set EDITOR=notepad
custy run release

Untuk Linux, macOS, WSL, atau POSIX container shell:

POSIX shell session
bash
export VISUAL="micro"
export EDITOR="nano"
custy run release

Session 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 environment
bash
docker run --rm -it -e VISUAL="micro" -e EDITOR="nano" -v "${PWD}:/workspace" -w /workspace custy-prod:latest run release

Untuk Compose atau CI, definisikan exact name yang sama pada service atau job:

Docker Compose service
yaml
services:
app:
  environment:
    VISUAL: micro
    EDITOR: nano

Custy 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​

  1. Shell, operating system, container runtime, atau CI runner menjalankan Custy dengan process environment miliknya.
  2. Custy me-load [tool.custy.editor] dan membangun workflow yang diminta.
  3. Ketika workflow mencapai commit atau tag message editing, EditorService.resolve_candidates() membaca VISUAL lalu EDITOR.
  4. 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_environmentallow_fallbackUrutan efektifPenggunaan yang direkomendasikan
truetrueVISUAL → EDITOR → configured candidates → built-in defaultsDirekomendasikan untuk sebagian besar user
truefalseVISUAL → EDITOR → configured candidates sajaPersonal override dengan controlled project list
falsetrueConfigured candidates → built-in defaultsTeam atau container behavior yang predictable dengan recovery
falsefalseConfigured candidates sajaEnvironment 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

  1. VISUAL, lalu EDITOR, ketika prefer_environment = true.
  2. candidates.container di dalam container yang terdeteksi; jika tidak, candidates untuk host Windows, Linux, atau macOS yang aktif.
  3. 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

EditorUndoRedoCatatan
MicroCtrl+Z atau Alt+ZCtrl+Y atau Alt+YCusty menambahkan alias Alt; shortcut native Micro tetap tersedia.
NanoAlt+UAlt+ECusty mempertahankan mapping native Nano. Alt+Z dan Alt+Y tidak diganti karena dipakai Nano untuk toggle interface dan syntax color.
Vim / Viu atau Alt+ZCtrl+R atau Alt+YCusty 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.

Lanjutkan