¿Cómo eliminar las comillas inteligentes en copiar / pegar?

13

Estoy copiando texto de Google Chrome o PDF, y pegando en Emacs.

El texto original tiene citas inteligentes. No quiero citas inteligentes en la salida.

¿Hay alguna manera, ya sea en el lado de Copia o en el lado de Pegado, para eliminar automáticamente las comillas inteligentes?

hombre incandescente
fuente
El mismo problema se produce al copiar desde varios editores de texto en OS X cuando la preferencia del sistema "usar comillas inteligentes" está habilitada. Específicamente, me encontré con esto al copiar de Evernote a un formulario web, que luego eliminó todas las comillas y apóstrofes "inteligentes" por completo. La respuesta aceptada proporcionó un paso intermedio ordenado para resolver esto.
TheBamf

Respuestas:

14

Qué tal si:

(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))

Pon eso en tu ~/.emacsy deberías poder usarlo M-x replace-smart-quotespara arreglar todas las citas en el búfer actual o en la región seleccionada.

Para evitar reiniciar Emacs para que el ~/.emacscambio surta efecto, mueva el cursor al final de defuncon M-C-ey evalúelo C-x C-e.

Actualizar re comentario:

Para hacer esto automáticamente al tirar (pegar), puede hacer algo como lo siguiente:

(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)))

Si luego quieres hacer eso cuando golpeas C-y, puedes vincularlo usando:

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

Sin embargo, probablemente sea una mejor idea usar otra clave (tal vez C-c y) ya que esto usará algunas de las yankfunciones predeterminadas .

Tom
fuente
Gracias. Pero, ¿qué pasa con una función que eliminará las comillas durante copiar / pegar? Algo así como "Pegar y unir formato" con la eliminación de comillas inteligentes.
incandescentman
2
Puedes hacer eso también, he agregado un ejemplo. No olvide aceptar la respuesta si resuelve su problema.
Tom