En mode console, mise en évidence de la syntaxe pouvez gêner et générer des lignes entières "d'espaces" en cours de copie dans le code sélectionné.
Vérifier c'est le coupable
Pour vérifier si c'est ce qui vous tourmente:
- désactiver la coloration syntaxique temporairement avec
M-x global-font-lock-mode
.
- Ensuite, essayez de copier-coller et voyez si vous pouvez toujours reproduire le problème.
- Une fois confirmée / infirmée, vous pouvez définir la surbrillance de la syntaxe avec la même commande.
Si la désactivation de la mise en évidence de la syntaxe corrige votre problème de copier / coller, vous voudrez peut-être lire les informations suivantes pour résoudre ce problème de manière définitive.
Pourquoi est-ce que ça se passe?
Le problème est que vous avez défini une couleur d’arrière-plan pour certaines polices (souvent sur le fond). défaut Police de caractère). En conséquence, emacs remplit l’arrière-plan avec des caractères vides pour pouvoir "peindre" l’écran comme vous le souhaitez et toute action de copier-coller contient ces espaces blancs parasites.
Comment résoudre ce problème?
Vous devriez vérifier votre visage personnalisations (pour défaut police que vous pourriez utiliser M-x customize-face <RET> default <RET>
) et si vous avez un Couleur de fond différent de unspecified-bg
alors c'est le coupable. unspecified-bg
est une sorte de couleur de fond transparente, qui est en fait la couleur de fond par défaut d’emacs si vous ne la personnalisez pas.
Nous pouvons forcer le fond à utiliser unspecified-bg
sur emacs commencent par l'ajouter en vous ~/.emacs
, après toute génération automatique custom-set-faces
bloc:
(unless window-system
(custom-set-faces
'(default ((t (:background "unspecified-bg"))))))
Ensuite, redémarrez votre emacs ou M-x eval-region
sur ce bloc pour vérifier le résultat.
En guise de remarque, vous récupérerez également les trucs d’arrière-plan d’un terminal sophistiqué dans votre emacs (je pense à la transparence ou aux images d’arrière-plan ...).
NOTE: même avec cela, vous pourriez avoir une mauvaise surprise avec des espaces blancs fantômes capturés dans un texte spécial, ce qui donnerait une police mal mise en surbrillance. Dans ces cas, vous pourriez envisager d'utiliser le premier truc.
Plus d'explications sur ce qui se passe
Les terminaux ont une couleur de fond qui leur est propre (certains terminaux peuvent même permettre d'afficher une image en tant qu'arrière-plan ou même d'être transparent).
Donc, pour la console, il y a comme un rien de couleur (voyez-le comme un canal alpha), et c'est la couleur par défaut pour la console.
L'application console peut changer à la fois la couleur de la police et l'arrière-plan grâce aux séquences d'échappement ANSI.
Si vous demandez à emacs de changer la couleur d'arrière-plan, il vous faudra peindre artificiellement l'écran avec des caractères d'espaces blancs ayant leur propre couleur d'arrière-plan définie sur ce que vous avez choisi.
Lors de la sélection, vous utilisez souvent la fonctionnalité de copier-coller du terminal, qui ignore totalement l'application de la console que vous utilisez. Il le fait en copiant-collant tous les caractères présents à l'écran et copiera ainsi les espaces blancs.
Notez que vous pouvez avoir une configuration qui permettra à votre application console de recevoir les entrées de la souris et de gérer la sélection et le copier-coller. Mais ce n'est pas si commun et le shell, qui est l'application la plus courante active dans votre terminal, ne supporte pas la souris.
Does it work: true
. Mac OS X 10.8.5, emacs (22.1.1) par défaut sans une seule personnalisation, iTerm2 2.0, version 4.3.30.