summaryrefslogtreecommitdiff
path: root/lisp/progmodes/sql.el
diff options
context:
space:
mode:
authorSimen Heggestøyl <simenheg@gmail.com>2016-11-15 19:08:22 +0100
committerSimen Heggestøyl <simenheg@gmail.com>2016-11-15 19:08:22 +0100
commit4e2ef64449ce5dc91e2d533c0fbaaf50b0e92f3b (patch)
tree89e0591c9a02a03abfd2acdbcf5166bc490dbde4 /lisp/progmodes/sql.el
parent8663fad0a70e60e130ae4cd0529ead66fbad2250 (diff)
downloademacs-4e2ef64449ce5dc91e2d533c0fbaaf50b0e92f3b.tar.gz
Complete the name of PostgreSQL databases
* lisp/progmodes/sql.el (sql-postgres-login-params): Complete database name. (sql-postgres-list-databases): New function returning a list of available PostgreSQL databases. * test/lisp/progmodes/sql-tests.el: New file with tests for sql.el.
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"