Thay đổi hành vi của RET (với thụt điện) để chỉ thụt dòng mới, không phải dòng trước đó


9

/programming/27077770/how-do-i-disable-electric-indent-on-ret-but-still-keep-other-electric-char character hỏi và trả lời cách vô hiệu hóa thụt điện khi nhấn RET . Tất cả các câu hỏi tương tự dường như cũng dừng lại ở "vô hiệu hóa chế độ thụt điện".

Ra khỏi hộp, RET thụt dòng trước và dòng mới. Đối với dòng mới, điều này có nghĩa là nó chỉ cần thêm đủ khoảng trắng để làm cho con trỏ xuất hiện ở vị trí chính xác.

Tôi thích phần thứ hai của hành vi nhưng không phải phần thứ nhất, tức là tôi không bao giờ muốn nó thụt dòng trước đó. Có cách nào để thay đổi nó để nó cho tôi đủ khoảng trắng trên dòng mới nhưng giữ cho dòng trước đó không bị ảnh hưởng?

Tôi thực sự không cần / muốn hầu hết điện. Một giải pháp liên quan đến việc tắt chế độ thụt điện nhưng bằng cách nào đó kích hoạt tính năng "thêm khoảng trắng cho các dòng mới" sẽ ổn với tôi.

Câu trả lời:


6

Tôi nghĩ bạn sẽ có được những gì bạn muốn với

(setq-default electric-indent-inhibit t)

Điều này có nghĩa là một biến cho các chế độ chính (chứ không phải cho người dùng), nhưng nó cũng sẽ quan tâm đến trường hợp sử dụng của bạn.


Tuyệt vời, cảm ơn bạn. Tôi tình cờ phát hiện ra biến này trong khi chọn lọc electric.elnhưng đặt nó sang một bên do tài liệu của nó: "Nếu không phải là con số không, thì việc giới thiệu lại không phù hợp với bộ đệm này." Giải thích của tôi về điều đó là nó chỉ đơn giản là vô hiệu hóa chế độ điện cho bộ đệm này ...
AnoE 10/03/2016

Điều quan trọng là nó nói về thụt lại , tức là thay đổi thụt dòng của một dòng hiện có, trái ngược với thụt dòng của một dòng mới.
Stefan

Tôi thích chế độ thụt điện khi tôi gõ một dấu ngoặc nhọn (cho dòng hiện tại). Có cách nào để giữ hành vi này trong khi ngăn dòng trước thay đổi khi tôi nhấn enter không?
Stanley Bak

1

Tôi thực sự không cần / muốn hầu hết điện. Một giải pháp liên quan đến việc tắt chế độ thụt điện nhưng bằng cách nào đó kích hoạt tính năng "thêm khoảng trắng cho các dòng mới" sẽ ổn với tôi.

Cách tiếp cận này có thể được quan tâm:

Trong các chế độ lập trình, tôi luôn muốn RETgọi indent-new-comment-linehoặc tương tự chế độ cụ thể của nó, luôn luôn có một ràng buộc mặc định M-j. Các chức năng này đảm nhiệm việc thụt lề và nhận xét tiếp tục khi bạn ở trong một.

(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))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.