Kiedy kopiuję tekst nie-ascii z Windows i wklejam do Emacsa, pojawia się on jako sekwencja ósemkowa. Na przykład, jeśli wkleję ä do Emacsa, pojawi się on jako \ 344.
Mógłbym wpisać Cq 344, aby odzyskać ä z powrotem w Emacsie. To denerwujące, ale jest do zaakceptowania, jeśli jest tylko jedna postać. Ale jeśli jest wiele znaków zamienionych w ósemkowe sekwencje specjalne, wygodnie byłoby uruchomić polecenie w regionie, aby przekonwertować wszystko w środku. Czy jest już takie polecenie? Jeśli nie, jak napisałbyś funkcję, aby to zrobić?
[Ustawiam mój domyślny system kodowania na utf-8 w moim pliku .emacs i używam tego samego pliku .emacs w systemie Windows i Linux. Ale problem występuje tylko podczas kopiowania z aplikacji Windows do Emacsa. Kopiowanie z Emacsa do innej aplikacji Windows działa dobrze.]
źródło
revert-buffer-with-coding-system
(zobacz dokumentację). Emacs pokazuje znaki w ten sposób, ponieważ skopiowałeś je ze środowiska, które było w innym systemie kodowania (zakładając, że ANSI z tak zwanymi wysokimi znakami ASCII używanymi do renderowania alfabetu łacińskiego za pomocą znaków diakrytycznych), ale twój bufor musi używać czegoś takiego jak UTF-8 (dla które znaki ASCII z zestawem wysokich bitów nie mają znaczenia, tzn. są nieprawidłowe).set-clipboard-coding-system
. SpróbujC-h a coding-system
sprawdzić, jakie inne funkcje w tej grupie są dostępne.emacs -Q
, a jeśli widzi ten problem istnieje jużM-x report-emacs-bug
.insert-file-literally
(i było już za późno, aby cofnąć lub usunąć / ponownie wstawić plik).Odpowiedzi:
Okazuje się, że obrażająca część mojego pliku .emacs była
(set-selection-coding-system 'utf-8)
. Po usunięciu tej linii Emacs zachowywał się zgodnie z oczekiwaniami.źródło
Raz to zrobił:
z misc-utils.el na https://launchpad.net/sx-emacs-werkstatt
źródło