Let's say you have a *SQL* buffer already open in Emacs that is connected to a specific server and database. Now, your intention is to connect to a different server and database while keeping your other SQL buffer process active.
How exactly can you create a new *SQL* buffer process without killing your original SQL buffer? Can this be done? Is there a way to instead change your connection info for the existing buffer?
-
Running:
M-x sql-rename-buffer
On a connected
*SQL*
buffer will rename the current buffer after the current connection. So:*SQL*
Becomes:
*SQL user/database*
You can then do:
M-x sql-mysql
Or whatever your flavor of DB is to create another SQL buffer.
-
In addition, if someone like me likes another representation of the connection, here is mine. This is how my sql buffers named: "driver://user@server/database"
*SQL* buffers created in sql-interactive-mode, which runs sql-interactive-mode-hook, so there is no need to run sql-rename-buffer manually(defun sql-make-alternate-buffer-name () (concat (concat (prin1-to-string sql-interactive-product) "://") (if (string= "" sql-user) (if (string= "" (user-login-name)) () (concat (user-login-name) "/")) (concat sql-user "@")) (concat sql-server "/") (if (string= "" sql-database) (if (string= "" sql-server) (system-name) sql-server) sql-database)))
(add-hook 'sql-interactive-mode-hook (lambda () (sql-rename-buffer)))
-
As a slight simplification, you can just do:
(add-hook 'sql-interactive-mode-hook 'sql-rename-buffer)
(I.e., you don't need the
lambda
). -
@Jacob Sorry, cannot comment yet.
Yes, in this case lambda is not necessary.
But i use it all the time with add-hook, so i can specify arguments to the hook function.
add-hook always calls function (our lambda) without arguments.
0 comments:
Post a Comment