2

私の典型的な emacs での sql-mode の使い方は次のとおりです。

を。foo.sql ファイルを開いて編集を開始する

b. sql-send-region のキー バインドを使用して実行することにします。

c. カスタム (db-connect) 関数を起動して、適切なデータベースに接続し、*SQL* バッファーを作成します。

ただし、foo.sql は、環境を更新してこの時点でそのようなバッファーが存在することを検出するために、バッファーで "mx sql-mode" を実行しない限り、*SQL* バッファーの存在を認識しません。カスタム db-connect 関数にコードを埋め込んで、sql-mode を使用してすべてのバッファにアクセスし、sql-buffer 変数を更新したいと考えています。いくつかのスタック オーバーフロー メンバーがこれまたは同様のことを以前に行ったに違いないと確信しています。

ありがとう、

SetJmp

4

2 に答える 2

4

ファイルをざっと見てみるとsql.el、コマンドが明らかになりましたsql-set-sqli-buffer-generally

これを処理する別の方法は、メジャー モード フックsql-bufferを呼び出して、 のバッファ ローカル バリアントを強制終了することです。kill-local-variable(そうすれば、すべての SQL バッファーが最新の SQL バッファーと通信するという効果が得られます。)

免責事項: 私は SQL や SQL モードについて何も知りません。Emacs 全般についてだけです。

于 2011-03-25T10:52:34.047 に答える
2

この小さなヘルパー関数を実装して、メジャーモードでバッファをフィルタリングしました

(defun buffer-mode (buffer-or-name)
  (with-current-buffer buffer-or-name major-mode))


(defun filter-buffers-by-mode (mode)
  (delq nil
        (mapcar
         (lambda (x) (and (eq (buffer-mode x) mode) x))
         (buffer-list))))

'sql-mode を引数として渡すと、開いているすべての SQL バッファのリストを取得できます。

于 2011-03-24T19:25:39.717 に答える