Author: tkng
Date: Mon Aug 8 17:04:50 2005
New Revision: 1165
Modified:
trunk/scm/custom-rt.scm
Log:
* scm/custom-rt.scm: This commit aims avoid needless reloading of config files.
If a config file is not updated, then it would not be loaded while config
reloading.
-(custom-reload-group-syms): Now this list is an alist. Spec of each element
is: (symbol-for-config-file . mtime-of-config-file)
We should rename this variable with more proper name.
-(prepend-new-reload-group-syms): New procedure.
-(update-gsym-mtime): New procedure.
-(custom-load-group-conf, custom-reload-configs): All function which used
custom-reload-group-syms somewhile are modified.
s/custom-reload-group-syms/(map car custom-reload-group-syms)/;
Modified: trunk/scm/custom-rt.scm
==============================================================================
--- trunk/scm/custom-rt.scm (original)
+++ trunk/scm/custom-rt.scm Mon Aug 8 17:04:50 2005
@@ -55,18 +55,33 @@
(define custom-rt-primary-groups ())
(define custom-set-hooks ())
+(define prepend-new-reload-group-syms
+ (lambda (gsym path)
+ (set! custom-reload-group-syms
+ (cons (cons gsym 0) custom-reload-group-syms))))
+
+(define update-gsym-mtime
+ (lambda (gsym path)
+ (set-cdr! (assq gsym custom-reload-group-syms)
+ (get-file-mtime path))
+ #t))
+
;; full implementation
(define custom-load-group-conf
(lambda (gsym)
- (if (not (memq gsym custom-reload-group-syms))
- (set! custom-reload-group-syms
- (cons gsym custom-reload-group-syms)))
(let* ((group-name (symbol->string gsym))
(path (string-append (getenv "HOME")
"/.uim.d/customs/custom-"
group-name
".scm")))
- (try-load path))))
+ (if (not (memq gsym (map (lambda (x) (car x)) custom-reload-group-syms)))
+ (prepend-new-reload-group-syms gsym path))
+ (if (= (get-file-mtime path)
+ (cdr (assq gsym custom-reload-group-syms)))
+ #t ; File isn't modified, no need to reload.
+ (if (try-load path)
+ (update-gsym-mtime gsym path)
+ #f)))))
;; full implementation
(define require-custom
@@ -202,7 +217,7 @@
(define custom-reload-configs
(lambda ()
- (if (null? custom-reload-group-syms)
- #f ; No file should be loaded.
- (begin
- (for-each custom-load-group-conf (reverse
custom-reload-group-syms))))))
+ (let ((group-syms (map (lambda (x) (car x)) custom-reload-group-syms)))
+ (if (null? group-syms)
+ #f ; No file should be loaded.
+ (for-each custom-load-group-conf (reverse group-syms))))))