comparison lisp/vc-dispatcher.el @ 95329:3bf215f97a31

(vc-string-prefix-p): New function. (vc-dir-parent-marked-p): Use it.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 27 May 2008 01:13:25 +0000
parents 51b445e6b312
children b4a9f05bf87b
comparison
equal deleted inserted replaced
95328:44c693827736 95329:3bf215f97a31
1022 (goto-char (region-beginning)) 1022 (goto-char (region-beginning))
1023 (while (<= (line-number-at-pos) lastl) 1023 (while (<= (line-number-at-pos) lastl)
1024 (funcall mark-unmark-function)))) 1024 (funcall mark-unmark-function))))
1025 (funcall mark-unmark-function))) 1025 (funcall mark-unmark-function)))
1026 1026
1027 (defun vc-string-prefix-p (prefix string)
1028 (and (>= (length string) (length prefix))
1029 (eq t (compare-strings prefix nil nil string nil (length prefix)))))
1030
1027 (defun vc-dir-parent-marked-p (arg) 1031 (defun vc-dir-parent-marked-p (arg)
1028 ;; Return nil if none of the parent directories of arg is marked. 1032 ;; Return nil if none of the parent directories of arg is marked.
1029 (let* ((argdir (vc-dir-node-directory arg)) 1033 (let* ((argdir (vc-dir-node-directory arg))
1030 (arglen (length argdir)) 1034 (arglen (length argdir))
1031 (crt arg) 1035 (crt arg)
1034 ;; a parent is marked. 1038 ;; a parent is marked.
1035 (while (setq crt (ewoc-prev vc-ewoc crt)) 1039 (while (setq crt (ewoc-prev vc-ewoc crt))
1036 (setq data (ewoc-data crt)) 1040 (setq data (ewoc-data crt))
1037 (setq dir (vc-dir-node-directory crt)) 1041 (setq dir (vc-dir-node-directory crt))
1038 (when (and (vc-dir-fileinfo->directory data) 1042 (when (and (vc-dir-fileinfo->directory data)
1039 (string-equal (substring argdir 0 (length dir)) dir)) 1043 (vc-string-prefix-p dir argdir))
1040 (when (vc-dir-fileinfo->marked data) 1044 (when (vc-dir-fileinfo->marked data)
1041 (error "Cannot mark `%s', parent directory `%s' marked" 1045 (error "Cannot mark `%s', parent directory `%s' marked"
1042 (vc-dir-fileinfo->name (ewoc-data arg)) 1046 (vc-dir-fileinfo->name (ewoc-data arg))
1043 (vc-dir-fileinfo->name data))))) 1047 (vc-dir-fileinfo->name data)))))
1044 nil)) 1048 nil))