在拆分窗口emacs中,如何搜索;“其他缓冲区第一行”;“为”而设:&引用;然后将原始缓冲区的边界移动到该点

在拆分窗口emacs中,如何搜索;“其他缓冲区第一行”;“为”而设:&引用;然后将原始缓冲区的边界移动到该点,emacs,elisp,Emacs,Elisp,我使用monky.el包使用mercurial。 在拆分窗口中,当激活责怪时,结果会出现在另一个窗口中,其中包含有关行更改的信息(作者/变更集/日期:)。 我希望有一个命令搜索“result”缓冲区的第一行,找到“:”标记所在的位置,并将原始缓冲区的边界上移到该点 基本上,如果两个窗口的边框都是: | ...... | ...... | 在执行命令之前: |作者4543 11-27-2013:int x;|int x| 执行

我使用monky.el包使用mercurial。 在拆分窗口中,当激活责怪时,结果会出现在另一个窗口中,其中包含有关行更改的信息(作者/变更集/日期:)。 我希望有一个命令搜索“result”缓冲区的第一行,找到“:”标记所在的位置,并将原始缓冲区的边界上移到该点

基本上,如果两个窗口的边框都是:
| ......                        | ......              |
在执行命令之前:
|作者4543 11-27-2013:int x;|int x|
执行命令后:
|作者4543 11-27-2013:| int x|
原因是我想保持数据类型/函数的颜色…等等,同时看看谁最后更改了这些源文件行

在生成的文件中,当行以作者变更集日期进行时。他们失去了色彩。 所以我想使用缓冲区中每一行的信息与原始格式化文件“并排”使用


我也不能使用固定的窗口边框移位值,因为根据每个文件的作者姓名长度,“:”的位置将相应更改。

我已在修改了上一版本 "" 这样,下面的代码就有意义了。如果运行下面的代码,然后为
缓冲区打开
同步窗口模式
,则
isearch
将达到预期效果

(defun mercury-blame-resize ()
  "Resize mercury blame window to blame string at point only."
  (interactive) ;; for debugging
  (window-resize (selected-window)
         (- (save-excursion
              (beginning-of-line)
              (skip-chars-forward "^:\n"))
            (window-width) -1)
         'horizontal 'ignore-fixed-size))

(add-hook 'sync-window-master-hook 'mercury-blame-resize)

(add-hook 'sync-window-mode-hook '(lambda ()
                    (setq-local isearch-update-post-hook #'(lambda () (set-window-hscroll (selected-window) 0)))))
emacs 23的版本:

(defvar mercury-blame-resize-min 5)

(defun mercury-blame-resize ()
  "Resize mercury blame window to blame string at point only."
  (interactive) ;; for debugging
  (save-excursion
    (beginning-of-line)
    (let ((n (skip-chars-forward "^:\n")))
      (when (looking-at ":")
    (condition-case err
        (enlarge-window (- (max mercury-blame-resize-min n)
                   (window-width) -1)
                'horizontal)
      (error))))))


(add-hook 'sync-window-master-hook 'mercury-blame-resize)

(add-hook 'sync-window-mode-hook '(lambda ()
                    (set (make-local-variable 'isearch-update-post-hook) #'(lambda () (set-window-hscroll (selected-window) 0)))))
测试助手(不含汞):


编辑:在emacs 23的版本中:仅当当前行上有“:”时才重新调整mercurity buffer的大小。

hmmm…我尝试过,但一直得到“符号函数定义setq local is void”您不应该在
窗口大小调整方面遇到问题,因为您只使用标记为
version的代码来调整emacs 23:
。在
同步窗口模式
中执行此代码。然后为
缓冲区激活
符号窗口模式
(不适用于另一个!)。然后
i在
merury
缓冲区中搜索想要的名称。好的,这里的问题可能是您实际上想要在原始源代码缓冲区中搜索某些内容。如果是,告诉我。要在
merury-burn
缓冲区中手动使用
M-x mercury-burn-resize
,您不必更改任何内容。小心!它还不是万无一失的。这是由于我有限的时间预算。您可以通过
M-x sync window mode
停用怪物来退出…现在,在emacs 23中,当当前行上没有“:”时,将跳过重新调整版本大小。我目前正在做一个大而耗时的项目。因此,冷静的事情必须等待。但听起来好像您为错误的窗口激活了同步窗口模式。如果你在mecury窗口中激活它,我应该可以搜索名字。我会记住这一点。我只是很忙。我计划在emacswiki.org上发布一个包。
(loop for i from 1 upto 100 do
      (loop for j from 0 upto (random 20) do
        (insert (+ 32 (random 20))))
      (insert ":\n"))