5

假设您已经在 Emacs 中打开了一个 *SQL* 缓冲区,该缓冲区连接到特定的服务器和数据库。现在,您的意图是连接到不同的服务器和数据库,同时保持其他 SQL 缓冲进程处于活动状态。

如何在不杀死原始 SQL 缓冲区的情况下创建新的 *SQL* 缓冲区进程?这可以做到吗?有没有办法改变现有缓冲区的连接信息?

4

3 回答 3

8

跑步:

M-x sql-rename-buffer

在连接*SQL*的缓冲区上,将在当前连接之后重命名当前缓冲区。所以:

*SQL*

变成:

*SQL user/database*

然后你可以这样做:

M-x sql-mysql

或者无论您使用何种 DB 来创建另一个 SQL 缓冲区。

于 2009-02-17T19:29:34.277 回答
2

作为一个小小的简化,你可以这样做:

(add-hook 'sql-interactive-mode-hook 'sql-rename-buffer)

(即,您不需要lambda)。

于 2009-02-20T20:38:33.403 回答
1

此外,如果像我这样的人喜欢这种连接的另一种表示,这是我的。这就是我的 sql 缓冲区命名的方式:“driver://user@server/database”


(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)))

sql-interactive-mode中创建的SQL buffers,运行sql-interactive-mode-hook,所以不需要手动运行sql-rename-buffer


(add-hook 'sql-interactive-mode-hook
    (lambda () (sql-rename-buffer)))
于 2009-02-19T17:21:28.430 回答