Ich benutze company-mode
für Vervollständigungszwecke. Aber irgendwie zieht sich auch immer ein Paket zusammen auto-complete
, das kollidiert company-mode
, da beide ein Popup mit Abschlusskandidaten anbieten. Ich möchte auf die schwarze Liste setzen auto-complete
, da ich es nicht brauche. Wie kann ich das machen? Ich weiß, dass es eine Variable gibt package-pinned-package
, aber ich kann nicht sehen, wie ein Paket auf die schwarze Liste gesetzt wird - möglicherweise mithilfe eines ungültigen Archivs?
8
autocomplete-mode
ein Problem zu sein, muss es zuerst aktiviert werden. Gleiches gilt fürcompany-mode
.autocomplete
es in keinem Puffer aktiv ist, in demcompany-mode
es aktiv ist. Möglicherweise müssen Sieautocomplete
den*mode-hook
betroffenen Hauptmodus manuell deaktivieren ?~/.emacs.d
nach etwas in der Art von(auto-complete-mode)
würde funktionieren.Antworten:
Ich weiß nicht, wie ich die Installation eines Pakets auf die schwarze Liste setzen soll. Es ist jedoch leicht zu verhindern, dass es geladen wird . Wenn Sie
(provide 'auto-complete)
Ihre Init-Datei einfügen, wird jedem Paket, das versucht zu ladenauto-complete
, mitgeteilt, dass es bereits geladen ist.(Genauer gesagt, dies kümmert sich um Bibliotheken,
auto-complete
die auf normale Weise mit geladen werdenrequire
. Wenn es einen Code gibt, derload
direkt verwendet wird (was ungewöhnlich wäre), müssen Sie dies in eine separate Datei mit dem Namenauto-complete.el
.)Wenn das Paket dies erfordert
auto-complete
, liegt es wahrscheinlich daran, dass es verwendet wird. Aber vielleicht deklariert ein Paket nur Quellen für die automatische Vervollständigung und verfügt ansonsten über nützliche Funktionen. So können Sie den Teil machen, dass Sie kein No-Op wollen. Je nachdem, was das Paket tut, benötigen Sie möglicherweise andere ähnliche Definitionen.quelle
Was @ Gilles schrieb, ist die allgemeine Antwort, die ich auch gegeben hätte.
Aber beachten Sie, dass die Verwendung
provide
nicht nicht verhindern Code aus dem Paket zu laden. Es verhindert, dass Code das Paket nur von lädtrequire
. Wenn Code usw. verwendetload
,load-library
hatload-file
dieser Trick keine Auswirkung.Wenn Sie wirklich verhindern müssen, dass Code eine bestimmte Bibliothek lädt, ist es besser, eine Proxy-Bibliothek bereitzustellen, die stattdessen geladen wird. Fügen Sie beispielsweise in einem Verzeichnis, das früher in Ihrem Verzeichnis vorhanden ist,
load-path
eine Fälschung hinzuauto-complete.el
, die nichts anderes tut als(provide 'auto-complete)
.Auf diese Weise wird immer dann, wenn Code versucht, die Bibliothek mit zu laden,
load
oderload-library
Ihre Proxy-Bibliothek anstelle der von Ihnen vermiedenen geladen.Wenn der Code jedoch
load-file
die absolute Adresse der Datei der Bibliothek verwendet und bereitstellt, die Sie vermeiden möchten, wird diese Datei geladen. Ich sehe keine gute Lösung für diesen Fall (außer um diese Datei zu entfernen oder zu ersetzen).quelle