Ich verwende sql-interactive-mode
und benötige ein Unternehmens-Backend, das SQL-Schlüsselwörter und vorzugsweise auch Spalten- / Tabellennamen der verwendeten Datenbank vervollständigt.
Zu meiner Überraschung gab es noch kein Backend für SQL, als ich mich nach einer Fertigstellung umsah. Ich habe diesen Ausschnitt gefunden , aber das hat nicht richtig funktioniert.
Es ist möglich, dass es noch nicht existiert, und ich könnte ein eigenes Backend für SQL erstellen. Es fällt mir jedoch schwer zu glauben, dass es für eine der gängigsten Sprachen kein Unternehmens-Backend gibt.
company-mode
sql-interactive-mode
sql-mode
ReneFroger
quelle
quelle
company-dabbrev
?company-keywords.el
, also zögern Sie nicht, einen Beitrag zu leisten! Und ja, das Dabbrev-Backend würde das (und alles andere in Ihrem Puffer)Antworten:
Ich hatte ein ähnliches Problem und beschloss, mein eigenes Backend zu erstellen. Eines der vorhandenen Backends (C ++?) Wurde als Vorlage verwendet und ich habe es geändert, um das neue Backend zu erstellen, das sich wie ein Wörterbuch verhält.
In meinem Setup werden SQLi-Puffer automatisch so benannt, dass sie mit der Datenbank übereinstimmen, mit der eine Verbindung hergestellt wird, z.
*DB:DBASE1DM*
. Das Backend enthält eine Liste für jede Datenbank mit den Schemas, Tabellen und Spalten. Wenn ich etwas vervollständigen möchte, wird der Name des Puffers verwendet, um die richtige Liste der Kandidaten für diese Datenbank zu erhalten.Dies hat den Nachteil, dass es sich nicht um eine intelligente Vervollständigung handelt und dass das Einfügen neuer Datenbanken oder das Vornehmen von Änderungen an vorhandenen Datenbanken ein manueller Vorgang ist. Ein paar Abfragen können verwendet werden, um die Daten zu sammeln, und dann ist es nicht sehr schwierig, sie in das für das Backend erforderliche Format zu massieren.
Die folgende Funktion behandelt das Herstellen einer Verbindung zu einer Datenbank und das Ändern der Namen der Puffer, um sie an die Datenbank anzupassen, mit der eine Verbindung besteht.
quelle
(add-to-list 'company-backends 'ry/company-sql) (add-to-list 'company-backends 'ry/company-sql-alist)
ichM-x sql-mysql
nach dem Ausprobieren eines Wortes den folgenden Fehler erhalten :Company: An error occurred in auto-begin Args out of range: "*SQL*", 4, -3
. Wie könnte ich diese Fehlermeldung interpretieren?*DB:
Suffix und umgebung aus dem Puffernamen zu entfernen , um den Datenbanknamen abzurufen, damit die richtige Liste der Vervollständigungen verwendet wird. Die Funktion geht davon aus, dass der Puffername für Vervollständigungen im Formular vorliegt*DB:ACCOUNTSDM*
. Der Teilstring würdeACCOUNTS
aus dem Puffernamen ziehen .mysql
anstattdb2
. Aber Ihr Beitrag wird sehr geschätzt, deshalb habe ich Ihre Antwort bestätigt. Dank dafür.