Memahami bagaimana Emacs memilih major mode berdasarkan ekstensi file, mengenal prog-mode, text-mode, dan mode berbasis tree-sitter (*-ts-mode), membedakan major vs minor mode, mengidentifikasi mode aktif dengan C-h m, dan mengubah mode secara manual lewat M-x.

Episode 2 memperkenalkan mode secara konsep; episode 7 mempraktikkannya. Mode adalah otak dari setiap buffer: mode menentukan cara Emacs menafsirkan teks di depannya — apakah sebagai kode Python (dengan indentation cerdas) atau dokumen markdown (dengan outline). Salah mode = salah perilaku editor.
Mengapa ini penting di dunia kerja nyata? Karena file tidak selalu sesuai ekstensi, dan mode yang salah membuat highlight, indentasi, dan completion bekerja dengan cara yang membingungkan. Setelah episode ini kalian tahu persis apa yang terjadi di balik layar — dan bagaimana mengambil alih kalau Emacs salah menebak.
Saat file dibuka, Emacs menjalankan tiga langkah deteksi:
*.py → python-mode, *.md → markdown-ts-mode (Emacs 30), *.go → go-ts-mode.#!/usr/bin/env python3 → python-mode, walaupun ekstensinya aneh.fundamental-mode — mode paling polos tanpa fitur bahasa.Lihat isi auto-mode-alist:
M-x describe-variable RET auto-mode-alist RETIni membuka dokumentasi lengkap — self-documenting bekerja di sini. C-h v auto-mode-alist juga bisa.
Mode untuk bahasa pemrograman. Di Emacs 30 ada dua varian:
python-mode, c-mode, ruby-mode — indentation & highlight berbasis aturan tekstual.*-ts-mode): python-ts-mode, c-ts-mode, go-ts-mode, elixir-ts-mode — indentation & highlight berbasis pohon sintaks (AST), jauh lebih akurat. Episode 16 membedahnya.Banyak mode klasik adalah "alias" ke versi ts: di Emacs 30, membuka foo.py bisa langsung masuk python-ts-mode jika grammar tree-sitter tersedia.
text-mode untuk prosa polos; turunannya markdown-ts-mode (Emacs 31 juga menyiapkan markdown-ts-mode eksperimental), org-mode (episode 12), dan mail-mode.
Beberapa major mode bukan untuk teks biasa — mereka mengubah buffer menjadi aplikasi:
dired-mode — file manager (episode 14)magit-status-mode — UI git (episode 15)org-mode — note/task/agenda (episode 12-13)eww-mode — browser (episode 21)Di mode ini, penekanan tombol biasa di-rebind untuk fungsi aplikasi — n/p untuk bergerak antar item, g untuk refresh, dst.
Perbedaan kuncinya:
| Major Mode | Minor Mode | |
|---|---|---|
| Per buffer | Tepat satu | Bisa banyak |
| Peran | Identitas buffer (bahasa/aplikasi) | Fitur tambahan |
| Contoh | python-mode, dired-mode | display-line-numbers-mode, flymake-mode, auto-fill-mode |
| Dinonaktifkan | Pindah ke mode lain | M-x <mode> RET toggle |
Beberapa minor mode hanya masuk akal dengan major mode tertentu — flymake-mode berguna di python-mode, tidak berguna di dired-mode. Emacs mengizinkan, tapi kewarasan ada di tangan kalian.
Cara tercepat: baca mode line (episode 3). Nama major mode muncul di sana. Untuk detail lengkap:
C-h m → describe-mode: dokumentasi semua mode aktif di buffer iniC-h m membuka buffer *Help* yang berisi:
Ini adalah cara resmi "baca manual buffer": C-h m akan kalian pakai terus sepanjang karier Emacs.
Kadang Emacs salah menebak, atau kalian ingin memaksa mode tertentu:
M-x python-mode RET → paksa mode Python
M-x text-mode RET → paksa mode teks
M-x fundamental-mode RETPola umum lain: file .env sering terbaca sebagai fundamental-mode. Kalian bisa memaksa:
M-x sh-mode RETDan untuk set permanen berdasarkan nama file, tambahkan di init file (episode 10):
(add-to-list 'auto-mode-alist '("\\.env\\'" . shell-script-mode))
(add-to-list 'auto-mode-alist '("\\.ipp\\'" . python-mode))Tip
Saat isi file aneh-aneh — indentasi berantakan, tidak ada highlight — sebelum marah, cek C-h m: 80% kasus karena mode yang salah. Kebiasaan "cek mode dulu" akan menghemat banyak frustrasi.
Makefile tidak terbaca oleh auto-mode-alist standar karena tidak punya ekstensi. Emacs sudah menyediakan makefile-mode untuk file bernama Makefile — tapi ini membuktikan bahwa "magic" deteksi Emacs terbatas.global-display-line-numbers-mode) dan berlaku untuk semua buffer baru. Hati-hati — C-h m di buffer baru akan menunjukkan mode yang ternyata aktif karena setting global.C-h m menunjukkan python-ts-mode padahal kalian menginginkan python-mode, itu bukan bug — Emacs 30 memang default ke varian ts bila grammar tersedia.Pada episode 7 ini, kalian telah memahami sistem mode Emacs secara utuh.
Inti yang harus dibawa pulang:
auto-mode-alist (ekstensi) + magic (shebang/isi) → fundamental-mode fallback.*-ts-mode) adalah default modern untuk bahasa yang didukung.C-h m = cara resmi membaca apa yang sedang terjadi di buffer kalian.M-x <mode>-mode mengubah mode manual; add-to-list 'auto-mode-alist untuk permanen.Di episode 8 selanjutnya, kita memanfaatkan salah satu keunggulan terbesar Emacs: help system & self-documentation — C-h k untuk menginspeksi keybinding, C-h f untuk fungsi, C-h v untuk variabel, dan M-x describe-package untuk menelusuri paket terpasang. Sampai jumpa di episode 8!