comparison lisp/vc-dispatcher.el @ 96018:47c289fef3ec

(vc-dir-child-files): Use vc-string-prefix-p. (vc-dir-marked-only-files): vc-string-prefix-p.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 16 Jun 2008 20:36:55 +0000
parents 174ed97a282b
children 30bbe1648bcf
comparison
equal deleted inserted replaced
96017:54d310663505 96018:47c289fef3ec
1256 (let* ((dir (vc-dir-fileinfo->directory crt-data)) 1256 (let* ((dir (vc-dir-fileinfo->directory crt-data))
1257 (dirlen (length dir)) 1257 (dirlen (length dir))
1258 data) 1258 data)
1259 (while 1259 (while
1260 (and (setq crt (ewoc-next vc-ewoc crt)) 1260 (and (setq crt (ewoc-next vc-ewoc crt))
1261 (string-equal 1261 (vc-string-prefix-p dir
1262 (substring 1262 (progn
1263 (progn 1263 (setq data (ewoc-data crt))
1264 (setq data (ewoc-data crt)) 1264 (vc-dir-node-directory crt))))
1265 (vc-dir-node-directory crt))
1266 0 dirlen)
1267 dir))
1268 (unless (vc-dir-fileinfo->directory data) 1265 (unless (vc-dir-fileinfo->directory data)
1269 (push (expand-file-name (vc-dir-fileinfo->name data)) result)))) 1266 (push (expand-file-name (vc-dir-fileinfo->name data)) result))))
1270 (push (expand-file-name (vc-dir-fileinfo->name crt-data)) result) 1267 (push (expand-file-name (vc-dir-fileinfo->name crt-data)) result)
1271 (setq crt (ewoc-next vc-ewoc crt))) 1268 (setq crt (ewoc-next vc-ewoc crt)))
1272 (setq crt (ewoc-next vc-ewoc crt))))) 1269 (setq crt (ewoc-next vc-ewoc crt)))))
1275 (defun vc-dir-child-files () 1272 (defun vc-dir-child-files ()
1276 "Return the list of child files for the current entry if it's a directory. 1273 "Return the list of child files for the current entry if it's a directory.
1277 If it is a file, return the file itself." 1274 If it is a file, return the file itself."
1278 (let* ((crt (ewoc-locate vc-ewoc)) 1275 (let* ((crt (ewoc-locate vc-ewoc))
1279 (crt-data (ewoc-data crt)) 1276 (crt-data (ewoc-data crt))
1280 result) 1277 result)
1281 (if (vc-dir-fileinfo->directory crt-data) 1278 (if (vc-dir-fileinfo->directory crt-data)
1282 (let* ((dir (vc-dir-fileinfo->directory crt-data)) 1279 (let* ((dir (vc-dir-fileinfo->directory crt-data))
1283 (dirlen (length dir)) 1280 (dirlen (length dir))
1284 data) 1281 data)
1285 (while 1282 (while
1286 (and (setq crt (ewoc-next vc-ewoc crt)) 1283 (and (setq crt (ewoc-next vc-ewoc crt))
1287 (string-equal 1284 (vc-string-prefix-p dir (progn
1288 (substring 1285 (setq data (ewoc-data crt))
1289 (progn 1286 (vc-dir-node-directory crt))))
1290 (setq data (ewoc-data crt))
1291 (vc-dir-node-directory crt))
1292 0 dirlen)
1293 dir))
1294 (unless (vc-dir-fileinfo->directory data) 1287 (unless (vc-dir-fileinfo->directory data)
1295 (push (expand-file-name (vc-dir-fileinfo->name data)) result)))) 1288 (push (expand-file-name (vc-dir-fileinfo->name data)) result))))
1296 (push (expand-file-name (vc-dir-fileinfo->name crt-data)) result)) 1289 (push (expand-file-name (vc-dir-fileinfo->name crt-data)) result))
1297 result)) 1290 result))
1298 1291
1313 (when (derived-mode-p 'vc-dir-mode) 1306 (when (derived-mode-p 'vc-dir-mode)
1314 (setq found-vc-dir-buf t) 1307 (setq found-vc-dir-buf t)
1315 (let ((ddir (expand-file-name default-directory))) 1308 (let ((ddir (expand-file-name default-directory)))
1316 (when (vc-string-prefix-p ddir file) 1309 (when (vc-string-prefix-p ddir file)
1317 (let* 1310 (let*
1311 ;; FIXME: Any reason we don't use file-relative-name?
1318 ((file-short (substring file (length ddir))) 1312 ((file-short (substring file (length ddir)))
1319 (state 1313 (state (funcall (vc-client-object->file-to-state
1320 (funcall (vc-client-object->file-to-state vc-client-mode) 1314 vc-client-mode)
1321 file)) 1315 file))
1322 (extra 1316 (extra (funcall (vc-client-object->file-to-extra
1323 (funcall (vc-client-object->file-to-extra vc-client-mode) 1317 vc-client-mode)
1324 file)) 1318 file))
1325 (entry 1319 (entry
1326 (list file-short state extra))) 1320 (list file-short state extra)))
1327 (vc-dir-update (list entry) status-buf)))))) 1321 (vc-dir-update (list entry) status-buf))))))
1328 ;; We didn't find any vc-dir buffers, remove the hook, it is 1322 ;; We didn't find any vc-dir buffers, remove the hook, it is
1329 ;; not needed. 1323 ;; not needed.
1330 (unless found-vc-dir-buf (remove-hook 'after-save-hook 'vc-dir-resynch-file))))))) 1324 (unless found-vc-dir-buf
1325 (remove-hook 'after-save-hook 'vc-dir-resynch-file)))))))
1331 1326
1332 (defun vc-dir-mode (client-object) 1327 (defun vc-dir-mode (client-object)
1333 "Major mode for dispatcher directory buffers. 1328 "Major mode for dispatcher directory buffers.
1334 Marking/Unmarking key bindings and actions: 1329 Marking/Unmarking key bindings and actions:
1335 m - marks a file/directory or if the region is active, mark all the files 1330 m - marks a file/directory or if the region is active, mark all the files