emacsでのSQLモードの一般的な使用方法は次のとおりです。Emacs:すべてのsql-modeバッファーを訪ねて適切なsqlバッファーを設定する方法
a。 foo.sqlファイルを開いて編集を開始する
b。 sql-send-regionのキーバインディングを使用して実行することを決定します。
c。私のカスタム(db-connect)関数を起動して適切なデータベースに接続し、* SQL *バッファを作成します。
しかし、foo.sqlは、環境をリフレッシュし、そのようなバッファがこの場所に存在することを検出するために、バッファ内で "mx sql-mode"を実行しない限り、* SQL *バッファの存在を認識しませんポイント。カスタムdb-connect関数にいくつかのコードを埋め込み、sql-modeを使ってすべてのバッファを参照し、sql-buffer変数を更新したいと思います。私は、いくつかのスタックオーバーフローメンバーが以前にこれを似たようにしているに違いないと確信しています。私はあなたが引数とあなたのように「SQLモードを渡すことができます
(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))))
彼らの主要なモードでバッファをフィルタリングするには、この小さなヘルパー関数を実装しました
このコードはEmacsの古いバージョンのものですか? Emacs 23.3.1(OS X)の(void-function buffer-mode)で失敗します。私はそれがバッファのメジャーモードを抽出することを意味していると推測しています。バッファローカルである変数 'major-mode'で利用できます。 – vpit3833
いいえ、それは古くはありません。バッファーモード(バッファー名またはバッファー名の省略) (バッファー名またはメジャーモードの現在のバッファー付き))を忘れてしまった –