comment supprimer les citations intelligentes dans le copier / coller?

13

Je copie du texte à partir de Google Chrome ou de PDF et je le colle dans Emacs.

Le texte original contient des citations intelligentes. Je ne veux pas de guillemets intelligents dans la sortie.

Existe-t-il un moyen, soit du côté Copie soit du côté Collage, de supprimer automatiquement les devis intelligents?

incandescentman
la source
Le même problème se produit lors de la copie à partir de divers éditeurs de texte sur OS X lorsque la préférence système "Utiliser des guillemets intelligents" est activée. Plus précisément, je l'ai rencontré lors de la copie d'Evernote vers un formulaire Web, qui a ensuite complètement supprimé tous les guillemets et les apostrophes "intelligents". La réponse acceptée a fourni une étape intermédiaire soignée pour résoudre ce problème.
TheBamf

Réponses:

14

Que diriez-vous:

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

Mettez cela dans votre ~/.emacset vous devriez pouvoir utiliser M-x replace-smart-quotespour corriger toutes les citations dans le tampon actuel ou la région sélectionnée.

Pour éviter de redémarrer Emacs pour que la ~/.emacsmodification prenne effet, déplacez votre curseur à la fin du defunavec M-C-eet évaluez-le C-x C-e.

Mise à jour du commentaire:

Pour le faire automatiquement lors du tirage (collage), vous pouvez faire quelque chose comme ceci:

(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 vous souhaitez ensuite le faire lorsque vous frappez C-y, vous pouvez le lier en utilisant:

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

C'est probablement une meilleure idée d'utiliser une autre clé cependant (peut-être C-c y) car cela utilisera certaines des yankfonctionnalités par défaut .

À M
la source
Merci. Mais qu'en est-il d'une fonction qui supprimera les guillemets lors du copier / coller? Un peu comme "Coller et mettre en forme le formatage" avec la suppression des citations intelligentes.
incandescentman
2
Vous pouvez aussi le faire, j'ai ajouté un exemple. N'oubliez pas d'accepter la réponse si elle résout votre problème.
Tom