Mercurial > emacs
annotate lisp/cvs-status.el @ 56905:661d52db56de
(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'.
(isearch-toggle-case-fold): Set `isearch-success' to `t'.
(isearch-message-prefix): Add "pending" for isearch-adjusted.
(isearch-other-meta-char): Restore isearch-point unconditionally.
(isearch-query-replace): Add new arg `regexp-flag' and use it.
Set point to start of match if region is not active in transient
mark mode (to include the current match to region boundaries).
Push the search string to `query-replace-from-history-variable'.
Add prompt "Query replace regexp" for isearch-regexp.
Add region beginning/end as last arguments of `perform-replace.'
(isearch-query-replace-regexp): Replace code by the call to
`isearch-query-replace' with arg `t'.
author | Juri Linkov <juri@jurta.org> |
---|---|
date | Fri, 03 Sep 2004 20:32:57 +0000 |
parents | ba72d48889b4 |
children | 4d0805441612 d8411455de48 |
rev | line source |
---|---|
55076
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
1 ;;; cvs-status.el --- major mode for browsing `cvs status' output -*- coding: utf-8 -*- |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
2 |
54579
5133c27cc4f0
(cvs-tree-use-jisx0208): Use char-displayable-p.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52401
diff
changeset
|
3 ;; Copyright (C) 1999, 2000, 03, 2004 Free Software Foundation, Inc. |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
4 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
5 ;; Author: Stefan Monnier <monnier@cs.yale.edu> |
42557
c450330ea833
Add keyword header `tools' to actually get listed in finder.
Pavel Janík <Pavel@Janik.cz>
parents:
42217
diff
changeset
|
6 ;; Keywords: pcl-cvs cvs status tree tools |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
7 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
8 ;; This file is part of GNU Emacs. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
9 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
10 ;; GNU Emacs is free software; you can redistribute it and/or modify |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
11 ;; it under the terms of the GNU General Public License as published by |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
12 ;; the Free Software Foundation; either version 2, or (at your option) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
13 ;; any later version. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
14 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
15 ;; GNU Emacs is distributed in the hope that it will be useful, |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
18 ;; GNU General Public License for more details. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
19 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
20 ;; You should have received a copy of the GNU General Public License |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
23 ;; Boston, MA 02111-1307, USA. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
24 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
25 ;;; Commentary: |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
26 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
27 ;; Todo: |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
28 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
29 ;; - Somehow allow cvs-status-tree to work on-the-fly |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
30 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
31 ;;; Code: |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
32 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
33 (eval-when-compile (require 'cl)) |
56752
ba72d48889b4
Require pcvs during byte-compiling for
Andreas Schwab <schwab@suse.de>
parents:
56750
diff
changeset
|
34 (eval-when-compile (require 'pcvs)) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
35 (require 'pcvs-util) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
36 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
37 ;;; |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
38 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
39 (defgroup cvs-status nil |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
40 "Major mode for browsing `cvs status' output." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
41 :group 'pcl-cvs |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
42 :prefix "cvs-status-") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
43 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
44 (easy-mmode-defmap cvs-status-mode-map |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
45 '(("n" . next-line) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
46 ("p" . previous-line) |
28249
090fad6a7bcb
(cvs-status-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
47 ("N" . cvs-status-next) |
090fad6a7bcb
(cvs-status-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
48 ("P" . cvs-status-prev) |
090fad6a7bcb
(cvs-status-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
49 ("\M-n" . cvs-status-next) |
090fad6a7bcb
(cvs-status-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
50 ("\M-p" . cvs-status-prev) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
51 ("t" . cvs-status-cvstrees) |
56750
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
52 ("T" . cvs-status-trees) |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
53 (">" . cvs-status-checkout)) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
54 "CVS-Status' keymap." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
55 :group 'cvs-status |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
56 :inherit 'cvs-mode-map) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
57 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
58 ;;(easy-menu-define cvs-status-menu cvs-status-mode-map |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
59 ;; "Menu for `cvs-status-mode'." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
60 ;; '("CVS-Status" |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
61 ;; ["Show Tag Trees" cvs-status-tree t] |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
62 ;; )) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
63 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
64 (defvar cvs-status-mode-hook nil |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
65 "Hook run at the end of `cvs-status-mode'.") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
66 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
67 (defconst cvs-status-tags-leader-re "^ Existing Tags:$") |
31972
5fbecb49e386
(cvs-status-entry-leader-re): Minor fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30887
diff
changeset
|
68 (defconst cvs-status-entry-leader-re |
5fbecb49e386
(cvs-status-entry-leader-re): Minor fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30887
diff
changeset
|
69 "^File:\\s-+\\(?:no file \\)?\\(.*\\S-\\)\\s-+Status: \\(.+\\)$") |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
70 (defconst cvs-status-dir-re "^cvs[.ex]* [a-z]+: Examining \\(.+\\)$") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
71 (defconst cvs-status-rev-re "[0-9][.0-9]*\\.[.0-9]*[0-9]") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
72 (defconst cvs-status-tag-re "[ \t]\\([a-zA-Z][^ \t\n.]*\\)") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
73 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
74 (defconst cvs-status-font-lock-keywords |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
75 `((,cvs-status-entry-leader-re |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
76 (1 'cvs-filename-face) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
77 (2 'cvs-need-action-face)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
78 (,cvs-status-tags-leader-re |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
79 (,cvs-status-rev-re |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
80 (save-excursion (re-search-forward "^\n" nil 'move) (point)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
81 (progn (re-search-backward cvs-status-tags-leader-re nil t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
82 (forward-line 1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
83 (0 font-lock-comment-face)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
84 (,cvs-status-tag-re |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
85 (save-excursion (re-search-forward "^\n" nil 'move) (point)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
86 (progn (re-search-backward cvs-status-tags-leader-re nil t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
87 (forward-line 1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
88 (1 font-lock-function-name-face))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
89 (defconst cvs-status-font-lock-defaults |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
90 '(cvs-status-font-lock-keywords t nil nil nil (font-lock-multiline . t))) |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42557
diff
changeset
|
91 |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
92 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
93 (put 'cvs-status-mode 'mode-class 'special) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
94 ;;;###autoload |
28250
3cfb9a01a935
(cvs-status-mode): Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28249
diff
changeset
|
95 (define-derived-mode cvs-status-mode fundamental-mode "CVS-Status" |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
96 "Mode used for cvs status output." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
97 (set (make-local-variable 'font-lock-defaults) cvs-status-font-lock-defaults) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
98 (set (make-local-variable 'cvs-minor-wrap-function) 'cvs-status-minor-wrap)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
99 |
28249
090fad6a7bcb
(cvs-status-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
100 ;; Define cvs-status-next and cvs-status-prev |
090fad6a7bcb
(cvs-status-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
101 (easy-mmode-define-navigation cvs-status cvs-status-entry-leader-re "entry") |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
102 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
103 (defun cvs-status-current-file () |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
104 (save-excursion |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
105 (forward-line 1) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
106 (or (re-search-backward cvs-status-entry-leader-re nil t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
107 (re-search-forward cvs-status-entry-leader-re)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
108 (let* ((file (match-string 1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
109 (cvsdir (and (re-search-backward cvs-status-dir-re nil t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
110 (match-string 1))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
111 (pcldir (and (re-search-backward cvs-pcl-cvs-dirchange-re nil t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
112 (match-string 1))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
113 (dir "")) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
114 (let ((default-directory "")) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
115 (when pcldir (setq dir (expand-file-name pcldir dir))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
116 (when cvsdir (setq dir (expand-file-name cvsdir dir))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
117 (expand-file-name file dir))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
118 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
119 (defun cvs-status-current-tag () |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
120 (save-excursion |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
121 (let ((pt (point)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
122 (col (current-column)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
123 (start (progn (re-search-backward cvs-status-tags-leader-re nil t) (point))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
124 (end (progn (re-search-forward "^$" nil t) (point)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
125 (when (and (< start pt) (> end pt)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
126 (goto-char pt) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
127 (end-of-line) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
128 (let ((tag nil) (dist pt) (end (point))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
129 (beginning-of-line) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
130 (while (re-search-forward cvs-status-tag-re end t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
131 (let* ((cole (current-column)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
132 (colb (save-excursion |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
133 (goto-char (match-beginning 1)) (current-column))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
134 (ndist (min (abs (- cole col)) (abs (- colb col))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
135 (when (< ndist dist) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
136 (setq dist ndist) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
137 (setq tag (match-string 1))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
138 tag))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
139 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
140 (defun cvs-status-minor-wrap (buf f) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
141 (let ((data (with-current-buffer buf |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
142 (cons |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
143 (cons (cvs-status-current-file) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
144 (cvs-status-current-tag)) |
28857
3ec1142abebd
(cvs-status-minor-wrap): Use mark-active.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28250
diff
changeset
|
145 (when mark-active |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
146 (save-excursion |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
147 (goto-char (mark)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
148 (cons (cvs-status-current-file) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
149 (cvs-status-current-tag)))))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
150 (let ((cvs-branch-prefix (cdar data)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
151 (cvs-secondary-branch-prefix (and (cdar data) (cddr data))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
152 (cvs-minor-current-files |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
153 (cons (caar data) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
154 (when (and (cadr data) (not (equal (caar data) (cadr data)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
155 (list (cadr data))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
156 ;; FIXME: I need to force because the fileinfos are UNKNOWN |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
157 (cvs-force-command "/F")) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
158 (funcall f)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
159 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
160 ;; |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
161 ;; Tagelt, tag element |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
162 ;; |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
163 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
164 (defstruct (cvs-tag |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
165 (:constructor nil) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
166 (:constructor cvs-tag-make |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
167 (vlist &optional name type)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
168 (:conc-name cvs-tag->)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
169 vlist |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
170 name |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
171 type) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
172 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
173 (defsubst cvs-status-vl-to-str (vl) (mapconcat 'number-to-string vl ".")) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
174 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
175 (defun cvs-tag->string (tag) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
176 (if (stringp tag) tag |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
177 (let ((name (cvs-tag->name tag)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
178 (vl (cvs-tag->vlist tag))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
179 (if (null name) (cvs-status-vl-to-str vl) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
180 (let ((rev (if vl (concat " (" (cvs-status-vl-to-str vl) ")") ""))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
181 (if (consp name) (mapcar (lambda (name) (concat name rev)) name) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
182 (concat name rev))))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
183 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
184 (defun cvs-tag-compare-1 (vl1 vl2) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
185 (cond |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
186 ((and (null vl1) (null vl2)) 'equal) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
187 ((null vl1) 'more2) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
188 ((null vl2) 'more1) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
189 (t (let ((v1 (car vl1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
190 (v2 (car vl2))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
191 (cond |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
192 ((> v1 v2) 'more1) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
193 ((< v1 v2) 'more2) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
194 (t (cvs-tag-compare-1 (cdr vl1) (cdr vl2)))))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
195 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
196 (defsubst cvs-tag-compare (tag1 tag2) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
197 (cvs-tag-compare-1 (cvs-tag->vlist tag1) (cvs-tag->vlist tag2))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
198 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
199 (defun cvs-tag-merge (tag1 tag2) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
200 "Merge TAG1 and TAG2 into one." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
201 (let ((type1 (cvs-tag->type tag1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
202 (type2 (cvs-tag->type tag2)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
203 (name1 (cvs-tag->name tag1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
204 (name2 (cvs-tag->name tag2))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
205 (unless (equal (cvs-tag->vlist tag1) (cvs-tag->vlist tag2)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
206 (setf (cvs-tag->vlist tag1) nil)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
207 (if type1 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
208 (unless (or (not type2) (equal type1 type2)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
209 (setf (cvs-tag->type tag1) nil)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
210 (setf (cvs-tag->type tag1) type2)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
211 (if name1 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
212 (setf (cvs-tag->name tag1) (cvs-append name1 name2)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
213 (setf (cvs-tag->name tag1) name2)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
214 tag1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
215 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
216 (defun cvs-tree-print (tags printer column) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
217 "Print the tree of TAGS where each tag's string is given by PRINTER. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
218 PRINTER should accept both a tag (in which case it should return a string) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
219 or a string (in which case it should simply return its argument). |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
220 A tag cannot be a CONS. The return value can also be a list of strings, |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
221 if several nodes where merged into one. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
222 The tree will be printed no closer than column COLUMN." |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42557
diff
changeset
|
223 |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
224 (let* ((eol (save-excursion (end-of-line) (current-column))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
225 (column (max (+ eol 2) column))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
226 (if (null tags) column |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
227 ;;(move-to-column-force column) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
228 (let* ((rev (cvs-car tags)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
229 (name (funcall printer (cvs-car rev))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
230 (rest (append (cvs-cdr name) (cvs-cdr tags))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
231 (prefix |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
232 (save-excursion |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
233 (or (= (forward-line 1) 0) (insert "\n")) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
234 (cvs-tree-print rest printer column)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
235 (assert (>= prefix column)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
236 (move-to-column prefix t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
237 (assert (eolp)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
238 (insert (cvs-car name)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
239 (dolist (br (cvs-cdr rev)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
240 (let* ((column (current-column)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
241 (brrev (funcall printer (cvs-car br))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
242 (brlength (length (cvs-car brrev))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
243 (brfill (concat (make-string (/ brlength 2) ? ) "|")) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
244 (prefix |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
245 (save-excursion |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
246 (insert " -- ") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
247 (cvs-tree-print (cvs-append brrev brfill (cvs-cdr br)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
248 printer (current-column))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
249 (delete-region (save-excursion (move-to-column prefix) (point)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
250 (point)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
251 (insert " " (make-string (- prefix column 2) ?-) " ") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
252 (end-of-line))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
253 prefix)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
254 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
255 (defun cvs-tree-merge (tree1 tree2) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
256 "Merge tags trees TREE1 and TREE2 into one. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
257 BEWARE: because of stability issues, this is not a symetric operation." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
258 (assert (and (listp tree1) (listp tree2))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
259 (cond |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
260 ((null tree1) tree2) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
261 ((null tree2) tree1) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
262 (t |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
263 (let* ((rev1 (car tree1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
264 (tag1 (cvs-car rev1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
265 (vl1 (cvs-tag->vlist tag1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
266 (l1 (length vl1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
267 (rev2 (car tree2)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
268 (tag2 (cvs-car rev2)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
269 (vl2 (cvs-tag->vlist tag2)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
270 (l2 (length vl2))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
271 (cond |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
272 ((= l1 l2) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
273 (case (cvs-tag-compare tag1 tag2) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
274 (more1 (list* rev2 (cvs-tree-merge tree1 (cdr tree2)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
275 (more2 (list* rev1 (cvs-tree-merge (cdr tree1) tree2))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
276 (equal |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
277 (cons (cons (cvs-tag-merge tag1 tag2) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
278 (cvs-tree-merge (cvs-cdr rev1) (cvs-cdr rev2))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
279 (cvs-tree-merge (cdr tree1) (cdr tree2)))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
280 ((> l1 l2) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
281 (cvs-tree-merge |
55790
45bf91de4d41
(cvs-tree-merge, cvs-tags->tree): Use `butlast', not `cvs-butlast'.
Juanma Barranquero <lekktu@gmail.com>
parents:
55076
diff
changeset
|
282 (list (cons (cvs-tag-make (butlast vl1)) tree1)) tree2)) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
283 ((< l1 l2) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
284 (cvs-tree-merge |
55790
45bf91de4d41
(cvs-tree-merge, cvs-tags->tree): Use `butlast', not `cvs-butlast'.
Juanma Barranquero <lekktu@gmail.com>
parents:
55076
diff
changeset
|
285 tree1 (list (cons (cvs-tag-make (butlast vl2)) tree2))))))))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
286 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
287 (defun cvs-tag-make-tag (tag) |
30618
9dd1a6504bdd
Use `nth' instead of `first', `second', and `third'.
Gerd Moellmann <gerd@gnu.org>
parents:
28857
diff
changeset
|
288 (let ((vl (mapcar 'string-to-number (split-string (nth 2 tag) "\\.")))) |
9dd1a6504bdd
Use `nth' instead of `first', `second', and `third'.
Gerd Moellmann <gerd@gnu.org>
parents:
28857
diff
changeset
|
289 (cvs-tag-make vl (nth 0 tag) (intern (nth 1 tag))))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
290 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
291 (defun cvs-tags->tree (tags) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
292 "Make a tree out of a list of TAGS." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
293 (let ((tags |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
294 (mapcar |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
295 (lambda (tag) |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
296 (let ((tag (cvs-tag-make-tag tag))) |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
297 (list (if (not (eq (cvs-tag->type tag) 'branch)) tag |
55790
45bf91de4d41
(cvs-tree-merge, cvs-tags->tree): Use `butlast', not `cvs-butlast'.
Juanma Barranquero <lekktu@gmail.com>
parents:
55076
diff
changeset
|
298 (list (cvs-tag-make (butlast (cvs-tag->vlist tag))) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
299 tag))))) |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
300 tags))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
301 (while (cdr tags) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
302 (let (tl) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
303 (while tags |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
304 (push (cvs-tree-merge (pop tags) (pop tags)) tl)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
305 (setq tags (nreverse tl)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
306 (car tags))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
307 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
308 (defun cvs-status-get-tags () |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
309 "Look for a list of tags, read them in and delete them. |
42206 | 310 Return nil if there was an empty list of tags and t if there wasn't |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
311 even a list. Else, return the list of tags where each element of |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
312 the list is a three-string list TAG, KIND, REV." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
313 (let ((tags nil)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
314 (if (not (re-search-forward cvs-status-tags-leader-re nil t)) t |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
315 (forward-char 1) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
316 (let ((pt (point)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
317 (lastrev nil) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
318 (case-fold-search t)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
319 (or |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
320 (looking-at "\\s-+no\\s-+tags") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
321 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
322 (progn ; normal listing |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
323 (while (looking-at "^[ \t]+\\([^ \t\n]+\\)[ \t]+(\\([a-z]+\\): \\(.+\\))$") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
324 (push (list (match-string 1) (match-string 2) (match-string 3)) tags) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
325 (forward-line 1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
326 (unless (looking-at "^$") (setq tags nil) (goto-char pt)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
327 tags) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
328 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
329 (progn ; cvstree-style listing |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
330 (while (or (looking-at "^ .+\\(.\\) \\([0-9.]+\\): \\([^\n\t .0-9][^\n\t ]*\\)?$") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
331 (and lastrev |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
332 (looking-at "^ .+\\(\\) \\(8\\)? \\([^\n\t .0-9][^\n\t ]*\\)$"))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
333 (setq lastrev (or (match-string 2) lastrev)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
334 (push (list (match-string 3) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
335 (if (equal (match-string 1) " ") "branch" "revision") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
336 lastrev) tags) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
337 (forward-line 1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
338 (unless (looking-at "^$") (setq tags nil) (goto-char pt)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
339 (setq tags (nreverse tags))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
340 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
341 (progn ; new tree style listing |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
342 (let* ((re-lead "[ \t]*\\(-+\\)?\\(|\n?[ \t]+\\)*") |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
343 (re3 (concat re-lead "\\(\\.\\)?\\(" cvs-status-rev-re "\\)")) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
344 (re2 (concat re-lead cvs-status-tag-re "\\(\\)")) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
345 (re1 (concat re-lead cvs-status-tag-re |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
346 " (\\(" cvs-status-rev-re "\\))"))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
347 (while (or (looking-at re1) (looking-at re2) (looking-at re3)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
348 (push (list (match-string 3) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
349 (if (match-string 1) "branch" "revision") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
350 (match-string 4)) tags) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
351 (goto-char (match-end 0)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
352 (when (eolp) (forward-char 1)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
353 (unless (looking-at "^$") (setq tags nil) (goto-char pt)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
354 (setq tags (nreverse tags)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
355 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
356 (delete-region pt (point))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
357 tags))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
358 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
359 (defvar font-lock-mode) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
360 (defun cvs-refontify (beg end) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
361 (when (and (boundp 'font-lock-mode) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
362 font-lock-mode |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
363 (fboundp 'font-lock-fontify-region)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
364 (font-lock-fontify-region (1- beg) (1+ end)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
365 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
366 (defun cvs-status-trees () |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
367 "Look for a lists of tags, and replace them with trees." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
368 (interactive) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
369 (save-excursion |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
370 (goto-char (point-min)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
371 (let ((inhibit-read-only t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
372 (tags nil)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
373 (while (listp (setq tags (cvs-status-get-tags))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
374 ;;(let ((pt (save-excursion (forward-line -1) (point)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
375 (save-restriction |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
376 (narrow-to-region (point) (point)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
377 ;;(newline) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
378 (combine-after-change-calls |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
379 (cvs-tree-print (cvs-tags->tree tags) 'cvs-tag->string 3))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
380 ;;(cvs-refontify pt (point)) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
381 ;;(sit-for 0) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
382 ;;) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
383 )))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
384 |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
385 ;;;; |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
386 ;;;; CVSTree-style trees |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
387 ;;;; |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
388 |
55076
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
389 (defvar cvs-tree-use-jisx0208 nil) ;Old compat var. |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
390 (defvar cvs-tree-use-charset |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
391 (cond |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
392 (cvs-tree-use-jisx0208 'jisx0208) |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
393 ((char-displayable-p ?━) 'unicode) |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
394 ((char-displayable-p (make-char 'japanese-jisx0208 40 44)) 'jisx0208)) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
395 "*Non-nil if we should use the graphical glyphs from `japanese-jisx0208'. |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
396 Otherwise, default to ASCII chars like +, - and |.") |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
397 |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
398 (defconst cvs-tree-char-space |
55076
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
399 (case cvs-tree-use-charset |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
400 (jisx0208 (make-char 'japanese-jisx0208 33 33)) |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
401 (unicode " ") |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
402 (t " "))) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
403 (defconst cvs-tree-char-hbar |
55076
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
404 (case cvs-tree-use-charset |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
405 (jisx0208 (make-char 'japanese-jisx0208 40 44)) |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
406 (unicode "━") |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
407 (t "--"))) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
408 (defconst cvs-tree-char-vbar |
55076
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
409 (case cvs-tree-use-charset |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
410 (jisx0208 (make-char 'japanese-jisx0208 40 45)) |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
411 (unicode "┃") |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
412 (t "| "))) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
413 (defconst cvs-tree-char-branch |
55076
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
414 (case cvs-tree-use-charset |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
415 (jisx0208 (make-char 'japanese-jisx0208 40 50)) |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
416 (unicode "┣") |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
417 (t "+-"))) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
418 (defconst cvs-tree-char-eob ;end of branch |
55076
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
419 (case cvs-tree-use-charset |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
420 (jisx0208 (make-char 'japanese-jisx0208 40 49)) |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
421 (unicode "┗") |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
422 (t "`-"))) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
423 (defconst cvs-tree-char-bob ;beginning of branch |
55076
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
424 (case cvs-tree-use-charset |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
425 (jisx0208 (make-char 'japanese-jisx0208 40 51)) |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
426 (unicode "┳") |
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
427 (t "+-"))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
428 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
429 (defun cvs-tag-lessp (tag1 tag2) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
430 (eq (cvs-tag-compare tag1 tag2) 'more2)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
431 |
28249
090fad6a7bcb
(cvs-status-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
432 (defvar cvs-tree-nomerge nil) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
433 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
434 (defun cvs-status-cvstrees (&optional arg) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
435 "Look for a list of tags, and replace it with a tree. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
436 Optional prefix ARG chooses between two representations." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
437 (interactive "P") |
55076
913c2e3a059f
(cvs-tree-use-charset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54579
diff
changeset
|
438 (when (and cvs-tree-use-charset |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
439 (not enable-multibyte-characters)) |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
440 ;; We need to convert the buffer from unibyte to multibyte |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
441 ;; since we'll use multibyte chars for the tree. |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
442 (let ((modified (buffer-modified-p)) |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
443 (inhibit-read-only t) |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
444 (inhibit-modification-hooks t)) |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
445 (unwind-protect |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
446 (progn |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
447 (decode-coding-region (point-min) (point-max) 'undecided) |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
448 (set-buffer-multibyte t)) |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
449 (restore-buffer-modified-p modified)))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
450 (save-excursion |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
451 (goto-char (point-min)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
452 (let ((inhibit-read-only t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
453 (tags nil) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
454 (cvs-tree-nomerge (if arg (not cvs-tree-nomerge) cvs-tree-nomerge))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
455 (while (listp (setq tags (cvs-status-get-tags))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
456 (let ((tags (mapcar 'cvs-tag-make-tag tags)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
457 ;;(pt (save-excursion (forward-line -1) (point))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
458 ) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
459 (setq tags (sort tags 'cvs-tag-lessp)) |
30887
c4366892a814
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30618
diff
changeset
|
460 (let* ((first (car tags)) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
461 (prev (if (cvs-tag-p first) |
30887
c4366892a814
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30618
diff
changeset
|
462 (list (car (cvs-tag->vlist first))) nil))) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
463 (combine-after-change-calls |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
464 (cvs-tree-tags-insert tags prev)) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
465 ;;(cvs-refontify pt (point)) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
466 ;;(sit-for 0) |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
467 )))))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
468 |
56750
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
469 (defun-cvs-mode (cvs-status-checkout . NOARGS) (dir) |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
470 "Run cvs-checkout against the tag under the point. |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
471 The files are stored to DIR." |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
472 (interactive |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
473 (let* ((module (cvs-get-module)) |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
474 (branch (cvs-prefix-get 'cvs-branch-prefix)) |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
475 (prompt (format "CVS Checkout Directory for `%s%s': " |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
476 module |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
477 (if branch (format "(branch: %s)" branch) |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
478 "")))) |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
479 (list |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
480 (read-directory-name prompt |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
481 nil default-directory nil)))) |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
482 (let ((modules (cvs-string->strings (cvs-get-module))) |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
483 (flags (cvs-add-branch-prefix |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
484 (cvs-flags-query 'cvs-checkout-flags "cvs checkout flags"))) |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
485 (cvs-cvsroot (cvs-get-cvsroot))) |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
486 (cvs-checkout modules dir flags))) |
5ca81cc9c2de
(cvs-status-checkout): New function.
Masatake YAMATO <jet@gyve.org>
parents:
55790
diff
changeset
|
487 |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
488 (defun cvs-tree-tags-insert (tags prev) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
489 (when tags |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
490 (let* ((tag (car tags)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
491 (vlist (cvs-tag->vlist tag)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
492 (nprev ;"next prev" |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
493 (let* ((next (cvs-car (cadr tags))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
494 (nprev (if (and cvs-tree-nomerge next |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
495 (equal vlist (cvs-tag->vlist next))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
496 prev vlist))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
497 (cvs-map (lambda (v p) v) nprev prev))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
498 (after (save-excursion |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
499 (newline) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
500 (cvs-tree-tags-insert (cdr tags) nprev))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
501 (pe t) ;"prev equal" |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
502 (nas nil)) ;"next afters" to be returned |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
503 (insert " ") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
504 (do* ((vs vlist (cdr vs)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
505 (ps prev (cdr ps)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
506 (as after (cdr as))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
507 ((and (null as) (null vs) (null ps)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
508 (let ((revname (cvs-status-vl-to-str vlist))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
509 (if (cvs-every 'identity (cvs-map 'equal prev vlist)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
510 (insert (make-string (+ 4 (length revname)) ? ) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
511 (or (cvs-tag->name tag) "")) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
512 (insert " " revname ": " (or (cvs-tag->name tag) ""))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
513 (let* ((eq (and pe (equal (car ps) (car vs)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
514 (next-eq (equal (cadr ps) (cadr vs)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
515 (let* ((na+char |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
516 (if (car as) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
517 (if eq |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
518 (if next-eq (cons t cvs-tree-char-vbar) |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
519 (cons t cvs-tree-char-branch)) |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
520 (cons nil cvs-tree-char-bob)) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
521 (if eq |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
522 (if next-eq (cons nil cvs-tree-char-space) |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
523 (cons t cvs-tree-char-eob)) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
524 (cons nil (if (and (eq (cvs-tag->type tag) 'branch) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
525 (cvs-every 'null as)) |
33231
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
526 cvs-tree-char-space |
c08a986392cd
(cvs-tree-merge): Use cvs-butlast (avoid CL).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31972
diff
changeset
|
527 cvs-tree-char-hbar)))))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
528 (insert (cdr na+char)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
529 (push (car na+char) nas)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
530 (setq pe eq))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
531 (nreverse nas)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
532 |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42557
diff
changeset
|
533 ;;;; |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
534 ;;;; Merged trees from different files |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42557
diff
changeset
|
535 ;;;; |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
536 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
537 (defun cvs-tree-fuzzy-merge-1 (trees tree prev) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
538 ) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
539 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
540 (defun cvs-tree-fuzzy-merge (trees tree) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
541 "Do the impossible: merge TREE into TREES." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
542 ()) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
543 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
544 (defun cvs-tree () |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
545 "Get tags from the status output and merge tham all into a big tree." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
546 (save-excursion |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
547 (goto-char (point-min)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
548 (let ((inhibit-read-only t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
549 (trees (make-vector 31 0)) tree) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
550 (while (listp (setq tree (cvs-tags->tree (cvs-status-get-tags)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
551 (cvs-tree-fuzzy-merge trees tree)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
552 (erase-buffer) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
553 (let ((cvs-tag-print-rev nil)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
554 (cvs-tree-print tree 'cvs-tag->string 3))))) |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42557
diff
changeset
|
555 |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
556 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
557 (provide 'cvs-status) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
558 |
52401 | 559 ;;; arch-tag: db8b5094-d02a-473e-a476-544e89ff5ad0 |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
560 ;;; cvs-status.el ends here |