P4CONFIG с emacs - PullRequest
       25

P4CONFIG с emacs

4 голосов
/ 29 сентября 2010

Я хотел бы увидеть примеры того, как настроить производительность, используя функциональность файла конфигурации , где emacs используется в качестве программ сравнения и слияния (настройки P4DIFF и P4MERGE).Еще лучше, если это в Windows.

Я также пытаюсь заставить P4EDITOR работать правильно при использовании emacsclientw, в частности, указав функциональность альтернативного редактора.

Любые советы, предложения, примерконфиги очень приветствуются.

Ответы [ 3 ]

6 голосов
/ 30 сентября 2010

Вот другой трюк, который я использовал.Он добавляет несколько параметров командной строки в 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 голосов
/ 09 февраля 2016

Удивительный ответ Эрика не работает должным образом в последних emacs из-за экрана приветствия. Чтобы скрыть экран приветствия (чтобы вы могли правильно получить разность), обратитесь к Невозможно скрыть экран приветствия в 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)))
3 голосов
/ 30 сентября 2010

Я предполагаю, что вы уже используете p4.el .

Вот функция, которая позволит вам легко настроить p4-client-config:

(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 / Perforce / Conf выглядит так:

P4CLIENT=ewarmenhoven-ppd
P4PORT=perforce.netflix.com:1666
P4USER=ewarmenhoven

P4EDITOR=emacsclient
P4DIFF=diff -dupU8
P4MERGE=~/bin/emerge

Программа слияния emerge - это всего лишь небольшой небольшой скрипт оболочки, который вызывает emacsclient соответственно:

<code>#!/bin/bash</p>

<p>base=$1
sccs=$2
mine=$3
merg=$4</p>

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

Если вы используете Cygwin, он должен работать просто отлично.

Для выполнения diff, если он запускается из оболочки, я хочу вывод в оболочке, следовательно, просто используя обычный diff. Если это не так, я использую p4-ediff, который по умолчанию связан с C-x p -.

...