Можете ли вы создать новый буфер SQL в Emacs, если он уже существует?

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

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


person Ray    schedule 17.02.2009    source источник


Ответы (3)


Бег:

M-x sql-rename-buffer

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

*SQL*

Становится:

*SQL user/database*

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

M-x sql-mysql

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

person Sean Bright    schedule 17.02.2009

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

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

(Т.е. вам не нужен lambda).

person Jacob Gabrielson    schedule 20.02.2009

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


(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)))
person rzab    schedule 19.02.2009