emacs:如何使SQL结果的标题行始终可见,并跟随水平滚动?

emacs:如何使SQL结果的标题行始终可见,并跟随水平滚动?,emacs,resultset,multiple-columns,horizontal-scrolling,Emacs,Resultset,Multiple Columns,Horizontal Scrolling,我几乎可以用emacs完成所有工作,包括在shell模式缓冲区中运行SQL命令行会话 寻求: 使SQL结果集标题(列名)显示在窗口可见部分的顶部,即使SQL客户端输出的实际标题已从视图中滚出。 此外,使标题水平滚动以保持与数据列对齐 尝试: 我已经能够(通过“窗口滚动函数”)对标题行进行整理,以便当SQL结果集标题从窗口顶部滚动时,我将缓冲区窗口的标题行设置为SQL结果集标题 这在垂直滚动时有效地保留了标记的数据列,但在水平滚动时,标题行不会跟随水平滚动位置(谢天谢地,类似于模式行,通常也不会水

我几乎可以用emacs完成所有工作,包括在shell模式缓冲区中运行SQL命令行会话

寻求:

使SQL结果集标题(列名)显示在窗口可见部分的顶部,即使SQL客户端输出的实际标题已从视图中滚出。 此外,使标题水平滚动以保持与数据列对齐

尝试:

我已经能够(通过“窗口滚动函数”)对标题行进行整理,以便当SQL结果集标题从窗口顶部滚动时,我将缓冲区窗口的标题行设置为SQL结果集标题

这在垂直滚动时有效地保留了标记的数据列,但在水平滚动时,标题行不会跟随水平滚动位置(谢天谢地,类似于模式行,通常也不会水平滚动)

接下来我想做的是让标题行水平滚动。因此,我没有使用“窗口滚动功能”——它不会为水平滚动触发[bug???]——而是改为使用“post-command-hook”,它会在每个命令后触发(可能是overkill-no?)。这很有效。。。有点

问题:

问题在于,在执行附加命令之前,标题行不会捕捉到正确的位置(例如,单独的“C-e”不会导致标题行捕捉到,但当后跟“C-b”时,会发生捕捉到)。看起来像是在命令之后执行post命令钩子,但在重新绘制窗口之前执行(对于窗口可能会更改的命令来说,这似乎有点奇怪)。具体来说,(window hscroll)肯定会返回命令之前的hscroll位置

代码:

为了避免混乱,我不会发布用于设置标题行的实际代码(除非有人有兴趣看到),但我将发布此示例elisp,它可以证明hscroll位置具有运行命令之前的值:

(取消pch演示()
“post命令钩子:演示窗口hscroll
在运行此挂钩之前,不会更新值。“
(互动)
下面的信息表明我们正在获得
;hs按运行命令之前的顺序单击鼠标位置
(消息“hscroll=%S”(窗口hscroll))
)
(添加挂钩“后命令挂钩”pch演示t)
;; 没有太多的意义与线包装上
;;(setq默认截断行t)
演示步骤:

  • 打开缓冲区
  • 确保“行截断”处于启用状态
  • 使窗口足够窄(或线条足够长),以使某些线条被截断
  • 走到一条长线的开头,点击C-e
  • 请注意,消息显示“hscroll=0”
  • 击中C-a
  • 请注意,消息说“hscroll=SOMETHING不等于0”
  • 问题:

    1) 是否有更好的方法(即不使用emacs的标题行)?也许是组织模式的东西

    2) 使用我的方法,有人知道如何在钩子函数中获得更新的窗口位置吗


    谢谢你

    外壳模式
    ?所以您没有使用内置的
    M-x sql数据库名
    接口/
    sql交互模式
    ?我做了类似的事情(
    同步窗口
    )。在命令循环中,
    post-command-hook
    在命令执行后直接运行。只有在这之后,emacs才会检查发送的命令是否指向外部,并纠正滚动(在两个方向上)。您需要钩住
    post命令钩子
    窗口滚动功能
    post-command-hook
    用于简单的点运动,保持点在视图中(因此没有滚动和滚动功能)和
    窗口滚动功能
    如果因为点不在视图中而滚动窗口。
    窗口滚动功能
    似乎不会在水平滚动上被调用(据我在尝试使用它时所知)。可能被认为是emacs中的一个bug???我试图修改emacs源代码,但在我的无力和短暂的尝试中,我找不到在水平滚动时调用窗口滚动函数的正确位置或机制。另外,还有谁认为post命令挂钩应该获得
    window hscroll
    a的值在命令的效果完成之后?(注意,在我的帖子中,我提到它在命令之前提供了
    窗口hscroll
    )。phils:FYI:我使用一个自制的(顺便说一句,非常棒的)perl程序来处理我的所有数据库交互…希望我很快有时间清理它,以获得开源版本。