From 99e76ddadef34ac2a6821c530b0d2fd97f239664 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20Spiegel?= Date: Thu, 2 Nov 1995 09:36:01 +0000 Subject: [PATCH] (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief. --- lisp/vc.el | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/lisp/vc.el b/lisp/vc.el index 54d43ef08a5..d550dd4a277 100644 --- a/lisp/vc.el +++ b/lisp/vc.el @@ -2138,13 +2138,13 @@ From a program, any arguments are passed to the `rcs2log' script." (setq oldvers (vc-lookup-triple file oldvers)) (setq newvers (vc-lookup-triple file newvers))) ((eq backend 'RCS) - (if (not oldvers) (setq oldvers (vc-workfile-version file))))) + (if (not oldvers) (setq oldvers (vc-workfile-version file))) + ;; If we know that --brief is not supported, don't try it. + (setq cmp (and cmp (not (eq vc-rcsdiff-knows-brief 'no)))))) ;; SCCS and RCS shares a lot of code. (cond ((or (eq backend 'SCCS) (eq backend 'RCS)) - (let* ((command (if (eq backend 'SCCS) - "vcdiff" - "rcsdiff")) + (let* ((command (if (eq backend 'SCCS) "vcdiff" "rcsdiff")) (mode (if (eq backend 'RCS) 'WORKFILE 'MASTER)) (options (append (list (and cmp "--brief") "-q" @@ -2156,11 +2156,17 @@ From a program, any arguments are passed to the `rcs2log' script." (list diff-switches))))) (status (apply 'vc-do-command "*vc-diff*" 2 command file mode options))) - ;; Some RCS versions don't understand "--brief"; work around this. + ;; If --brief didn't work, do a double-take and remember it + ;; for the future. (if (eq status 2) - (apply 'vc-do-command "*vc-diff*" 1 command file 'WORKFILE - (if cmp (cdr options) options)) - status))) + (prog1 + (apply 'vc-do-command "*vc-diff*" 1 command file 'WORKFILE + (if cmp (cdr options) options)) + (if cmp (setq vc-rcsdiff-knows-brief 'no))) + ;; If --brief DID work, remember that, too. + (and cmp (not vc-rcsdiff-knows-brief) + (setq vc-rcsdiff-knows-brief 'yes)) + status))) ;; CVS is different. ((eq backend 'CVS) (if (string= (vc-workfile-version file) "0") ;CVS -- 2.39.2