Mercurial > emacs
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 |