Sebagai seorang programmer, saya ingin melihat penggaris pada kolom tertentu (biasanya 80), keduanya jadi saya melihat ketika saya melewati kolom itu, tetapi juga untuk melihat seberapa dekat saya sampai sehingga saya dapat memformat ulang kode saya lebih awal.
Opsi yang saya temukan sejauh ini semuanya tidak mencapai tujuan ini:
whitespace-mode
,,,column-enforce-mode
dancolumn-marker
hanya menyorot setiap baris setelah teks di baris telah melewatifill-column
. Saya ingin melihat ketika saya semakin dekat ke kolom, bukan hanya ketika saya menyeberanginya.fill-column-indicator
akan menjadi solusi yang baik, kecuali rusakauto-complete-mode
,company-mode
,avy
, dan banyak lagi. Ini adalah masalah yang tampaknya sulit untuk memperbaiki, masing-masing membutuhkan sebuah solusi individu - misalnya, melihat yangcompany-mode
masalah dan yangauto-complete-mode
masalah , yang terakhir lebih dua tahun).
Apakah ada alternatif yang lebih baik?
display
font-lock
programming
Jorgen Schäfer
sumber
sumber
(set-window-margins nil 0 (max (- (window-width) 80) 0))
Jadi, jika Anda memiliki jendela lebar 120 karakter, itu akan mengecilkan ruang Anda harus benar-benar menampilkan kode menjadi 80 karakter. Dengan cara ini tidak akan mengacaukan konfigurasi jendela Anda dan Anda dapat mengaktifkannya jika Anda mau. Jika Anda memiliki pinggiran, sebenarnya akan ada garis yang ditarik pada 80 kolom.Jawaban:
fill-column-indicator
adalah solusi yang paling matang, dan jika Anda menemukan kode berbasis overlay yang bertentangan, Anda dapat menambahkan kode untuk ditangguhkanfci-mode
saat kode yang bertentangan aktif. Misalnya, kode berikut membuatnya berfungsi denganauto-complete
:sumber
company-mode
.popup-create
danpopup-delete
- tergantung pada kasus penggunaan Anda, Anda mungkin perlu menyarankan fungsi yang berbeda.Berikut adalah salah satu opsi yang lebih kuat, hampir tidak merusak apa pun (kadang-kadang mode perusahaan menjadi pengecualian yang patut diperhatikan), tetapi tidak senyaman itu
fill-column-indicator
.Gunakan format baris-header untuk menandai kolom ke-80 pada header.
Sesuatu seperti yang berikut ini sudah cukup:
Anda harus mengubah jumlah spasi dalam string pertama tergantung pada ukuran pinggiran kiri Anda. Tapi selain itu, ini harus bekerja dengan cukup baik. Ini tidak senyaman penggaris di buffer aktual, tetapi membantu.
Anda juga dapat mengaturnya agar berlaku hanya pada buffer pemrograman.
Hasil:
Anda harus mendapatkan sesuatu seperti berikut ini (baris pertama sebenarnya tidak ada di buffer, tetapi di header).
sumber
M-x ruler-mode
.Setelah banyak penderitaan karena berbagai bug
fill-column-indicator
memperkenalkan, saya menghilangkannya dari konfigurasi saya untuk selamanya.Apa yang saya gunakan saat ini adalah fungsi bawaan Emacs untuk menyoroti garis yang terlalu panjang. Ini bahkan terlihat lebih baik, saya tidak akan mengaktifkan
fill-column-indicator
sekarang bahkan jika itu bebas bug.Sebagai permulaan, Anda dapat mengambil pengaturan saya:
Kemudian aktifkan di tempat yang Anda inginkan. Saya menggunakannya hanya dalam konteks pemrograman:
sumber
Emacs 27 akan mendukung indikator kolom pengisian secara native melalui mode minor buffer-local
display-fill-column-indicator-mode
dan mitra globalnyaglobal-display-fill-column-indicator-mode
.Ini dia sedang beraksi:
Quoth
(emacs) Displaying Boundaries
:sumber
Halaman EmacsWiki ini memiliki banyak informasi tentang berbagai cara untuk menandai kolom tertentu atau memberi tahu Anda ketika Anda melewatinya.
Yang saya gunakan adalah Mode Line Position .
Tetapi yang lain termasuk menunjukkan garis vertikal pada kolom ( Penanda Kolom , Indikator Isi-Kolom ) dan menggunakan mode spasi untuk menyorot teks yang melewati kolom.
(Jika Anda membutuhkan baris yang berada jauh di sebelah kanan semua teks di semua baris, Anda selalu dapat mengaktifkannya
picture-mode
, tetapi itu mungkin berguna di sini hanya sebagai solusi sementara.)Lihat juga Temukan Garis Panjang untuk cara menemukan garis panjang sesuai permintaan.
sumber
Tidak persis apa yang Anda inginkan, tetapi penguasa seperti @ Malabarba ♦ akan membuang-buang ruang, berikut ini solusi yang lebih baik:
Ada paket bawaan
emacs-goodies-el
(merekomendasikan untuk menginstalnya di terminal) bernama highlight-beyond-fill-column.el , tambahkan ini ke Anda.emacs
atauinit.el
:Teks lebih dari
fill-column
80 dalam potongan akan disorot dengan warnared
. Anda dapat mengatur wajah sesuka Anda.sumber
Karena
fill-column-indicator
cukup berat, solusi ini menunjukkan karakter di sebelah kanan garis saat ini.Jadi saat Anda mengetik, Anda dapat melihat batas garis sebelum Anda melampauinya.
Ini mendefinisikan mode minor
hl-line-margin-mode
:Jika Anda menggunakan
evil-mode
dan ingin membatasi ini untuk memasukkan mode Anda dapat menambahkan kait berikut:sumber