Update of /project/climacs/cvsroot/climacs In directory clnet:/tmp/cvs-serv17643
Modified Files: core.lisp Log Message: Handle file-errors when finding files.
--- /project/climacs/cvsroot/climacs/core.lisp 2008/01/27 08:13:54 1.25 +++ /project/climacs/cvsroot/climacs/core.lisp 2008/05/18 09:05:11 1.26 @@ -323,40 +323,37 @@ (display-message "~A is a directory name." filepath) (beep)) (t - (let ((existing-view (find-view-with-pathname filepath))) - (if (and existing-view (if readonlyp (read-only-p (buffer existing-view)) t)) - (switch-to-view (current-window) existing-view) - (progn - (when readonlyp - (unless (probe-file filepath) - (beep) - (display-message "No such file: ~A" filepath) - (return-from find-file-impl nil))) - (let* ((newp (not (probe-file filepath))) - (buffer (if newp - (make-new-buffer) - (with-open-file (stream filepath :direction :input) - (make-buffer-from-stream stream)))) - (view (make-new-view-for-climacs - *esa-instance* 'textual-drei-syntax-view - :name (filepath-filename filepath) - :buffer buffer))) - (unless (buffer-pane-p (current-window)) - (other-window (or (find-if #'(lambda (window) - (typep window 'climacs-pane)) - (windows *esa-instance*)) - (split-window t)))) - (setf (offset (point buffer)) (offset (point view)) - (syntax view) (make-syntax-for-view view (syntax-class-name-for-filepath filepath)) - (file-write-time buffer) (if newp (get-universal-time) (file-write-date filepath)) - (needs-saving buffer) nil - (name buffer) (filepath-filename filepath)) - (setf (current-view (current-window)) view) - (evaluate-attribute-line view) - (setf (filepath buffer) (pathname filepath) - (read-only-p buffer) readonlyp) - (beginning-of-buffer (point view)) - buffer))))))) + (handler-case + (let ((existing-view (find-view-with-pathname filepath))) + (if (and existing-view (if readonlyp (read-only-p (buffer existing-view)) t)) + (switch-to-view (current-window) existing-view) + (let* ((newp (not (probe-file filepath))) + (buffer (if (and newp (not readonlyp)) + (make-new-buffer) + (with-open-file (stream filepath :direction :input) + (make-buffer-from-stream stream)))) + (view (make-new-view-for-climacs + *esa-instance* 'textual-drei-syntax-view + :name (filepath-filename filepath) + :buffer buffer))) + (unless (buffer-pane-p (current-window)) + (other-window (or (find-if #'(lambda (window) + (typep window 'climacs-pane)) + (windows *esa-instance*)) + (split-window t)))) + (setf (offset (point buffer)) (offset (point view)) + (syntax view) (make-syntax-for-view view (syntax-class-name-for-filepath filepath)) + (file-write-time buffer) (if newp (get-universal-time) (file-write-date filepath)) + (needs-saving buffer) nil + (name buffer) (filepath-filename filepath)) + (setf (current-view (current-window)) view) + (evaluate-attribute-line view) + (setf (filepath buffer) (pathname filepath) + (read-only-p buffer) readonlyp) + (beginning-of-buffer (point view)) + buffer))) + (file-error (c) + (display-message "~A" c))))))
(defmethod frame-find-file ((application-frame climacs) filepath) (find-file-impl filepath nil))