我在emacs中使用sql-mode的典型用法是:
a.打开foo.sql文件并开始编辑
b.决定使用sql-send-region的键绑定来运行它
c.启动我的自定义( db - connect )函数以连接到适当的db并创建一个*SQL* buffer。
但是,foo.sql并不知道*SQL*缓冲区的存在,除非我在缓冲区中执行"m-x mode“,以便刷新它的环境并检测到此时存在这样的缓冲区。我想在我的自定义db-connect函数中嵌入一些代码,以便使用sql-mode访问所有缓冲区并更新sql-buffer变量。我确信一定有几个堆栈溢出成员以前做过这样或类似的事情。
谢谢,
SetJmp
发布于 2011-03-25 18:52:34
快速浏览一下sql.el文件,就会发现命令sql-set-sqli-buffer-generally,也许这是为您准备的?
另一种方法是通过在主模式钩子中调用kill-local-variable来终止sql-buffer的缓冲区本地变体。(这样,效果将是所有SQL缓冲区都将与最新的SQL缓冲区对话。)
免责声明:我对SQL或SQL模式一无所知,一般只知道Emacs。
发布于 2011-03-25 03:25:40
我已经实现了这个小辅助函数来根据缓冲区的主模式对其进行过滤
(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缓冲区的列表。
https://stackoverflow.com/questions/5424032
复制相似问题