home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / lisp / interpre / xlispplu / lsp / edit.lsp < prev    next >
Lisp/Scheme  |  1992-01-14  |  2KB  |  53 lines

  1. ;;;
  2. ;;; This variable is the default file to edit
  3. ;;;
  4.  
  5. (defvar *edit-file* "")
  6.  
  7. (defvar *editor* "eps")
  8.  
  9. ;;;
  10. ;;; edit a file using the specified editor
  11. ;;; if the file editted was a lisp file (.lsp) load it
  12. ;;;
  13.  
  14. ;; Two versions, the first works when position-if exists and does a better
  15. ;; job   
  16.  
  17. (if (fboundp 'position-if)
  18. (defmacro edit (&optional file &aux rfile)
  19.   (read-char)
  20.   (when file (setq *edit-file* (string file)))
  21.   (setq rfile (reverse *edit-file*))
  22.   (when (null (position-if #'(lambda (x) (eq x #\.))
  23.                rfile
  24.                :end 
  25.                (position-if #'(lambda (x) 
  26.                           (or (eq x #\\) (eq x #\/)))
  27.                     rfile)))
  28.     (setq *edit-file* (strcat *edit-file* ".lsp")))
  29.   (unless (system (strcat *editor* " " *edit-file*))
  30.       (error (strcat "Unable to execute: " *editor* " " *edit-file*)))
  31.   (let ((len (length *edit-file*)))
  32.        (when (and (> len 4)
  33.           (string= (string-downcase (subseq *edit-file* (- len 4)))
  34.                ".lsp"))
  35.          (list 'load *edit-file*))))
  36.  
  37. (defmacro edit (&optional file)
  38.     (read-char)
  39.     (when file (setq *edit-file* (string file)))
  40.     (when (not (member #\.
  41.                (get-output-stream-list
  42.               (make-string-input-stream *edit-file*))))
  43.       (setq *edit-file* (strcat *edit-file* ".lsp")))
  44.     (unless (system (strcat *editor* " " *edit-file*))
  45.           (error (strcat "Unable to execute: " *editor* " " *edit-file*)))
  46.     (let ((len (length *edit-file*)))
  47.       (when (and (> len 4)
  48.          (string= (string-downcase (subseq *edit-file* (- len 4)))
  49.               ".lsp"))
  50.         (list 'load *edit-file*))))
  51.  
  52. )
  53.