Emacs:如何访问所有sql模式缓冲区并设置适当的sql缓冲区
我在emacs中sql模式的典型用法是: a。打开foo.sql文件并开始编辑 b。决定是否要使用sql发送区域的键绑定运行它 c。启动my custom(db connect)函数以连接到适当的数据库并创建*SQL*缓冲区 但是,foo.sql不知道*sql*缓冲区的存在,除非我在缓冲区中执行“m-x sql模式”,以刷新其环境并检测到此时存在这样的缓冲区。我想在自定义db connect函数中嵌入一些代码,以便使用sql模式访问所有缓冲区并更新sql缓冲区变量。我确信几个堆栈溢出成员以前一定做过这样或类似的事情 谢谢Emacs:如何访问所有sql模式缓冲区并设置适当的sql缓冲区,emacs,buffer,sql-mode,Emacs,Buffer,Sql Mode,我在emacs中sql模式的典型用法是: a。打开foo.sql文件并开始编辑 b。决定是否要使用sql发送区域的键绑定运行它 c。启动my custom(db connect)函数以连接到适当的数据库并创建*SQL*缓冲区 但是,foo.sql不知道*sql*缓冲区的存在,除非我在缓冲区中执行“m-x sql模式”,以刷新其环境并检测到此时存在这样的缓冲区。我想在自定义db connect函数中嵌入一些代码,以便使用sql模式访问所有缓冲区并更新sql缓冲区变量。我确信几个堆栈溢出成员以前一定
SetJmp我已经实现了这个小助手函数,以按缓冲区的主模式过滤缓冲区
(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缓冲区的列表。快速查看
sql.el
文件显示命令sql set sqli buffer generally
,也许这是适合您的
另一种方法是通过在主模式钩子中调用kill local variable
来杀死sqlbuffer
的缓冲区局部变量。(这样,所有SQL缓冲区都将与最新的SQL缓冲区通信。)
免责声明:我对SQL或SQL模式一无所知,只知道一般的Emacs。这段代码适用于一些旧版本的Emacs吗?在我的Emacs 23.3.1(OS X)上,它因(无效函数缓冲模式)而失败。我猜这意味着提取缓冲区的主模式。它在变量
主模式下可用,该模式是缓冲区本地模式。不,它不是旧模式。这只是我写的东西,但我完全忘记了-(defun buffer mode(buffer或name)(使用当前buffer或name主模式))