jak usunąć inteligentne cytaty w trybie kopiuj / wklej?

13

Kopiuję tekst z Google Chrome lub plików PDF i wklejam do Emacsa.

Oryginalny tekst zawiera inteligentne cytaty. Nie chcę inteligentnych cytatów w danych wyjściowych.

Czy istnieje sposób, po stronie kopiowania lub wklejania, aby automatycznie usunąć inteligentne cytaty?

żarnik
źródło
Ten sam problem występuje podczas kopiowania z różnych edytorów tekstowych w systemie OS X, gdy włączona jest preferencja systemowa „używaj inteligentnych cytatów”. W szczególności napotkałem to podczas kopiowania z Evernote do formularza internetowego, który następnie całkowicie usunął wszystkie „inteligentne” znaki cudzysłowu i apostrofy. Przyjęta odpowiedź stanowiła pośredni krok do rozwiązania tego problemu.
TheBamf,

Odpowiedzi:

14

Co powiesz na:

(defun replace-smart-quotes (beg end)
  "Replace 'smart quotes' in buffer or region with ascii quotes."
  (interactive "r")
  (format-replace-strings '(("\x201C" . "\"")
                            ("\x201D" . "\"")
                            ("\x2018" . "'")
                            ("\x2019" . "'"))
                          nil beg end))

Umieść to w swoim ~/.emacsi powinieneś być w stanie M-x replace-smart-quotesnaprawić wszystkie cytaty w bieżącym buforze lub wybranym regionie.

Aby uniknąć ponownego uruchamiania Emacs dla ~/.emacszmiany odniosły skutek, należy przesunąć kursor do końca defunz M-C-ei ocenić go C-x C-e.

Zaktualizuj ponownie komentarz:

Aby automatycznie to zrobić podczas szarpania (wklejania), możesz zrobić coś takiego:

(defun yank-and-replace-smart-quotes ()
  "Yank (paste) and replace smart quotes from the source with ascii quotes."
  (interactive)
  (yank)
  (replace-smart-quotes (mark) (point)))

Jeśli chcesz to zrobić po trafieniu C-y, możesz powiązać go za pomocą:

(global-set-key (kbd "C-y") 'yank-and-replace-smart-quotes)

Prawdopodobnie lepszym pomysłem jest jednak użycie innego klucza (być może C-c y), ponieważ spowoduje to użycie niektórych domyślnych yankfunkcji.

Tomek
źródło
Dzięki. Ale co z funkcją, która usunie cytaty podczas kopiowania / wklejania? Coś w stylu „Wklej i dopasuj formatowanie” z usuwaniem inteligentnych cytatów.
incandescentman
2
Ty też możesz to zrobić, dodałem przykład. Nie zapomnij przyjąć odpowiedzi, jeśli rozwiąże ona twój problem.
Tom