Add new operations `os/file-directory?', `os/make-filename', and
authorChris Hanson <org/chris-hanson/cph>
Thu, 20 Apr 1989 08:19:38 +0000 (08:19 +0000)
committerChris Hanson <org/chris-hanson/cph>
Thu, 20 Apr 1989 08:19:38 +0000 (08:19 +0000)
`os/filename-as-directory'.  These operations replicate the action of
existing operations, but they allow the performance of filename
completion to be improved significantly over what could previously be
achieved.

Add new operation `os/completion-ignored-extensions' which is used to
initialize the variable of that name.

Change `os/directory-list-completions' to special case the null-string
prefix for added performance.

v7/src/edwin/unix.scm

index d541a4d42e431df42917060982e0a1f8773e5d61..24c9059caefeeacef8a95a25ad0bfd8e08f945c3 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/unix.scm,v 1.3 1989/04/15 00:53:52 cph Exp $
+;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/unix.scm,v 1.4 1989/04/20 08:19:38 cph Exp $
 ;;;
 ;;;    Copyright (c) 1989 Massachusetts Institute of Technology
 ;;;
@@ -219,10 +219,26 @@ Includes the new backup.  Must be > 0"
        result)))
 
 (define (os/directory-list-completions directory prefix)
-  (let loop
-      ((name ((ucode-primitive open-directory) directory))
-       (result '()))
-    (if name
-       (loop ((ucode-primitive directory-read))
-             (if (string-prefix? prefix name) (cons name result) result))
-       result)))
\ No newline at end of file
+  (if (string-null? prefix)
+      (os/directory-list directory)
+      (let loop
+         ((name ((ucode-primitive open-directory) directory))
+          (result '()))
+       (if name
+           (loop ((ucode-primitive directory-read))
+                 (if (string-prefix? prefix name) (cons name result) result))
+           result))))
+(define-integrable os/file-directory?
+  (ucode-primitive file-directory?))
+
+(define-integrable (os/make-filename directory filename)
+  (string-append directory filename))
+
+(define-integrable (os/filename-as-directory filename)
+  (string-append filename "/"))
+
+(define (os/completion-ignored-extensions)
+  (list-copy
+   '(".o" ".elc" "~" ".bin" ".lbin" ".fasl"
+     ".dvi" ".toc" ".log" ".aux"
+     ".lof" ".blg" ".bbl" ".glo" ".idx" ".lot")))
\ No newline at end of file