Можете ли вы создать новый буфер SQL в Emacs, если он уже существует? - PullRequest
5 голосов
/ 17 февраля 2009

Допустим, у вас уже есть буфер * SQL *, открытый в Emacs, который связан с конкретным сервером и базой данных. Теперь вы намерены подключиться к другому серверу и базе данных, оставив при этом активным процесс буфера SQL.

Как именно вы можете создать новый * SQL * буферный процесс, не убивая ваш оригинальный SQL-буфер? Можно ли это сделать? Есть ли способ вместо этого изменить информацию о вашем соединении для существующего буфера?

Ответы [ 3 ]

8 голосов
/ 17 февраля 2009

Продолжительность:

M-x sql-rename-buffer

На подключенном буфере *SQL* будет переименовывать текущий буфер после текущего соединения. Итак:

*SQL*

становится:

*SQL user/database*

Затем вы можете сделать:

M-x sql-mysql

Или как вы предпочитаете БД - создать еще один буфер SQL.

2 голосов
/ 20 февраля 2009

В качестве небольшого упрощения вы можете просто сделать:

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

(т. Е. Вам не нужно lambda).

1 голос
/ 19 февраля 2009

Кроме того, если кому-то, как я, нравится другое представление связи, вот мой Вот как мои sql буферы назвали: "драйвер: // пользователь @ сервер / база данных"

<code>
(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 буферы, созданные в sql-interactive-mode, который запускает sql-interactive-mode-hook, поэтому нет необходимости запускать sql-rename-buffer вручную


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