J'utilise à company-mode
des fins d'achèvement. Mais d'une manière ou d'une autre, certains packages sont toujours intégrés auto-complete
, ce qui entre en collision company-mode
, car les deux offrent une fenêtre contextuelle avec les candidats à l'achèvement. Je veux mettre sur liste noire auto-complete
, car je n'en ai pas besoin. Comment puis je faire ça? Je sais qu'il y a une variable package-pinned-package
, mais je ne vois pas comment mettre un paquet sur liste noire - peut-être en utilisant une archive invalide?
8
autocomplete-mode
être un problème, il doit d'abord être activé, il en va de mêmecompany-mode
.autocomplete
être actif dans un tampon où ilcompany-mode
est actif. Vous devez peut-être désactiver manuellementautocomplete
l'*mode-hook
un des principaux modes concernés?~/.emacs.d
de quelque chose dans le sens de(auto-complete-mode)
cela fonctionneraient.Réponses:
Je ne sais pas comment mettre sur liste noire l'installation d'un paquet. Mais il est facile de l'empêcher de se charger . Si vous placez
(provide 'auto-complete)
votre fichier init, alors tout paquet qui tentera de se chargerauto-complete
sera informé qu'il est déjà chargé.(Plus précisément, cela prend en charge les bibliothèques qui se chargent
auto-complete
normalement, avecrequire
. S'il y a du code qui utiliseload
directement (ce qui serait inhabituel), vous devez le mettre dans un fichier séparé appeléauto-complete.el
.)Bien sûr, si le package l'exige
auto-complete
, c'est probablement parce qu'il l'utilisera. Mais peut-être qu'un paquet ne déclare que les sources de saisie semi-automatique et a des fonctionnalités utiles sinon. Ainsi, vous pouvez faire la partie que vous ne voulez pas opérer. Selon ce que fait le package, vous devrez peut-être d'autres définitions similaires.la source
Ce que @Gilles a écrit est la réponse générale que j'aurais aussi donnée.
Mais notez que l'utilisation
provide
n'empêche pas le code de charger le package. Il empêche le code de charger le package uniquement parrequire
. Si le code utiliseload
,load-library
,load-file
etc. alors cette astuce n'a aucun effet.Si vous devez vraiment empêcher le code de charger une bibliothèque donnée, une meilleure approche consiste à fournir une bibliothèque proxy qui est chargée à sa place. Par exemple, dans un répertoire qui vient plus tôt dans votre
load-path
, ajoutez un fauxauto-complete.el
qui ne fait rien sauf(provide 'auto-complete)
.De cette façon, chaque fois que le code essaie de charger la bibliothèque à l'aide de
load
ouload-library
votre bibliothèque proxy sera chargée au lieu de celle que vous évitez.Cependant, si le code utilise
load-file
et fournit l'adresse absolue du fichier de la bibliothèque que vous essayez d'éviter, ce fichier sera chargé. Je ne vois pas de bonne solution pour ce cas (sauf pour supprimer ou remplacer ce fichier).la source