summaryrefslogtreecommitdiff
path: root/lisp/progmodes/sql.el
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2016-11-15 20:51:20 +0100
committerMichael Albinus <michael.albinus@gmx.de>2016-11-15 20:51:20 +0100
commit52092f0a85ee77d0d996f6bb148b9dc5e70640db (patch)
tree8a21b51998a7ed7a5c40d26d6a908221a80e27ca /lisp/progmodes/sql.el
parent024d5b0c41aa9963f87c50372ecca2c3883918bb (diff)
parente6681b27394a23979c3aef3925f78ef9cd75bd32 (diff)
downloademacs-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.el18
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"