代码之家  ›  专栏  ›  技术社区  ›  cristobalito

p4config和emacs

  •  4
  • cristobalito  · 技术社区  · 14 年前

    我想看看如何设置性能的示例,使用 config file functionality 其中emacs用作diff和merge程序(p4diff和p4merge设置)。如果在窗户上就更好了。

    我也在努力让p4editor在使用emacsclientw时正常工作,特别是指定备用编辑器功能。

    任何提示、建议、示例配置都非常欢迎。

    3 回复  |  直到 8 年前
        1
  •  3
  •   Eric Warmenhoven    14 年前

    我假设你已经在使用 p4.el .

    下面是一个可以让您轻松设置P4客户机配置的函数:

    (defun p4-go (config)
      (interactive
       (list (read-file-name "P4 Config file: "
                             (concat (getenv "HOME") "/etc/perforce/")
                             ""
                             t)))
      (p4-set-client-config (expand-file-name config))
      t)
    

    然后我就跑了 M-x p4-go <RET> conf <RET>

    我的~/etc/performce/conf文件如下:

    P4CLIENT=ewarmenhoven-ppd
    P4PORT=perforce.netflix.com:1666
    P4USER=ewarmenhoven
    
    P4EDITOR=emacsclient
    P4DIFF=diff -dupU8
    P4MERGE=~/bin/emerge
    

    这个 emerge 合并程序只是一个调用 emacsclient 适当地:

    #!/bin/bash
    
    

    base=$1 sccs=$2 mine=$3 merg=$4

    emacsclient -e "(ediff-merge-files-with-ancestor \"$base\" \"$sccs\" \"$mine\" () \"$merg\")" emacsclient "$merg"

    如果你用的是Cygwin,它就可以正常工作。

    对于diff,如果它是从shell运行的,那么我需要shell中的输出,因此只使用普通diff。如果不是,则使用 p4-ediff ,这是必然的 C-x p - 默认情况下。

        2
  •  6
  •   Eric Warmenhoven    14 年前

    这是我以前用过的另一个技巧。它向Emacs添加了一些命令行选项,这样您就可以在新的Emacs实例中进行比较和合并(同样使用EDIFF)。

    ;; -diff
    (defun command-line-diff (switch)
      (let ((file1 (pop command-line-args-left))
            (file2 (pop command-line-args-left)))
        (ediff file1 file2)))
    (add-to-list 'command-switch-alist '("-diff" . command-line-diff))
    
    ;; -merge
    (defun command-line-merge (switch)
      (let ((base (pop command-line-args-left))
            (sccs (pop command-line-args-left))
            (mine (pop command-line-args-left))
            (merg (pop command-line-args-left)))
       (ediff-merge-with-ancestor sccs mine base () merg)))
    (add-to-list 'command-switch-alist '("-merge" . command-line-merge))

    把它放在你的.emacs文件里。然后您可以将p4diff程序设置为 emacs -diff 你的p4merge程序 emacs -merge .

        3
  •  3
  •   Community Johnny    7 年前

    由于欢迎屏幕的缘故,Eric的出色答案在最新的Emacs中无法正常工作。为了隐藏欢迎屏幕(以便正确获得差异),请参阅 Unable to hide welcome screen in Emacs

    另一个在常规垂直模式下打开diff的漂亮设置是设置下面的config变量

    (custom-set-variables
      ;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
      ;; Your init file should contain only one such instance.
     '(ediff-split-window-function (quote split-window-horizontally)))