emacs:如何使SQL结果的标题行始终可见,并跟随水平滚动?
我几乎可以用emacs完成所有工作,包括在shell模式缓冲区中运行SQL命令行会话 寻求: 使SQL结果集标题(列名)显示在窗口可见部分的顶部,即使SQL客户端输出的实际标题已从视图中滚出。 此外,使标题水平滚动以保持与数据列对齐 尝试: 我已经能够(通过“窗口滚动函数”)对标题行进行整理,以便当SQL结果集标题从窗口顶部滚动时,我将缓冲区窗口的标题行设置为SQL结果集标题 这在垂直滚动时有效地保留了标记的数据列,但在水平滚动时,标题行不会跟随水平滚动位置(谢天谢地,类似于模式行,通常也不会水平滚动) 接下来我想做的是让标题行水平滚动。因此,我没有使用“窗口滚动功能”——它不会为水平滚动触发[bug???]——而是改为使用“post-command-hook”,它会在每个命令后触发(可能是overkill-no?)。这很有效。。。有点 问题: 问题在于,在执行附加命令之前,标题行不会捕捉到正确的位置(例如,单独的“C-e”不会导致标题行捕捉到,但当后跟“C-b”时,会发生捕捉到)。看起来像是在命令之后执行post命令钩子,但在重新绘制窗口之前执行(对于窗口可能会更改的命令来说,这似乎有点奇怪)。具体来说,(window hscroll)肯定会返回命令之前的hscroll位置 代码: 为了避免混乱,我不会发布用于设置标题行的实际代码(除非有人有兴趣看到),但我将发布此示例elisp,它可以证明hscroll位置具有运行命令之前的值:emacs:如何使SQL结果的标题行始终可见,并跟随水平滚动?,emacs,resultset,multiple-columns,horizontal-scrolling,Emacs,Resultset,Multiple Columns,Horizontal Scrolling,我几乎可以用emacs完成所有工作,包括在shell模式缓冲区中运行SQL命令行会话 寻求: 使SQL结果集标题(列名)显示在窗口可见部分的顶部,即使SQL客户端输出的实际标题已从视图中滚出。 此外,使标题水平滚动以保持与数据列对齐 尝试: 我已经能够(通过“窗口滚动函数”)对标题行进行整理,以便当SQL结果集标题从窗口顶部滚动时,我将缓冲区窗口的标题行设置为SQL结果集标题 这在垂直滚动时有效地保留了标记的数据列,但在水平滚动时,标题行不会跟随水平滚动位置(谢天谢地,类似于模式行,通常也不会水
(取消pch演示()
“post命令钩子:演示窗口hscroll
在运行此挂钩之前,不会更新值。“
(互动)
下面的信息表明我们正在获得
;hs按运行命令之前的顺序单击鼠标位置
(消息“hscroll=%S”(窗口hscroll))
)
(添加挂钩“后命令挂钩”pch演示t)
;; 没有太多的意义与线包装上
;;(setq默认截断行t)
演示步骤:
谢谢你
外壳模式
?所以您没有使用内置的M-x sql数据库名
接口/sql交互模式
?我做了类似的事情(同步窗口
)。在命令循环中,post-command-hook
在命令执行后直接运行。只有在这之后,emacs才会检查发送的命令是否指向外部,并纠正滚动(在两个方向上)。您需要钩住post命令钩子
和窗口滚动功能
post-command-hook
用于简单的点运动,保持点在视图中(因此没有滚动和滚动功能)和窗口滚动功能
如果因为点不在视图中而滚动窗口。窗口滚动功能
似乎不会在水平滚动上被调用(据我在尝试使用它时所知)。可能被认为是emacs中的一个bug???我试图修改emacs源代码,但在我的无力和短暂的尝试中,我找不到在水平滚动时调用窗口滚动函数的正确位置或机制。另外,还有谁认为post命令挂钩应该获得window hscroll
a的值在命令的效果完成之后?(注意,在我的帖子中,我提到它在命令之前提供了窗口hscroll
)。phils:FYI:我使用一个自制的(顺便说一句,非常棒的)perl程序来处理我的所有数据库交互…希望我很快有时间清理它,以获得开源版本。