Mercurial > hg > mercurial-crew-with-dirclash
annotate contrib/mercurial.el @ 2548:0229ff95faec
Clarified message when nothing to merge is seen.
Sometimes there's a non-tip head waiting to be merged, especially after
pulling in remote changes while there were local modifications in the working
directory which had to be committed before 'hg merge' can work.
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Mon, 03 Jul 2006 19:14:29 +0200 |
parents | d78ae783499d |
children | 92ba858ed640 |
rev | line source |
---|---|
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1 ;;; mercurial.el --- Emacs support for the Mercurial distributed SCM |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
2 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
3 ;; Copyright (C) 2005 Bryan O'Sullivan |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
4 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
5 ;; Author: Bryan O'Sullivan <bos@serpentine.com> |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
6 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
7 ;; mercurial.el is free software; you can redistribute it and/or |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
8 ;; modify it under the terms of version 2 of the GNU General Public |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
9 ;; License as published by the Free Software Foundation. |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
10 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
11 ;; mercurial.el is distributed in the hope that it will be useful, but |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
12 ;; WITHOUT ANY WARRANTY; without even the implied warranty of |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
13 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
14 ;; General Public License for more details. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
15 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
16 ;; You should have received a copy of the GNU General Public License |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
17 ;; along with mercurial.el, GNU Emacs, or XEmacs; see the file COPYING |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
18 ;; (`C-h C-l'). If not, write to the Free Software Foundation, Inc., |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
19 ;; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
20 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
21 ;;; Commentary: |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
22 |
1004
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
23 ;; mercurial.el builds upon Emacs's VC mode to provide flexible |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
24 ;; integration with the Mercurial distributed SCM tool. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
25 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
26 ;; To get going as quickly as possible, load mercurial.el into Emacs and |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
27 ;; type `C-c h h'; this runs hg-help-overview, which prints a helpful |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
28 ;; usage overview. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
29 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
30 ;; Much of the inspiration for mercurial.el comes from Rajesh |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
31 ;; Vaidheeswarran's excellent p4.el, which does an admirably thorough |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
32 ;; job for the commercial Perforce SCM product. In fact, substantial |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
33 ;; chunks of code are adapted from p4.el. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
34 |
1004
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
35 ;; This code has been developed under XEmacs 21.5, and may not work as |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
36 ;; well under GNU Emacs (albeit tested under 21.4). Patches to |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
37 ;; enhance the portability of this code, fix bugs, and add features |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
38 ;; are most welcome. You can clone a Mercurial repository for this |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
39 ;; package from http://www.serpentine.com/hg/hg-emacs |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
40 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
41 ;; Please send problem reports and suggestions to bos@serpentine.com. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
42 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
43 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
44 ;;; Code: |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
45 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
46 (require 'advice) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
47 (require 'cl) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
48 (require 'diff-mode) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
49 (require 'easymenu) |
1024
5b257e419816
Sync buffers prior to doing a diff.
bos@serpentine.internal.keyresearch.com
parents:
1011
diff
changeset
|
50 (require 'executable) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
51 (require 'vc) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
52 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
53 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
54 ;;; XEmacs has view-less, while GNU Emacs has view. Joy. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
55 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
56 (condition-case nil |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
57 (require 'view-less) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
58 (error nil)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
59 (condition-case nil |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
60 (require 'view) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
61 (error nil)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
62 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
63 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
64 ;;; Variables accessible through the custom system. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
65 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
66 (defgroup mercurial nil |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
67 "Mercurial distributed SCM." |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
68 :group 'tools) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
69 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
70 (defcustom hg-binary |
1011
d06420c90d8b
Emacs: search for hg in path before looking in funny places.
bos@serpentine.internal.keyresearch.com
parents:
1004
diff
changeset
|
71 (or (executable-find "hg") |
d06420c90d8b
Emacs: search for hg in path before looking in funny places.
bos@serpentine.internal.keyresearch.com
parents:
1004
diff
changeset
|
72 (dolist (path '("~/bin/hg" "/usr/bin/hg" "/usr/local/bin/hg")) |
d06420c90d8b
Emacs: search for hg in path before looking in funny places.
bos@serpentine.internal.keyresearch.com
parents:
1004
diff
changeset
|
73 (when (file-executable-p path) |
d06420c90d8b
Emacs: search for hg in path before looking in funny places.
bos@serpentine.internal.keyresearch.com
parents:
1004
diff
changeset
|
74 (return path)))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
75 "The path to Mercurial's hg executable." |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
76 :type '(file :must-match t) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
77 :group 'mercurial) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
78 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
79 (defcustom hg-mode-hook nil |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
80 "Hook run when a buffer enters hg-mode." |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
81 :type 'sexp |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
82 :group 'mercurial) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
83 |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
84 (defcustom hg-commit-mode-hook nil |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
85 "Hook run when a buffer is created to prepare a commit." |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
86 :type 'sexp |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
87 :group 'mercurial) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
88 |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
89 (defcustom hg-pre-commit-hook nil |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
90 "Hook run before a commit is performed. |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
91 If you want to prevent the commit from proceeding, raise an error." |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
92 :type 'sexp |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
93 :group 'mercurial) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
94 |
1029
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
95 (defcustom hg-log-mode-hook nil |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
96 "Hook run after a buffer is filled with log information." |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
97 :type 'sexp |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
98 :group 'mercurial) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
99 |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
100 (defcustom hg-global-prefix "\C-ch" |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
101 "The global prefix for Mercurial keymap bindings." |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
102 :type 'sexp |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
103 :group 'mercurial) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
104 |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
105 (defcustom hg-commit-allow-empty-message nil |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
106 "Whether to allow changes to be committed with empty descriptions." |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
107 :type 'boolean |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
108 :group 'mercurial) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
109 |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
110 (defcustom hg-commit-allow-empty-file-list nil |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
111 "Whether to allow changes to be committed without any modified files." |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
112 :type 'boolean |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
113 :group 'mercurial) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
114 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
115 (defcustom hg-rev-completion-limit 100 |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
116 "The maximum number of revisions that hg-read-rev will offer to complete. |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
117 This affects memory usage and performance when prompting for revisions |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
118 in a repository with a lot of history." |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
119 :type 'integer |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
120 :group 'mercurial) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
121 |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
122 (defcustom hg-log-limit 50 |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
123 "The maximum number of revisions that hg-log will display." |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
124 :type 'integer |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
125 :group 'mercurial) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
126 |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
127 (defcustom hg-update-modeline t |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
128 "Whether to update the modeline with the status of a file after every save. |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
129 Set this to nil on platforms with poor process management, such as Windows." |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
130 :type 'boolean |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
131 :group 'mercurial) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
132 |
1029
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
133 (defcustom hg-incoming-repository "default" |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
134 "The repository from which changes are pulled from by default. |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
135 This should be a symbolic repository name, since it is used for all |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
136 repository-related commands." |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
137 :type 'string |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
138 :group 'mercurial) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
139 |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
140 (defcustom hg-outgoing-repository "default-push" |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
141 "The repository to which changes are pushed to by default. |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
142 This should be a symbolic repository name, since it is used for all |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
143 repository-related commands." |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
144 :type 'string |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
145 :group 'mercurial) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
146 |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
147 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
148 ;;; Other variables. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
149 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
150 (defconst hg-running-xemacs (string-match "XEmacs" emacs-version) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
151 "Is mercurial.el running under XEmacs?") |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
152 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
153 (defvar hg-mode nil |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
154 "Is this file managed by Mercurial?") |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
155 (make-variable-buffer-local 'hg-mode) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
156 (put 'hg-mode 'permanent-local t) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
157 |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
158 (defvar hg-status nil) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
159 (make-variable-buffer-local 'hg-status) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
160 (put 'hg-status 'permanent-local t) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
161 |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
162 (defvar hg-prev-buffer nil) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
163 (make-variable-buffer-local 'hg-prev-buffer) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
164 (put 'hg-prev-buffer 'permanent-local t) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
165 |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
166 (defvar hg-root nil) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
167 (make-variable-buffer-local 'hg-root) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
168 (put 'hg-root 'permanent-local t) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
169 |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
170 (defvar hg-output-buffer-name "*Hg*" |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
171 "The name to use for Mercurial output buffers.") |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
172 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
173 (defvar hg-file-history nil) |
1029
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
174 (defvar hg-repo-history nil) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
175 (defvar hg-rev-history nil) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
176 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
177 |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
178 ;;; Random constants. |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
179 |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
180 (defconst hg-commit-message-start |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
181 "--- Enter your commit message. Type `C-c C-c' to commit. ---\n") |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
182 |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
183 (defconst hg-commit-message-end |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
184 "--- Files in bold will be committed. Click to toggle selection. ---\n") |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
185 |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
186 |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
187 ;;; hg-mode keymap. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
188 |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
189 (defvar hg-mode-map (make-sparse-keymap)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
190 (define-key hg-mode-map "\C-xv" 'hg-prefix-map) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
191 |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
192 (defvar hg-prefix-map |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
193 (let ((map (copy-keymap vc-prefix-map))) |
958 | 194 (if (functionp 'set-keymap-name) |
195 (set-keymap-name map 'hg-prefix-map)); XEmacs | |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
196 map) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
197 "This keymap overrides some default vc-mode bindings.") |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
198 (fset 'hg-prefix-map hg-prefix-map) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
199 (define-key hg-prefix-map "=" 'hg-diff) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
200 (define-key hg-prefix-map "c" 'hg-undo) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
201 (define-key hg-prefix-map "g" 'hg-annotate) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
202 (define-key hg-prefix-map "l" 'hg-log) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
203 (define-key hg-prefix-map "n" 'hg-commit-start) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
204 ;; (define-key hg-prefix-map "r" 'hg-update) |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
205 (define-key hg-prefix-map "u" 'hg-revert-buffer) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
206 (define-key hg-prefix-map "~" 'hg-version-other-window) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
207 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
208 (add-minor-mode 'hg-mode 'hg-mode hg-mode-map) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
209 |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
210 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
211 ;;; Global keymap. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
212 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
213 (global-set-key "\C-xvi" 'hg-add) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
214 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
215 (defvar hg-global-map (make-sparse-keymap)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
216 (fset 'hg-global-map hg-global-map) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
217 (global-set-key hg-global-prefix 'hg-global-map) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
218 (define-key hg-global-map "," 'hg-incoming) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
219 (define-key hg-global-map "." 'hg-outgoing) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
220 (define-key hg-global-map "<" 'hg-pull) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
221 (define-key hg-global-map "=" 'hg-diff-repo) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
222 (define-key hg-global-map ">" 'hg-push) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
223 (define-key hg-global-map "?" 'hg-help-overview) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
224 (define-key hg-global-map "A" 'hg-addremove) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
225 (define-key hg-global-map "U" 'hg-revert) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
226 (define-key hg-global-map "a" 'hg-add) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
227 (define-key hg-global-map "c" 'hg-commit-start) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
228 (define-key hg-global-map "f" 'hg-forget) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
229 (define-key hg-global-map "h" 'hg-help-overview) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
230 (define-key hg-global-map "i" 'hg-init) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
231 (define-key hg-global-map "l" 'hg-log-repo) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
232 (define-key hg-global-map "r" 'hg-root) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
233 (define-key hg-global-map "s" 'hg-status) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
234 (define-key hg-global-map "u" 'hg-update) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
235 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
236 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
237 ;;; View mode keymap. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
238 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
239 (defvar hg-view-mode-map |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
240 (let ((map (copy-keymap (if (boundp 'view-minor-mode-map) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
241 view-minor-mode-map |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
242 view-mode-map)))) |
958 | 243 (if (functionp 'set-keymap-name) |
244 (set-keymap-name map 'hg-view-mode-map)); XEmacs | |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
245 map)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
246 (fset 'hg-view-mode-map hg-view-mode-map) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
247 (define-key hg-view-mode-map |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
248 (if hg-running-xemacs [button2] [mouse-2]) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
249 'hg-buffer-mouse-clicked) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
250 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
251 |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
252 ;;; Commit mode keymaps. |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
253 |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
254 (defvar hg-commit-mode-map (make-sparse-keymap)) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
255 (define-key hg-commit-mode-map "\C-c\C-c" 'hg-commit-finish) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
256 (define-key hg-commit-mode-map "\C-c\C-k" 'hg-commit-kill) |
1029
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
257 (define-key hg-commit-mode-map "\C-xv=" 'hg-diff-repo) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
258 |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
259 (defvar hg-commit-mode-file-map (make-sparse-keymap)) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
260 (define-key hg-commit-mode-file-map |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
261 (if hg-running-xemacs [button2] [mouse-2]) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
262 'hg-commit-mouse-clicked) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
263 (define-key hg-commit-mode-file-map " " 'hg-commit-toggle-file) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
264 (define-key hg-commit-mode-file-map "\r" 'hg-commit-toggle-file) |
1308
2073e5a71008
Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1246
diff
changeset
|
265 |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
266 |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
267 ;;; Convenience functions. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
268 |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
269 (defsubst hg-binary () |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
270 (if hg-binary |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
271 hg-binary |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
272 (error "No `hg' executable found!"))) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
273 |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
274 (defsubst hg-replace-in-string (str regexp newtext &optional literal) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
275 "Replace all matches in STR for REGEXP with NEWTEXT string. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
276 Return the new string. Optional LITERAL non-nil means do a literal |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
277 replacement. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
278 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
279 This function bridges yet another pointless impedance gap between |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
280 XEmacs and GNU Emacs." |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
281 (if (fboundp 'replace-in-string) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
282 (replace-in-string str regexp newtext literal) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
283 (replace-regexp-in-string regexp newtext str nil literal))) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
284 |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
285 (defsubst hg-strip (str) |
1178 | 286 "Strip leading and trailing blank lines from a string." |
287 (hg-replace-in-string (hg-replace-in-string str "[\r\n][ \t\r\n]*\\'" "") | |
288 "\\`[ \t\r\n]*[\r\n]" "")) | |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
289 |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
290 (defsubst hg-chomp (str) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
291 "Strip trailing newlines from a string." |
1178 | 292 (hg-replace-in-string str "[\r\n]+\'" "")) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
293 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
294 (defun hg-run-command (command &rest args) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
295 "Run the shell command COMMAND, returning (EXIT-CODE . COMMAND-OUTPUT). |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
296 The list ARGS contains a list of arguments to pass to the command." |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
297 (let* (exit-code |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
298 (output |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
299 (with-output-to-string |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
300 (with-current-buffer |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
301 standard-output |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
302 (setq exit-code |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
303 (apply 'call-process command nil t nil args)))))) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
304 (cons exit-code output))) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
305 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
306 (defun hg-run (command &rest args) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
307 "Run the Mercurial command COMMAND, returning (EXIT-CODE . COMMAND-OUTPUT)." |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
308 (apply 'hg-run-command (hg-binary) command args)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
309 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
310 (defun hg-run0 (command &rest args) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
311 "Run the Mercurial command COMMAND, returning its output. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
312 If the command does not exit with a zero status code, raise an error." |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
313 (let ((res (apply 'hg-run-command (hg-binary) command args))) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
314 (if (not (eq (car res) 0)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
315 (error "Mercurial command failed %s - exit code %s" |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
316 (cons command args) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
317 (car res)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
318 (cdr res)))) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
319 |
1024
5b257e419816
Sync buffers prior to doing a diff.
bos@serpentine.internal.keyresearch.com
parents:
1011
diff
changeset
|
320 (defun hg-sync-buffers (path) |
5b257e419816
Sync buffers prior to doing a diff.
bos@serpentine.internal.keyresearch.com
parents:
1011
diff
changeset
|
321 "Sync buffers visiting PATH with their on-disk copies. |
5b257e419816
Sync buffers prior to doing a diff.
bos@serpentine.internal.keyresearch.com
parents:
1011
diff
changeset
|
322 If PATH is not being visited, but is under the repository root, sync |
5b257e419816
Sync buffers prior to doing a diff.
bos@serpentine.internal.keyresearch.com
parents:
1011
diff
changeset
|
323 all buffers visiting files in the repository." |
5b257e419816
Sync buffers prior to doing a diff.
bos@serpentine.internal.keyresearch.com
parents:
1011
diff
changeset
|
324 (let ((buf (find-buffer-visiting path))) |
5b257e419816
Sync buffers prior to doing a diff.
bos@serpentine.internal.keyresearch.com
parents:
1011
diff
changeset
|
325 (if buf |
5b257e419816
Sync buffers prior to doing a diff.
bos@serpentine.internal.keyresearch.com
parents:
1011
diff
changeset
|
326 (with-current-buffer buf |
5b257e419816
Sync buffers prior to doing a diff.
bos@serpentine.internal.keyresearch.com
parents:
1011
diff
changeset
|
327 (vc-buffer-sync)) |
5b257e419816
Sync buffers prior to doing a diff.
bos@serpentine.internal.keyresearch.com
parents:
1011
diff
changeset
|
328 (hg-do-across-repo path |
5b257e419816
Sync buffers prior to doing a diff.
bos@serpentine.internal.keyresearch.com
parents:
1011
diff
changeset
|
329 (vc-buffer-sync))))) |
1308
2073e5a71008
Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1246
diff
changeset
|
330 |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
331 (defun hg-buffer-commands (pnt) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
332 "Use the properties of a character to do something sensible." |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
333 (interactive "d") |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
334 (let ((rev (get-char-property pnt 'rev)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
335 (file (get-char-property pnt 'file)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
336 (date (get-char-property pnt 'date)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
337 (user (get-char-property pnt 'user)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
338 (host (get-char-property pnt 'host)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
339 (prev-buf (current-buffer))) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
340 (cond |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
341 (file |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
342 (find-file-other-window file)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
343 (rev |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
344 (hg-diff hg-view-file-name rev rev prev-buf)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
345 ((message "I don't know how to do that yet"))))) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
346 |
1004
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
347 (defsubst hg-event-point (event) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
348 "Return the character position of the mouse event EVENT." |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
349 (if hg-running-xemacs |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
350 (event-point event) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
351 (posn-point (event-start event)))) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
352 |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
353 (defsubst hg-event-window (event) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
354 "Return the window over which mouse event EVENT occurred." |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
355 (if hg-running-xemacs |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
356 (event-window event) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
357 (posn-window (event-start event)))) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
358 |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
359 (defun hg-buffer-mouse-clicked (event) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
360 "Translate the mouse clicks in a HG log buffer to character events. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
361 These are then handed off to `hg-buffer-commands'. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
362 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
363 Handle frickin' frackin' gratuitous event-related incompatibilities." |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
364 (interactive "e") |
1004
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
365 (select-window (hg-event-window event)) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
366 (hg-buffer-commands (hg-event-point event))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
367 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
368 (unless (fboundp 'view-minor-mode) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
369 (defun view-minor-mode (prev-buffer exit-func) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
370 (view-mode))) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
371 |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
372 (defsubst hg-abbrev-file-name (file) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
373 "Portable wrapper around abbreviate-file-name." |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
374 (if hg-running-xemacs |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
375 (abbreviate-file-name file t) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
376 (abbreviate-file-name file))) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
377 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
378 (defun hg-read-file-name (&optional prompt default) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
379 "Read a file or directory name, or a pattern, to use with a command." |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
380 (save-excursion |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
381 (while hg-prev-buffer |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
382 (set-buffer hg-prev-buffer)) |
2453
b5902db74ba3
Emacs: use `default-directory' if `buffer-file-name' is null.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2452
diff
changeset
|
383 (let ((path (or default (buffer-file-name) default-directory))) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
384 (if (or (not path) current-prefix-arg) |
2315
c4a2d8502cc0
Emacs: adapt read-file-name invocation for (non-X)Emacs 21.4.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
385 (expand-file-name |
c4a2d8502cc0
Emacs: adapt read-file-name invocation for (non-X)Emacs 21.4.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
386 (eval (list* 'read-file-name |
c4a2d8502cc0
Emacs: adapt read-file-name invocation for (non-X)Emacs 21.4.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
387 (format "File, directory or pattern%s: " |
c4a2d8502cc0
Emacs: adapt read-file-name invocation for (non-X)Emacs 21.4.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
388 (or prompt "")) |
c4a2d8502cc0
Emacs: adapt read-file-name invocation for (non-X)Emacs 21.4.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
389 (and path (file-name-directory path)) |
c4a2d8502cc0
Emacs: adapt read-file-name invocation for (non-X)Emacs 21.4.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
390 nil nil |
c4a2d8502cc0
Emacs: adapt read-file-name invocation for (non-X)Emacs 21.4.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
391 (and path (file-name-nondirectory path)) |
c4a2d8502cc0
Emacs: adapt read-file-name invocation for (non-X)Emacs 21.4.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
392 (if hg-running-xemacs |
c4a2d8502cc0
Emacs: adapt read-file-name invocation for (non-X)Emacs 21.4.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
393 (cons (quote 'hg-file-history) nil) |
c4a2d8502cc0
Emacs: adapt read-file-name invocation for (non-X)Emacs 21.4.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
394 nil)))) |
c4a2d8502cc0
Emacs: adapt read-file-name invocation for (non-X)Emacs 21.4.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
395 path)))) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
396 |
2316
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
397 (defun hg-read-number (&optional prompt default) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
398 "Read a integer value." |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
399 (save-excursion |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
400 (if (or (not default) current-prefix-arg) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
401 (string-to-number |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
402 (eval (list* 'read-string |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
403 (or prompt "") |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
404 (if default (cons (format "%d" default) nil) nil)))) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
405 default))) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
406 |
1029
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
407 (defun hg-read-config () |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
408 "Return an alist of (key . value) pairs of Mercurial config data. |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
409 Each key is of the form (section . name)." |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
410 (let (items) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
411 (dolist (line (split-string (hg-chomp (hg-run0 "debugconfig")) "\n") items) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
412 (string-match "^\\([^=]*\\)=\\(.*\\)" line) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
413 (let* ((left (substring line (match-beginning 1) (match-end 1))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
414 (right (substring line (match-beginning 2) (match-end 2))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
415 (key (split-string left "\\.")) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
416 (value (hg-replace-in-string right "\\\\n" "\n" t))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
417 (setq items (cons (cons (cons (car key) (cadr key)) value) items)))))) |
1308
2073e5a71008
Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1246
diff
changeset
|
418 |
1029
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
419 (defun hg-config-section (section config) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
420 "Return an alist of (name . value) pairs for SECTION of CONFIG." |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
421 (let (items) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
422 (dolist (item config items) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
423 (when (equal (caar item) section) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
424 (setq items (cons (cons (cdar item) (cdr item)) items)))))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
425 |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
426 (defun hg-string-starts-with (sub str) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
427 "Indicate whether string STR starts with the substring or character SUB." |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
428 (if (not (stringp sub)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
429 (and (> (length str) 0) (equal (elt str 0) sub)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
430 (let ((sub-len (length sub))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
431 (and (<= sub-len (length str)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
432 (string= sub (substring str 0 sub-len)))))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
433 |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
434 (defun hg-complete-repo (string predicate all) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
435 "Attempt to complete a repository name. |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
436 We complete on either symbolic names from Mercurial's config or real |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
437 directory names from the file system. We do not penalise URLs." |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
438 (or (if all |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
439 (all-completions string hg-repo-completion-table predicate) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
440 (try-completion string hg-repo-completion-table predicate)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
441 (let* ((str (expand-file-name string)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
442 (dir (file-name-directory str)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
443 (file (file-name-nondirectory str))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
444 (if all |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
445 (let (completions) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
446 (dolist (name (delete "./" (file-name-all-completions file dir)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
447 completions) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
448 (let ((path (concat dir name))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
449 (when (file-directory-p path) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
450 (setq completions (cons name completions)))))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
451 (let ((comp (file-name-completion file dir))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
452 (if comp |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
453 (hg-abbrev-file-name (concat dir comp)))))))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
454 |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
455 (defun hg-read-repo-name (&optional prompt initial-contents default) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
456 "Read the location of a repository." |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
457 (save-excursion |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
458 (while hg-prev-buffer |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
459 (set-buffer hg-prev-buffer)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
460 (let (hg-repo-completion-table) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
461 (if current-prefix-arg |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
462 (progn |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
463 (dolist (path (hg-config-section "paths" (hg-read-config))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
464 (setq hg-repo-completion-table |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
465 (cons (cons (car path) t) hg-repo-completion-table)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
466 (unless (hg-string-starts-with directory-sep-char (cdr path)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
467 (setq hg-repo-completion-table |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
468 (cons (cons (cdr path) t) hg-repo-completion-table)))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
469 (completing-read (format "Repository%s: " (or prompt "")) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
470 'hg-complete-repo |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
471 nil |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
472 nil |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
473 initial-contents |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
474 'hg-repo-history |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
475 default)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
476 default)))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
477 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
478 (defun hg-read-rev (&optional prompt default) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
479 "Read a revision or tag, offering completions." |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
480 (save-excursion |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
481 (while hg-prev-buffer |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
482 (set-buffer hg-prev-buffer)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
483 (let ((rev (or default "tip"))) |
1029
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
484 (if current-prefix-arg |
1175
7e909ceeb36a
Emacs: fix invocations of "hg log" to match current behaviour of log.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1029
diff
changeset
|
485 (let ((revs (split-string |
7e909ceeb36a
Emacs: fix invocations of "hg log" to match current behaviour of log.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1029
diff
changeset
|
486 (hg-chomp |
7e909ceeb36a
Emacs: fix invocations of "hg log" to match current behaviour of log.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1029
diff
changeset
|
487 (hg-run0 "-q" "log" "-r" |
7e909ceeb36a
Emacs: fix invocations of "hg log" to match current behaviour of log.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1029
diff
changeset
|
488 (format "-%d:tip" hg-rev-completion-limit))) |
7e909ceeb36a
Emacs: fix invocations of "hg log" to match current behaviour of log.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1029
diff
changeset
|
489 "[\n:]"))) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
490 (dolist (line (split-string (hg-chomp (hg-run0 "tags")) "\n")) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
491 (setq revs (cons (car (split-string line "\\s-")) revs))) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
492 (completing-read (format "Revision%s (%s): " |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
493 (or prompt "") |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
494 (or default "tip")) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
495 (map 'list 'cons revs revs) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
496 nil |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
497 nil |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
498 nil |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
499 'hg-rev-history |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
500 (or default "tip"))) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
501 rev)))) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
502 |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
503 (defmacro hg-do-across-repo (path &rest body) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
504 (let ((root-name (gensym "root-")) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
505 (buf-name (gensym "buf-"))) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
506 `(let ((,root-name (hg-root ,path))) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
507 (save-excursion |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
508 (dolist (,buf-name (buffer-list)) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
509 (set-buffer ,buf-name) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
510 (when (and hg-status (equal (hg-root buffer-file-name) ,root-name)) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
511 ,@body)))))) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
512 |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
513 (put 'hg-do-across-repo 'lisp-indent-function 1) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
514 |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
515 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
516 ;;; View mode bits. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
517 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
518 (defun hg-exit-view-mode (buf) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
519 "Exit from hg-view-mode. |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
520 We delete the current window if entering hg-view-mode split the |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
521 current frame." |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
522 (when (and (eq buf (current-buffer)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
523 (> (length (window-list)) 1)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
524 (delete-window)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
525 (when (buffer-live-p buf) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
526 (kill-buffer buf))) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
527 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
528 (defun hg-view-mode (prev-buffer &optional file-name) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
529 (goto-char (point-min)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
530 (set-buffer-modified-p nil) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
531 (toggle-read-only t) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
532 (view-minor-mode prev-buffer 'hg-exit-view-mode) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
533 (use-local-map hg-view-mode-map) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
534 (setq truncate-lines t) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
535 (when file-name |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
536 (set (make-local-variable 'hg-view-file-name) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
537 (hg-abbrev-file-name file-name)))) |
1308
2073e5a71008
Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1246
diff
changeset
|
538 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
539 (defun hg-file-status (file) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
540 "Return status of FILE, or nil if FILE does not exist or is unmanaged." |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
541 (let* ((s (hg-run "status" file)) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
542 (exit (car s)) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
543 (output (cdr s))) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
544 (if (= exit 0) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
545 (let ((state (assoc (substring output 0 (min (length output) 2)) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
546 '(("M " . modified) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
547 ("A " . added) |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
548 ("R " . removed) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
549 ("? " . nil))))) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
550 (if state |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
551 (cdr state) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
552 'normal))))) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
553 |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
554 (defun hg-tip () |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
555 (split-string (hg-chomp (hg-run0 "-q" "tip")) ":")) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
556 |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
557 (defmacro hg-view-output (args &rest body) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
558 "Execute BODY in a clean buffer, then quickly display that buffer. |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
559 If the buffer contains one line, its contents are displayed in the |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
560 minibuffer. Otherwise, the buffer is displayed in view-mode. |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
561 ARGS is of the form (BUFFER-NAME &optional FILE), where BUFFER-NAME is |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
562 the name of the buffer to create, and FILE is the name of the file |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
563 being viewed." |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
564 (let ((prev-buf (gensym "prev-buf-")) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
565 (v-b-name (car args)) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
566 (v-m-rest (cdr args))) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
567 `(let ((view-buf-name ,v-b-name) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
568 (,prev-buf (current-buffer))) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
569 (get-buffer-create view-buf-name) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
570 (kill-buffer view-buf-name) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
571 (get-buffer-create view-buf-name) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
572 (set-buffer view-buf-name) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
573 (save-excursion |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
574 ,@body) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
575 (case (count-lines (point-min) (point-max)) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
576 ((0) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
577 (kill-buffer view-buf-name) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
578 (message "(No output)")) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
579 ((1) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
580 (let ((msg (hg-chomp (buffer-substring (point-min) (point-max))))) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
581 (kill-buffer view-buf-name) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
582 (message "%s" msg))) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
583 (t |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
584 (pop-to-buffer view-buf-name) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
585 (setq hg-prev-buffer ,prev-buf) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
586 (hg-view-mode ,prev-buf ,@v-m-rest)))))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
587 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
588 (put 'hg-view-output 'lisp-indent-function 1) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
589 |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
590 ;;; Context save and restore across revert. |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
591 |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
592 (defun hg-position-context (pos) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
593 "Return information to help find the given position again." |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
594 (let* ((end (min (point-max) (+ pos 98)))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
595 (list pos |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
596 (buffer-substring (max (point-min) (- pos 2)) end) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
597 (- end pos)))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
598 |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
599 (defun hg-buffer-context () |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
600 "Return information to help restore a user's editing context. |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
601 This is useful across reverts and merges, where a context is likely |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
602 to have moved a little, but not really changed." |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
603 (let ((point-context (hg-position-context (point))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
604 (mark-context (let ((mark (mark-marker))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
605 (and mark (hg-position-context mark))))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
606 (list point-context mark-context))) |
1308
2073e5a71008
Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1246
diff
changeset
|
607 |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
608 (defun hg-find-context (ctx) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
609 "Attempt to find a context in the given buffer. |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
610 Always returns a valid, hopefully sane, position." |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
611 (let ((pos (nth 0 ctx)) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
612 (str (nth 1 ctx)) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
613 (fixup (nth 2 ctx))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
614 (save-excursion |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
615 (goto-char (max (point-min) (- pos 15000))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
616 (if (and (not (equal str "")) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
617 (search-forward str nil t)) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
618 (- (point) fixup) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
619 (max pos (point-min)))))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
620 |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
621 (defun hg-restore-context (ctx) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
622 "Attempt to restore the user's editing context." |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
623 (let ((point-context (nth 0 ctx)) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
624 (mark-context (nth 1 ctx))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
625 (goto-char (hg-find-context point-context)) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
626 (when mark-context |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
627 (set-mark (hg-find-context mark-context))))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
628 |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
629 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
630 ;;; Hooks. |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
631 |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
632 (defun hg-mode-line (&optional force) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
633 "Update the modeline with the current status of a file. |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
634 An update occurs if optional argument FORCE is non-nil, |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
635 hg-update-modeline is non-nil, or we have not yet checked the state of |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
636 the file." |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
637 (when (and (hg-root) (or force hg-update-modeline (not hg-mode))) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
638 (let ((status (hg-file-status buffer-file-name))) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
639 (setq hg-status status |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
640 hg-mode (and status (concat " Hg:" |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
641 (car (hg-tip)) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
642 (cdr (assq status |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
643 '((normal . "") |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
644 (removed . "r") |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
645 (added . "a") |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
646 (modified . "m"))))))) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
647 status))) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
648 |
1371
68e84563c540
emacs minor mode optional argument
Robin Farine <robin.farine@terminus.org>
parents:
1308
diff
changeset
|
649 (defun hg-mode (&optional toggle) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
650 "Minor mode for Mercurial distributed SCM integration. |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
651 |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
652 The Mercurial mode user interface is based on that of VC mode, so if |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
653 you're already familiar with VC, the same keybindings and functions |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
654 will generally work. |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
655 |
2517
0086056322da
mercurial.el: inhibit backups for files managed by mercurial
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2457
diff
changeset
|
656 Below is a list of many common SCM tasks. In the list, `G/L\' |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
657 indicates whether a key binding is global (G) to a repository or local |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
658 (L) to a file. Many commands take a prefix argument. |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
659 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
660 SCM Task G/L Key Binding Command Name |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
661 -------- --- ----------- ------------ |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
662 Help overview (what you are reading) G C-c h h hg-help-overview |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
663 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
664 Tell Mercurial to manage a file G C-c h a hg-add |
1179 | 665 Commit changes to current file only L C-x v n hg-commit-start |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
666 Undo changes to file since commit L C-x v u hg-revert-buffer |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
667 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
668 Diff file vs last checkin L C-x v = hg-diff |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
669 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
670 View file change history L C-x v l hg-log |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
671 View annotated file L C-x v a hg-annotate |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
672 |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
673 Diff repo vs last checkin G C-c h = hg-diff-repo |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
674 View status of files in repo G C-c h s hg-status |
1179 | 675 Commit all changes G C-c h c hg-commit-start |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
676 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
677 Undo all changes since last commit G C-c h U hg-revert |
1179 | 678 View repo change history G C-c h l hg-log-repo |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
679 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
680 See changes that can be pulled G C-c h , hg-incoming |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
681 Pull changes G C-c h < hg-pull |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
682 Update working directory after pull G C-c h u hg-update |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
683 See changes that can be pushed G C-c h . hg-outgoing |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
684 Push changes G C-c h > hg-push" |
2517
0086056322da
mercurial.el: inhibit backups for files managed by mercurial
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2457
diff
changeset
|
685 (unless vc-make-backup-files |
0086056322da
mercurial.el: inhibit backups for files managed by mercurial
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2457
diff
changeset
|
686 (set (make-local-variable 'backup-inhibited) t)) |
2518
d78ae783499d
mercurial.el: fix misleading indent of code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2517
diff
changeset
|
687 (run-hooks 'hg-mode-hook)) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
688 |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
689 (defun hg-find-file-hook () |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
690 (when (hg-mode-line) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
691 (hg-mode))) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
692 |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
693 (add-hook 'find-file-hooks 'hg-find-file-hook) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
694 |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
695 (defun hg-after-save-hook () |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
696 (let ((old-status hg-status)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
697 (hg-mode-line) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
698 (if (and (not old-status) hg-status) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
699 (hg-mode)))) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
700 |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
701 (add-hook 'after-save-hook 'hg-after-save-hook) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
702 |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
703 |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
704 ;;; User interface functions. |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
705 |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
706 (defun hg-help-overview () |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
707 "This is an overview of the Mercurial SCM mode for Emacs. |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
708 |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
709 You can find the source code, license (GPL v2), and credits for this |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
710 code by typing `M-x find-library mercurial RET'." |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
711 (interactive) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
712 (hg-view-output ("Mercurial Help Overview") |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
713 (insert (documentation 'hg-help-overview)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
714 (let ((pos (point))) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
715 (insert (documentation 'hg-mode)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
716 (goto-char pos) |
2452
d1a7c8a5b835
Emacs: use delete-region instead of kill-* functions.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
717 (end-of-line 1) |
2457 | 718 (delete-region pos (point))) |
2454
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
719 (cd (hg-root)))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
720 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
721 (defun hg-add (path) |
996
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
722 "Add PATH to the Mercurial repository on the next commit. |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
723 With a prefix argument, prompt for the path to add." |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
724 (interactive (list (hg-read-file-name " to add"))) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
725 (let ((buf (current-buffer)) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
726 (update (equal buffer-file-name path))) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
727 (hg-view-output (hg-output-buffer-name) |
2454
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
728 (apply 'call-process (hg-binary) nil t nil (list "add" path)) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
729 ;; "hg add" shows pathes relative NOT TO ROOT BUT TO REPOSITORY |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
730 (replace-regexp " \\.\\.." " " nil 0 (buffer-size)) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
731 (goto-char 0) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
732 (cd (hg-root path))) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
733 (when update |
2517
0086056322da
mercurial.el: inhibit backups for files managed by mercurial
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2457
diff
changeset
|
734 (unless vc-make-backup-files |
0086056322da
mercurial.el: inhibit backups for files managed by mercurial
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2457
diff
changeset
|
735 (set (make-local-variable 'backup-inhibited) t)) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
736 (with-current-buffer buf |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
737 (hg-mode-line))))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
738 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
739 (defun hg-addremove () |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
740 (interactive) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
741 (error "not implemented")) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
742 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
743 (defun hg-annotate () |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
744 (interactive) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
745 (error "not implemented")) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
746 |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
747 (defun hg-commit-toggle-file (pos) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
748 "Toggle whether or not the file at POS will be committed." |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
749 (interactive "d") |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
750 (save-excursion |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
751 (goto-char pos) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
752 (let ((face (get-text-property pos 'face)) |
1004
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
753 (inhibit-read-only t) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
754 bol) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
755 (beginning-of-line) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
756 (setq bol (+ (point) 4)) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
757 (end-of-line) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
758 (if (eq face 'bold) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
759 (progn |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
760 (remove-text-properties bol (point) '(face nil)) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
761 (message "%s will not be committed" |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
762 (buffer-substring bol (point)))) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
763 (add-text-properties bol (point) '(face bold)) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
764 (message "%s will be committed" |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
765 (buffer-substring bol (point))))))) |
1308
2073e5a71008
Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1246
diff
changeset
|
766 |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
767 (defun hg-commit-mouse-clicked (event) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
768 "Toggle whether or not the file at POS will be committed." |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
769 (interactive "@e") |
1004
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
770 (hg-commit-toggle-file (hg-event-point event))) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
771 |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
772 (defun hg-commit-kill () |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
773 "Kill the commit currently being prepared." |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
774 (interactive) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
775 (when (or (not (buffer-modified-p)) (y-or-n-p "Really kill this commit? ")) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
776 (let ((buf hg-prev-buffer)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
777 (kill-buffer nil) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
778 (switch-to-buffer buf)))) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
779 |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
780 (defun hg-commit-finish () |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
781 "Finish preparing a commit, and perform the actual commit. |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
782 The hook hg-pre-commit-hook is run before anything else is done. If |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
783 the commit message is empty and hg-commit-allow-empty-message is nil, |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
784 an error is raised. If the list of files to commit is empty and |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
785 hg-commit-allow-empty-file-list is nil, an error is raised." |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
786 (interactive) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
787 (let ((root hg-root)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
788 (save-excursion |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
789 (run-hooks 'hg-pre-commit-hook) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
790 (goto-char (point-min)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
791 (search-forward hg-commit-message-start) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
792 (let (message files) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
793 (let ((start (point))) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
794 (goto-char (point-max)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
795 (search-backward hg-commit-message-end) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
796 (setq message (hg-strip (buffer-substring start (point))))) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
797 (when (and (= (length message) 0) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
798 (not hg-commit-allow-empty-message)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
799 (error "Cannot proceed - commit message is empty")) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
800 (forward-line 1) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
801 (beginning-of-line) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
802 (while (< (point) (point-max)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
803 (let ((pos (+ (point) 4))) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
804 (end-of-line) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
805 (when (eq (get-text-property pos 'face) 'bold) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
806 (end-of-line) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
807 (setq files (cons (buffer-substring pos (point)) files)))) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
808 (forward-line 1)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
809 (when (and (= (length files) 0) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
810 (not hg-commit-allow-empty-file-list)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
811 (error "Cannot proceed - no files to commit")) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
812 (setq message (concat message "\n")) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
813 (apply 'hg-run0 "--cwd" hg-root "commit" "-m" message files)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
814 (let ((buf hg-prev-buffer)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
815 (kill-buffer nil) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
816 (switch-to-buffer buf)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
817 (hg-do-across-repo root |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
818 (hg-mode-line))))) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
819 |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
820 (defun hg-commit-mode () |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
821 "Mode for describing a commit of changes to a Mercurial repository. |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
822 This involves two actions: describing the changes with a commit |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
823 message, and choosing the files to commit. |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
824 |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
825 To describe the commit, simply type some text in the designated area. |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
826 |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
827 By default, all modified, added and removed files are selected for |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
828 committing. Files that will be committed are displayed in bold face\; |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
829 those that will not are displayed in normal face. |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
830 |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
831 To toggle whether a file will be committed, move the cursor over a |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
832 particular file and hit space or return. Alternatively, middle click |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
833 on the file. |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
834 |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
835 Key bindings |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
836 ------------ |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
837 \\[hg-commit-finish] proceed with commit |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
838 \\[hg-commit-kill] kill commit |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
839 |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
840 \\[hg-diff-repo] view diff of pending changes" |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
841 (interactive) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
842 (use-local-map hg-commit-mode-map) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
843 (set-syntax-table text-mode-syntax-table) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
844 (setq local-abbrev-table text-mode-abbrev-table |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
845 major-mode 'hg-commit-mode |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
846 mode-name "Hg-Commit") |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
847 (set-buffer-modified-p nil) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
848 (setq buffer-undo-list nil) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
849 (run-hooks 'text-mode-hook 'hg-commit-mode-hook)) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
850 |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
851 (defun hg-commit-start () |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
852 "Prepare a commit of changes to the repository containing the current file." |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
853 (interactive) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
854 (while hg-prev-buffer |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
855 (set-buffer hg-prev-buffer)) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
856 (let ((root (hg-root)) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
857 (prev-buffer (current-buffer)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
858 modified-files) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
859 (unless root |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
860 (error "Cannot commit outside a repository!")) |
1024
5b257e419816
Sync buffers prior to doing a diff.
bos@serpentine.internal.keyresearch.com
parents:
1011
diff
changeset
|
861 (hg-sync-buffers root) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
862 (setq modified-files (hg-chomp (hg-run0 "--cwd" root "status" "-arm"))) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
863 (when (and (= (length modified-files) 0) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
864 (not hg-commit-allow-empty-file-list)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
865 (error "No pending changes to commit")) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
866 (let* ((buf-name (format "*Mercurial: Commit %s*" root))) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
867 (pop-to-buffer (get-buffer-create buf-name)) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
868 (when (= (point-min) (point-max)) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
869 (set (make-local-variable 'hg-root) root) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
870 (setq hg-prev-buffer prev-buffer) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
871 (insert "\n") |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
872 (let ((bol (point))) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
873 (insert hg-commit-message-end) |
1004
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
874 (add-text-properties bol (point) '(face bold-italic))) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
875 (let ((file-area (point))) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
876 (insert modified-files) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
877 (goto-char file-area) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
878 (while (< (point) (point-max)) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
879 (let ((bol (point))) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
880 (forward-char 1) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
881 (insert " ") |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
882 (end-of-line) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
883 (add-text-properties (+ bol 4) (point) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
884 '(face bold mouse-face highlight))) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
885 (forward-line 1)) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
886 (goto-char file-area) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
887 (add-text-properties (point) (point-max) |
1004
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
888 `(keymap ,hg-commit-mode-file-map)) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
889 (goto-char (point-min)) |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
890 (insert hg-commit-message-start) |
1004
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
891 (add-text-properties (point-min) (point) '(face bold-italic)) |
999
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
892 (insert "\n\n") |
bb391518bc28
Emacs: first cut at commit support.
Bryan O'Sullivan <bos@serpentine.com>
parents:
996
diff
changeset
|
893 (forward-line -1) |
1004
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
894 (save-excursion |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
895 (goto-char (point-max)) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
896 (search-backward hg-commit-message-end) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
897 (add-text-properties (match-beginning 0) (point-max) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
898 '(read-only t)) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
899 (goto-char (point-min)) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
900 (search-forward hg-commit-message-start) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
901 (add-text-properties (match-beginning 0) (match-end 0) |
ad6fcceaf59b
Emacs: improved GNU Emacs support.
bos@serpentine.internal.keyresearch.com
parents:
1003
diff
changeset
|
902 '(read-only t))) |
2454
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
903 (hg-commit-mode) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
904 (cd root)))))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
905 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
906 (defun hg-diff (path &optional rev1 rev2) |
996
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
907 "Show the differences between REV1 and REV2 of PATH. |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
908 When called interactively, the default behaviour is to treat REV1 as |
2455
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
909 the \"parent\" revision, REV2 as the current edited version of the file, and |
996
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
910 PATH as the file edited in the current buffer. |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
911 With a prefix argument, prompt for all of these." |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
912 (interactive (list (hg-read-file-name " to diff") |
2455
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
913 (let ((rev1 (hg-read-rev " to start with" 'parent))) |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
914 (and (not (eq rev1 'parent)) rev1)) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
915 (let ((rev2 (hg-read-rev " to end with" 'working-dir))) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
916 (and (not (eq rev2 'working-dir)) rev2)))) |
1024
5b257e419816
Sync buffers prior to doing a diff.
bos@serpentine.internal.keyresearch.com
parents:
1011
diff
changeset
|
917 (hg-sync-buffers path) |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
918 (let ((a-path (hg-abbrev-file-name path)) |
2455
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
919 ;; none revision is specified explicitly |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
920 (none (and (not rev1) (not rev2))) |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
921 ;; only one revision is specified explicitly |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
922 (one (or (and (or (equal rev1 rev2) (not rev2)) rev1) |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
923 (and (not rev1) rev2))) |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
924 diff) |
1027
cb31576ed3e4
Emacs: fix up hg-log and hg-diff to operate more uniformly.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1026
diff
changeset
|
925 (hg-view-output ((cond |
2455
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
926 (none |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
927 (format "Mercurial: Diff against parent of %s" a-path)) |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
928 (one |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
929 (format "Mercurial: Diff of rev %s of %s" one a-path)) |
1027
cb31576ed3e4
Emacs: fix up hg-log and hg-diff to operate more uniformly.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1026
diff
changeset
|
930 (t |
cb31576ed3e4
Emacs: fix up hg-log and hg-diff to operate more uniformly.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1026
diff
changeset
|
931 (format "Mercurial: Diff from rev %s to %s of %s" |
2455
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
932 rev1 rev2 a-path)))) |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
933 (cond |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
934 (none |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
935 (call-process (hg-binary) nil t nil "diff" path)) |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
936 (one |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
937 (call-process (hg-binary) nil t nil "diff" "-r" one path)) |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
938 (t |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
939 (call-process (hg-binary) nil t nil "diff" "-r" rev1 "-r" rev2 path))) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
940 (diff-mode) |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
941 (setq diff (not (= (point-min) (point-max)))) |
2454
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
942 (font-lock-fontify-buffer) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
943 (cd (hg-root path))) |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
944 diff)) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
945 |
2455
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
946 (defun hg-diff-repo (path &optional rev1 rev2) |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
947 "Show the differences between REV1 and REV2 of repository containing PATH. |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
948 When called interactively, the default behaviour is to treat REV1 as |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
949 the \"parent\" revision, REV2 as the current edited version of the file, and |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
950 PATH as the `hg-root' of the current buffer. |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
951 With a prefix argument, prompt for all of these." |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
952 (interactive (list (hg-read-file-name " to diff") |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
953 (let ((rev1 (hg-read-rev " to start with" 'parent))) |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
954 (and (not (eq rev1 'parent)) rev1)) |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
955 (let ((rev2 (hg-read-rev " to end with" 'working-dir))) |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
956 (and (not (eq rev2 'working-dir)) rev2)))) |
ff83112332f9
Emacs: follow the revision usage policy of "hg diff" command.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
957 (hg-diff (hg-root path) rev1 rev2)) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
958 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
959 (defun hg-forget (path) |
996
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
960 "Lose track of PATH, which has been added, but not yet committed. |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
961 This will prevent the file from being incorporated into the Mercurial |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
962 repository on the next commit. |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
963 With a prefix argument, prompt for the path to forget." |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
964 (interactive (list (hg-read-file-name " to forget"))) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
965 (let ((buf (current-buffer)) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
966 (update (equal buffer-file-name path))) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
967 (hg-view-output (hg-output-buffer-name) |
2454
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
968 (apply 'call-process (hg-binary) nil t nil (list "forget" path)) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
969 ;; "hg forget" shows pathes relative NOT TO ROOT BUT TO REPOSITORY |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
970 (replace-regexp " \\.\\.." " " nil 0 (buffer-size)) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
971 (goto-char 0) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
972 (cd (hg-root path))) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
973 (when update |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
974 (with-current-buffer buf |
2517
0086056322da
mercurial.el: inhibit backups for files managed by mercurial
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2457
diff
changeset
|
975 (set (make-local-variable 'backup-inhibited) nil) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
976 (hg-mode-line))))) |
1308
2073e5a71008
Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1246
diff
changeset
|
977 |
1029
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
978 (defun hg-incoming (&optional repo) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
979 "Display changesets present in REPO that are not present locally." |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
980 (interactive (list (hg-read-repo-name " where changes would come from"))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
981 (hg-view-output ((format "Mercurial: Incoming from %s to %s" |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
982 (hg-abbrev-file-name (hg-root)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
983 (hg-abbrev-file-name |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
984 (or repo hg-incoming-repository)))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
985 (call-process (hg-binary) nil t nil "incoming" |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
986 (or repo hg-incoming-repository)) |
2454
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
987 (hg-log-mode) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
988 (cd (hg-root)))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
989 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
990 (defun hg-init () |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
991 (interactive) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
992 (error "not implemented")) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
993 |
1029
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
994 (defun hg-log-mode () |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
995 "Mode for viewing a Mercurial change log." |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
996 (goto-char (point-min)) |
2452
d1a7c8a5b835
Emacs: use delete-region instead of kill-* functions.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
997 (when (looking-at "^searching for changes.*$") |
d1a7c8a5b835
Emacs: use delete-region instead of kill-* functions.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
998 (delete-region (match-beginning 0) (match-end 0))) |
1029
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
999 (run-hooks 'hg-log-mode-hook)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1000 |
2316
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1001 (defun hg-log (path &optional rev1 rev2 log-limit) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1002 "Display the revision history of PATH. |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1003 History is displayed between REV1 and REV2. |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1004 Number of displayed changesets is limited to LOG-LIMIT. |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1005 REV1 defaults to the tip, while |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1006 REV2 defaults to `hg-rev-completion-limit' changes from the tip revision. |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1007 LOG-LIMIT defaults to `hg-log-limit'. |
1027
cb31576ed3e4
Emacs: fix up hg-log and hg-diff to operate more uniformly.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1026
diff
changeset
|
1008 With a prefix argument, prompt for each parameter." |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
1009 (interactive (list (hg-read-file-name " to log") |
2316
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1010 (hg-read-rev " to start with" |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1011 "tip") |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1012 (hg-read-rev " to end with" |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1013 (format "%d" (- hg-rev-completion-limit))) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1014 (hg-read-number "Output limited to: " |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1015 hg-log-limit))) |
1027
cb31576ed3e4
Emacs: fix up hg-log and hg-diff to operate more uniformly.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1026
diff
changeset
|
1016 (let ((a-path (hg-abbrev-file-name path)) |
2316
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1017 (r1 (or rev1 (format "-%d" hg-rev-completion-limit))) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1018 (r2 (or rev2 rev1 "tip")) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1019 (limit (format "%d" (or log-limit hg-log-limit)))) |
1027
cb31576ed3e4
Emacs: fix up hg-log and hg-diff to operate more uniformly.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1026
diff
changeset
|
1020 (hg-view-output ((if (equal r1 r2) |
2316
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1021 (format "Mercurial: Log of rev %s of %s" rev1 a-path) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1022 (format |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1023 "Mercurial: at most %s log(s) from rev %s to %s of %s" |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1024 limit r1 r2 a-path))) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1025 (eval (list* 'call-process (hg-binary) nil t nil |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1026 "log" |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1027 "-r" (format "%s:%s" r1 r2) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1028 "-l" limit |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1029 (if (> (length path) (length (hg-root path))) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1030 (cons path nil) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1031 nil))) |
2454
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
1032 (hg-log-mode) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
1033 (cd (hg-root path))))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1034 |
2316
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1035 (defun hg-log-repo (path &optional rev1 rev2 log-limit) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1036 "Display the revision history of the repository containing PATH. |
2316
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1037 History is displayed between REV1 and REV2. |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1038 Number of displayed changesets is limited to LOG-LIMIT, |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1039 REV1 defaults to the tip, while |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1040 REV2 defaults to `hg-rev-completion-limit' changes from the tip revision. |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1041 LOG-LIMIT defaults to `hg-log-limit'. |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1042 With a prefix argument, prompt for each parameter." |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1043 (interactive (list (hg-read-file-name " to log") |
2316
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1044 (hg-read-rev " to start with" |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1045 "tip") |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1046 (hg-read-rev " to end with" |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1047 (format "%d" (- hg-rev-completion-limit))) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1048 (hg-read-number "Output limited to: " |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1049 hg-log-limit))) |
3d58376a7103
Emacs: separate limitations of revision range and shown changesets.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1371
diff
changeset
|
1050 (hg-log (hg-root path) rev1 rev2 log-limit)) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1051 |
1029
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1052 (defun hg-outgoing (&optional repo) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1053 "Display changesets present locally that are not present in REPO." |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1054 (interactive (list (hg-read-repo-name " where changes would go to" nil |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1055 hg-outgoing-repository))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1056 (hg-view-output ((format "Mercurial: Outgoing from %s to %s" |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1057 (hg-abbrev-file-name (hg-root)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1058 (hg-abbrev-file-name |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1059 (or repo hg-outgoing-repository)))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1060 (call-process (hg-binary) nil t nil "outgoing" |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1061 (or repo hg-outgoing-repository)) |
2454
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
1062 (hg-log-mode) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
1063 (cd (hg-root)))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1064 |
1246
ae96c85fb0af
mercurial.el: implement hg-pull, and stub in hg-update.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1179
diff
changeset
|
1065 (defun hg-pull (&optional repo) |
ae96c85fb0af
mercurial.el: implement hg-pull, and stub in hg-update.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1179
diff
changeset
|
1066 "Pull changes from repository REPO. |
ae96c85fb0af
mercurial.el: implement hg-pull, and stub in hg-update.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1179
diff
changeset
|
1067 This does not update the working directory." |
ae96c85fb0af
mercurial.el: implement hg-pull, and stub in hg-update.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1179
diff
changeset
|
1068 (interactive (list (hg-read-repo-name " to pull from"))) |
ae96c85fb0af
mercurial.el: implement hg-pull, and stub in hg-update.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1179
diff
changeset
|
1069 (hg-view-output ((format "Mercurial: Pull to %s from %s" |
ae96c85fb0af
mercurial.el: implement hg-pull, and stub in hg-update.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1179
diff
changeset
|
1070 (hg-abbrev-file-name (hg-root)) |
ae96c85fb0af
mercurial.el: implement hg-pull, and stub in hg-update.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1179
diff
changeset
|
1071 (hg-abbrev-file-name |
ae96c85fb0af
mercurial.el: implement hg-pull, and stub in hg-update.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1179
diff
changeset
|
1072 (or repo hg-incoming-repository)))) |
ae96c85fb0af
mercurial.el: implement hg-pull, and stub in hg-update.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1179
diff
changeset
|
1073 (call-process (hg-binary) nil t nil "pull" |
2454
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
1074 (or repo hg-incoming-repository)) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
1075 (cd (hg-root)))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1076 |
1029
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1077 (defun hg-push (&optional repo) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1078 "Push changes to repository REPO." |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1079 (interactive (list (hg-read-repo-name " to push to"))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1080 (hg-view-output ((format "Mercurial: Push from %s to %s" |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1081 (hg-abbrev-file-name (hg-root)) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1082 (hg-abbrev-file-name |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1083 (or repo hg-outgoing-repository)))) |
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1084 (call-process (hg-binary) nil t nil "push" |
2454
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
1085 (or repo hg-outgoing-repository)) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
1086 (cd (hg-root)))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1087 |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1088 (defun hg-revert-buffer-internal () |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1089 (let ((ctx (hg-buffer-context))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1090 (message "Reverting %s..." buffer-file-name) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1091 (hg-run0 "revert" buffer-file-name) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1092 (revert-buffer t t t) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1093 (hg-restore-context ctx) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1094 (hg-mode-line) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1095 (message "Reverting %s...done" buffer-file-name))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1096 |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1097 (defun hg-revert-buffer () |
996
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1098 "Revert current buffer's file back to the latest committed version. |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1099 If the file has not changed, nothing happens. Otherwise, this |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1100 displays a diff and asks for confirmation before reverting." |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1101 (interactive) |
995
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1102 (let ((vc-suppress-confirm nil) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1103 (obuf (current-buffer)) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1104 diff) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1105 (vc-buffer-sync) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1106 (unwind-protect |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1107 (setq diff (hg-diff buffer-file-name)) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1108 (when diff |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1109 (unless (yes-or-no-p "Discard changes? ") |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1110 (error "Revert cancelled"))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1111 (when diff |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1112 (let ((buf (current-buffer))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1113 (delete-window (selected-window)) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1114 (kill-buffer buf)))) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1115 (set-buffer obuf) |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1116 (when diff |
1e4b009b379e
Emacs support: add hg-revert-buffer.
Bryan O'Sullivan <bos@serpentine.com>
parents:
958
diff
changeset
|
1117 (hg-revert-buffer-internal)))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1118 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1119 (defun hg-root (&optional path) |
996
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1120 "Return the root of the repository that contains the given path. |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1121 If the path is outside a repository, return nil. |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1122 When called interactively, the root is printed. A prefix argument |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1123 prompts for a path to check." |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
1124 (interactive (list (hg-read-file-name))) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1125 (if (or path (not hg-root)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1126 (let ((root (do ((prev nil dir) |
2453
b5902db74ba3
Emacs: use `default-directory' if `buffer-file-name' is null.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2452
diff
changeset
|
1127 (dir (file-name-directory |
b5902db74ba3
Emacs: use `default-directory' if `buffer-file-name' is null.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2452
diff
changeset
|
1128 (or |
b5902db74ba3
Emacs: use `default-directory' if `buffer-file-name' is null.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2452
diff
changeset
|
1129 path |
b5902db74ba3
Emacs: use `default-directory' if `buffer-file-name' is null.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2452
diff
changeset
|
1130 buffer-file-name |
b5902db74ba3
Emacs: use `default-directory' if `buffer-file-name' is null.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2452
diff
changeset
|
1131 (expand-file-name default-directory))) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1132 (file-name-directory (directory-file-name dir)))) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1133 ((equal prev dir)) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1134 (when (file-directory-p (concat dir ".hg")) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1135 (return dir))))) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1136 (when (interactive-p) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1137 (if root |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1138 (message "The root of this repository is `%s'." root) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1139 (message "The path `%s' is not in a Mercurial repository." |
1029
b5f0ccad8917
Emacs: implement hg-incoming, hg-outgoing and hg-push.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1027
diff
changeset
|
1140 (hg-abbrev-file-name path)))) |
1003
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1141 root) |
6dfc9cc71f42
Emacs support: numerous changes.
bos@serpentine.internal.keyresearch.com
parents:
1001
diff
changeset
|
1142 hg-root)) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1143 |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
1144 (defun hg-status (path) |
996
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1145 "Print revision control status of a file or directory. |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1146 With prefix argument, prompt for the path to give status for. |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1147 Names are displayed relative to the repository root." |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
1148 (interactive (list (hg-read-file-name " for status" (hg-root)))) |
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
1149 (let ((root (hg-root))) |
996
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1150 (hg-view-output ((format "Mercurial: Status of %s in %s" |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1151 (let ((name (substring (expand-file-name path) |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1152 (length root)))) |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1153 (if (> (length name) 0) |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1154 name |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1155 "*")) |
5ed566574486
Emacs: document existing functions.
Bryan O'Sullivan <bos@serpentine.com>
parents:
995
diff
changeset
|
1156 (hg-abbrev-file-name root))) |
947
4cabedfab66e
In-progress Emacs snapshot.
Bryan O'Sullivan <bos@serpentine.com>
parents:
945
diff
changeset
|
1157 (apply 'call-process (hg-binary) nil t nil |
2454
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
1158 (list "--cwd" root "status" path)) |
74518478d2bf
Emacs: change directory of output buffer to the root of the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2317
diff
changeset
|
1159 (cd (hg-root path))))) |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1160 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1161 (defun hg-undo () |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1162 (interactive) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1163 (error "not implemented")) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1164 |
1246
ae96c85fb0af
mercurial.el: implement hg-pull, and stub in hg-update.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1179
diff
changeset
|
1165 (defun hg-update () |
ae96c85fb0af
mercurial.el: implement hg-pull, and stub in hg-update.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1179
diff
changeset
|
1166 (interactive) |
ae96c85fb0af
mercurial.el: implement hg-pull, and stub in hg-update.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1179
diff
changeset
|
1167 (error "not implemented")) |
ae96c85fb0af
mercurial.el: implement hg-pull, and stub in hg-update.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1179
diff
changeset
|
1168 |
944
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1169 (defun hg-version-other-window () |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1170 (interactive) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1171 (error "not implemented")) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1172 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1173 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1174 (provide 'mercurial) |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1175 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1176 |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1177 ;;; Local Variables: |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1178 ;;; prompt-to-byte-compile: nil |
41ca6bf19735
Initial skeleton for mercurial.el.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
1179 ;;; end: |