Ubah perilaku RET (dengan indentasi listrik) menjadi hanya indentasi baris baru, bukan yang sebelumnya


10

/programming/27077770/how-do-i-disable-electric-indent-on-ret-but-still-keep-other-electric-characters bertanya dan menjawab cara menonaktifkan indentasi listrik saat menekan RET . Semua pertanyaan serupa juga tampaknya berhenti pada "nonaktifkan mode indentasi listrik".

Out-of-the-box, RET indentasi baris sebelumnya dan baris baru. Untuk baris baru, ini berarti bahwa ia hanya menambahkan spasi yang cukup untuk membuat kursor muncul di posisi yang benar.

Saya suka bagian kedua dari perilaku tetapi bukan yang pertama, yaitu saya tidak pernah ingin membuat indentasi pada baris sebelumnya. Apakah ada cara untuk mengubahnya sehingga memberi saya ruang kosong yang cukup pada baris baru tetapi menjaga baris sebelumnya tidak tersentuh?

Saya sebenarnya tidak membutuhkan / menginginkan sebagian besar listrik. Solusi yang melibatkan mematikan listrik-indent-mode tetapi entah bagaimana mengaktifkan fitur "tambahkan spasi untuk baris baru" akan baik-baik saja dengan saya.

Jawaban:


6

Saya pikir Anda akan mendapatkan apa yang Anda inginkan

(setq-default electric-indent-inhibit t)

Ini dimaksudkan sebagai variabel untuk mode-utama (bukan untuk pengguna), tetapi harus menangani kasus penggunaan Anda juga.


Luarbiasa, terimakasih. Saya menemukan variabel ini ketika memilah-milah electric.eltetapi menyisihkannya karena dokumentasinya: "Jika tidak ada, reindentasi tidak sesuai untuk buffer ini." Interpretasi saya tentang itu adalah bahwa itu hanya akan menonaktifkan mode-listrik untuk buffer ini ...
AnoE

Kuncinya adalah ia berbicara tentang indentasi ulang , yaitu mengubah indentasi dari baris yang ada, yang bertentangan dengan indentasi dari baris baru.
Stefan

Saya suka mode indentasi listrik ketika saya mengetik kurung kurawal (untuk saluran saat ini). Adakah cara untuk menjaga perilaku ini sambil mencegah baris sebelumnya berubah ketika saya menekan enter?
Stanley Bak

1

Saya sebenarnya tidak membutuhkan / menginginkan sebagian besar listrik. Solusi yang melibatkan mematikan listrik-indent-mode tetapi entah bagaimana mengaktifkan fitur "tambahkan spasi untuk baris baru" akan baik-baik saja dengan saya.

Pendekatan ini mungkin menarik:

Dalam mode pemrograman saya selalu ingin RETmemohon indent-new-comment-lineatau analog mode khusus, yang selalu memiliki ikatan standar M-j. Fungsi-fungsi ini menangani lekukan, dan juga komentar kelanjutan ketika Anda berada di dalam satu.

(defun my-coding-config ()
  ;; ...
  (local-set-key (kbd "RET") (key-binding (kbd "M-j")))
  (local-set-key (kbd "<S-return>") 'newline)
  )

(mapc
 (lambda (language-mode-hook)
   (add-hook language-mode-hook 'my-coding-config))
 '(prog-mode-hook
   ;; plus anything not derived from prog-mode:
   inferior-emacs-lisp-mode-hook
   css-mode-hook
   python-mode-hook))

(add-hook 'js-mode-hook 'my-js-mode-hook)
(defun my-js-mode-hook ()
  ;; Fix M-j behaviour in block comments in js-mode
  (setq-local comment-multi-line t)
  (local-set-key [remap indent-new-comment-line] 'c-indent-new-comment-line))
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.