2014-12-31 11 views
7

Począwszy od Emacs 24.4, kiedy wpisuję linię zaczynającą się od spacji (typowy sposób na oznacza nowy akapit) i na jej końcu uderzam POWRÓT, biała przestrzeń znika. Ten problem pojawia się również w przypadku "emacs -Q". Mój plik .emacs używa raczej zwykły tekst trybu schematu akapity, mianowicieEmacs wersja 24.4: Nowa nieprzyjemna utrata wcięcia po trafieniu POWRÓT

(setq default-major-mode 'text-mode) 
(add-hook 'text-mode-hook 'paragraph-indent-minor-mode) 

który pracuje bez problemów, przez kilkanaście lat. Błąd pojawił się, gdy zainstalowałem aktualną wersję (24.4).

Zasadniczo wpisać:

This is a line beginning with four spaces 

i tak szybko, jak typ zwracany mój wiersz natychmiast staje

This is a line beginning with four spaces 

Oznacza to, że wcięcie znika. Byłbym wdzięczny za radę. Czy powinienem wysłać błąd?

+2

Absolutnie' Mx raportu-emacs-bug'. – phils

+0

Prawidłowo zidentyfikowałeś tę irytację, er, nową, błyszczącą funkcję! Robię to w moim pliku init: '(when (fboundp 'electric-indent-mode) (electric-indent-mode -1))'. To działa z każdą wersją Emacsa. – Drew

Odpowiedz

5

W Emacs 24,4, electric-indent-mode jest domyślnie włączony. Wygląda na to, że to właśnie powoduje ten problem w połączeniu z paragraph-indent-minor-mode. Można tego uniknąć, wyłączając tryb wcięcia elektrycznego wszędzie (M-x electric-indent-mode) lub tylko w buforze lokalnym (M-x electric-indent-local-mode).

1

Następujące osoby postarają się, aby electric-indent-mode nie nadepnęło na palce użytkownika paragraph-indent-minor-mode. Nie stara się być solidna we wszystkich sytuacjach, ale podejrzewam, że jest w zupełności wystarczająca w twojej sytuacji.

(defvar-local my-local-electric-indent-status :unknown) 

(defun my-local-electric-indent-disable() 
    "Make `electric-indent-mode' ineffective in the current buffer." 
    (setq my-local-electric-indent-status electric-indent-mode) 
    (electric-indent-local-mode -1)) 

(defun my-local-electric-indent-restore() 
    "Restore original status of `electric-indent-mode' in the current buffer." 
    (unless (eq my-local-electric-indent-status :unknown) 
    (electric-indent-local-mode my-local-electric-indent-status))) 

(add-hook 'paragraph-indent-minor-mode-on-hook #'my-local-electric-indent-disable) 
(add-hook 'paragraph-indent-minor-mode-off-hook #'my-local-electric-indent-restore) 

Jeśli nie działa co najmniej Emacs 24.3, wymienić defvar-local z:

(defvar my-local-electric-indent-status :unknown) 
(make-variable-buffer-local 'my-local-electric-indent-status) 
-1

;; (global-set-key "em \" „nowej linii) ;; dla emacs 23

global-set-key "em \" „elektrycznym nowalinia-a-może-indent) ;; dla emacs 24

Powiązane problemy