En mode console, coloration syntaxique peut se mettre en travers du chemin et générer des lignes entières d'"espaces" copiés dans le code sélectionné.
Je vérifie que c'est le coupable
Pour vérifier si c'est ce qui vous préoccupe :
- désactiver temporairement la coloration syntaxique avec
M-x global-font-lock-mode
.
- Essayez ensuite de copier-coller et voyez si vous pouvez toujours reproduire le problème.
- Une fois confirmé/infirmé, vous pouvez rétablir la coloration syntaxique avec la même commande.
Si la désactivation de la coloration syntaxique a résolu votre problème de copier/coller, vous pouvez lire ce qui suit pour résoudre définitivement le problème.
Pourquoi cela se produit-il ?
Ce qui déclenche le problème, c'est que vous avez défini une couleur d'arrière-plan pour certaines polices (souvent sur la page d'accueil). par défaut police). Par conséquent, emacs remplit l'arrière-plan de caractères vides afin de pouvoir "peindre" l'écran comme vous le souhaitiez, et toute action de copier-coller contiendra ces faux espaces blancs.
Comment résoudre ce problème ?
Vous devez vérifier votre visage personnalisations (pour par défaut vous pourriez utiliser la police 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, et c'est en fait la couleur de fond par défaut d'emacs si vous ne l'avez pas personnalisé.
Nous pouvons forcer l'arrière-plan à utiliser unspecified-bg
sur emacs commencer par ajouter ceci dans votre ~/.emacs
après toute génération automatique de custom-set-faces
bloc :
(unless window-system
(custom-set-faces
'(default ((t (:background "unspecified-bg"))))))
Ensuite, soit vous redémarrez votre emacs, soit M-x eval-region
sur ce bloc pour vérifier le résultat.
Accessoirement, vous récupérerez aussi toutes les astuces d'arrière-plan du terminal dans votre emacs (je pense à la transparence ou aux images de fond...).
REMARQUE : même avec cette astuce, vous pourriez avoir de mauvaises surprises avec des espaces blancs fantômes capturés dans certains textes spéciaux, qui obtiendraient une police mal mise en évidence. Dans ces cas, vous pouvez envisager d'utiliser la première astuce.
Plus d'explications sur le pourquoi de ce phénomène
Les terminaux ont une couleur d'arrière-plan qui leur est propre (certains terminaux permettent même d'afficher une image en arrière-plan ou d'être transparents). Ainsi, pour la console, il y a comme un rien couleur (voyez-le comme un canal alpha), et c'est la couleur par défaut de la console.
L'application console peut modifier la couleur de la police et de l'arrière-plan au moyen de séquences d'échappement ANSI.
Si vous demandez à emacs de changer la couleur d'arrière-plan, il devra peindre artificiellement l'écran avec des caractères à espaces blancs ayant leur propre couleur d'arrière-plan définie comme celle que vous avez choisie.
Lors de la sélection, vous utilisez souvent la fonctionnalité de copier-coller du terminal, qui ignore totalement l'application console que vous utilisez. Elle fait son travail en copiant-collant les caractères affichés à l'écran, et copiera donc les espaces blancs.
Notez que vous pouvez avoir une configuration qui permettra à votre application console de recevoir l'entrée de la souris et de gérer la sélection et le copier-coller. Mais ce n'est pas si courant et le Shell, qui est l'application la plus courante qui est active dans votre terminal ne supporte pas la souris.