diff options
author | Michael Albinus <michael.albinus@gmx.de> | 2016-11-15 20:51:20 +0100 |
---|---|---|
committer | Michael Albinus <michael.albinus@gmx.de> | 2016-11-15 20:51:20 +0100 |
commit | 52092f0a85ee77d0d996f6bb148b9dc5e70640db (patch) | |
tree | 8a21b51998a7ed7a5c40d26d6a908221a80e27ca /lisp/progmodes/sql.el | |
parent | 024d5b0c41aa9963f87c50372ecca2c3883918bb (diff) | |
parent | e6681b27394a23979c3aef3925f78ef9cd75bd32 (diff) | |
download | emacs-52092f0a85ee77d0d996f6bb148b9dc5e70640db.tar.gz |
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Diffstat (limited to 'lisp/progmodes/sql.el')
-rw-r--r-- | lisp/progmodes/sql.el | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el index a11d4560aed..4d0bed77d56 100644 --- a/lisp/progmodes/sql.el +++ b/lisp/progmodes/sql.el @@ -1072,14 +1072,26 @@ add your name with a \"-U\" prefix (such as \"-Umark\") to the list." :version "20.8" :group 'SQL) -(defcustom sql-postgres-login-params `((user :default ,(user-login-name)) - (database :default ,(user-login-name)) - server) +(defcustom sql-postgres-login-params + `((user :default ,(user-login-name)) + (database :default ,(user-login-name) + :completion ,(completion-table-dynamic + (lambda (_) (sql-postgres-list-databases)))) + server) "List of login parameters needed to connect to Postgres." :type 'sql-login-params :version "24.1" :group 'SQL) +(defun sql-postgres-list-databases () + "Return a list of available PostgreSQL databases." + (when (executable-find sql-postgres-program) + (let ((res '())) + (dolist (row (process-lines sql-postgres-program "-ltX")) + (when (string-match "^ \\([[:alnum:]-_]+\\) +|.*" row) + (push (match-string 1 row) res))) + (nreverse res)))) + ;; Customization for Interbase (defcustom sql-interbase-program "isql" |