Estoy usando company-mode
para fines de finalización. Pero de alguna manera, algún paquete siempre llega auto-complete
, lo que colisiona company-mode
, ya que ambos ofrecen una ventana emergente con candidatos de finalización. Quiero poner en la lista negra auto-complete
, ya que no lo necesito. ¿Cómo puedo hacer eso? Sé que hay una variable package-pinned-package
, pero no puedo ver cómo poner en la lista negra un paquete, ¿tal vez usando un archivo no válido?
8
autocomplete-mode
que sea un problema, primero debe habilitarse, lo mismo ocurrecompany-mode
.autocomplete
esté activo en ningún búfer dondecompany-mode
esté activo. ¿Quizás necesita deshabilitar manualmenteautocomplete
en*mode-hook
cualquiera de los modos principales afectados?~/.emacs.d
de algo a lo largo de las líneas de(auto-complete-mode)
funcionarían.Respuestas:
No sé cómo incluir en la lista negra la instalación de un paquete. Pero es fácil evitar que se cargue . Si coloca
(provide 'auto-complete)
su archivo init, cualquier paquete que intente cargarauto-complete
se le informará que ya está cargado.(Más precisamente, esto se encarga de las bibliotecas que se cargan
auto-complete
de la manera normal, conrequire
. Si hay algún código que se usaload
directamente (lo que sería inusual), debe poner esto en un archivo separado llamadoauto-complete.el
).Por supuesto, si el paquete lo requiere
auto-complete
, probablemente sea porque lo usará. Pero tal vez un paquete solo declara fuentes de autocompletado y, de lo contrario, tiene una funcionalidad útil. Para que pueda hacer la parte que no desea un no-op. Dependiendo de lo que haga el paquete, es posible que necesite otras definiciones similares.fuente
Lo que @Gilles escribió es la respuesta general que también habría dado.
Pero tenga en cuenta que el uso
provide
no no evitar que el código se cargue el paquete. Impide que el código cargue el paquete solo porrequire
. Si el código usaload
, etc.load-library
,load-file
entonces este truco no tiene efecto.Si realmente necesita evitar que el código cargue una biblioteca determinada, un mejor enfoque es proporcionar una biblioteca proxy que se cargue en su lugar. Por ejemplo, en un directorio que viene antes en su
load-path
, agregue un falsoauto-complete.el
que no hace nada excepto(provide 'auto-complete)
.De esa manera, cada vez que el código intente cargar la biblioteca usando
load
oload-library
su biblioteca proxy se cargará en lugar de la que está evitando.Sin embargo, si el código usa
load-file
y proporciona la dirección absoluta del archivo de la biblioteca que está tratando de evitar, ese archivo se cargará. No veo una buena solución para ese caso (excepto para eliminar o reemplazar ese archivo).fuente