+2012-08-15 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * vc/vc-mtn.el (vc-mtn-revision-completion-table): Handle completion
+ for composite selectors.
+ * vc/vc.el (vc-diff-build-argument-list-internal): Don't prevent
+ operation just because we can't find a previous revision.
+
2012-08-15 Chong Yidong <cyd@gnu.org>
* frame.el (set-frame-font): Accept font objects.
ids)))
(defun vc-mtn-revision-completion-table (_files)
- ;; TODO: Implement completion for selectors
- ;; TODO: Implement completion for composite selectors.
;; What about using `files'?!? --Stef
(lambda (string pred action)
(cond
+ ;; Special chars for composite selectors.
+ ((string-match ".*[^\\]\\(\\\\\\\\\\)*[/|;(]" string)
+ (completion-table-with-context (substring string 0 (match-end 0))
+ (vc-mtn-revision-completion-table nil)
+ (substring string (match-end 0))
+ pred action))
;; "Tag" selectors.
((string-match "\\`t:" string)
(complete-with-action action
(mapcar (lambda (tag) (concat "t:" tag))
(vc-mtn-list-tags))
string pred))
- ;; "Branch" selectors.
- ((string-match "\\`b:" string)
- (complete-with-action action
- (mapcar (lambda (tag) (concat "b:" tag))
- (vc-mtn-list-branches))
- string pred))
- ;; "Head" selectors. Not sure how they differ from "branch" selectors.
- ((string-match "\\`h:" string)
- (complete-with-action action
- (mapcar (lambda (tag) (concat "h:" tag))
- (vc-mtn-list-branches))
- string pred))
+ ;; "Branch" or "Head" selectors.
+ ((string-match "\\`[hb]:" string)
+ (let ((prefix (match-string 0 string)))
+ (complete-with-action action
+ (mapcar (lambda (tag) (concat prefix tag))
+ (vc-mtn-list-branches))
+ string pred)))
;; "ID" selectors.
((string-match "\\`i:" string)
(complete-with-action action
(complete-with-action action
'("t:" "b:" "h:" "i:"
;; Completion not implemented for these.
- "a:" "c:" "d:" "e:" "l:")
+ "c:" "a:" "k:" "d:" "m:" "e:" "l:" "i:" "p:"
+ ;; These have no arg to complete.
+ "u:" "w:"
+ ;; Selector functions.
+ "difference(" "lca(" "max(" "ancestors("
+ "descendants(" "parents(" "children("
+ "pick(")
string pred)))))
(setq rev1-default (vc-working-revision first)))
;; if the file is not locked, use last and previous revisions as defaults
(t
- (setq rev1-default (vc-call-backend backend 'previous-revision first
- (vc-working-revision first)))
+ (setq rev1-default (ignore-errors ;If `previous-revision' doesn't work.
+ (vc-call-backend backend 'previous-revision first
+ (vc-working-revision first))))
(when (string= rev1-default "") (setq rev1-default nil))
(setq rev2-default (vc-working-revision first))))
;; construct argument list