[climacs-cvs] CVS update: climacs/gui.lisp
Dave Murray
dmurray at common-lisp.net
Sat Aug 20 19:44:09 UTC 2005
Update of /project/climacs/cvsroot/climacs
In directory common-lisp.net:/tmp/cvs-serv22657
Modified Files:
gui.lisp
Log Message:
Fix isearch bug (introduced earlier), futzed with modeline
format string, added default to Kill Buffer.
Date: Sat Aug 20 21:44:09 2005
Author: dmurray
Index: climacs/gui.lisp
diff -u climacs/gui.lisp:1.180 climacs/gui.lisp:1.181
--- climacs/gui.lisp:1.180 Fri Aug 19 11:12:48 2005
+++ climacs/gui.lisp Sat Aug 20 21:44:08 2005
@@ -111,8 +111,18 @@
(size (size buf))
(top (top master-pane))
(bot (bot master-pane))
- (name-info (format nil " ~a ~a~:[~30t~a~;~*~] ~:[(~;Syntax: ~]~a~a~a~a~:[)~;~] ~a"
- (cond ((needs-saving buf) "**")
+ (name-info (format nil "~3T~A~
+ ~3 at T~A~
+ ~:[~30T~A~;~*~]~
+ ~3 at T~:[(~;Syntax: ~]~
+ ~A~
+ ~{~:[~*~; ~A~]~}~
+ ~:[)~;~]~
+ ~3 at T~A"
+ (cond ((and (needs-saving buf)
+ (read-only-p buf)
+ "%*"))
+ ((needs-saving buf) "**")
((read-only-p buf) "%%")
(t "--"))
(name buf)
@@ -129,15 +139,13 @@
size))))))
*with-scrollbars*
(name (syntax buf))
- (if (slot-value master-pane 'overwrite-mode)
- " Ovwrt"
- "")
- (if (auto-fill-mode master-pane)
- " Fill"
- "")
- (if (isearch-mode master-pane)
- " Isearch"
- "")
+ (list
+ (slot-value master-pane 'overwrite-mode)
+ "Ovwrt"
+ (auto-fill-mode master-pane)
+ "Fill"
+ (isearch-mode master-pane)
+ "Isearch")
*with-scrollbars*
(if (recordingp *application-frame*)
"Def"
@@ -620,15 +628,25 @@
collect (list (subseq (namestring name) length nil)
name))))))))
+(define-presentation-method present (object (type completable-pathname)
+ stream (view textual-view)
+ &key acceptably for-context-type)
+ (declare (ignore acceptably for-context-type))
+ (princ (namestring object) stream))
+
(define-presentation-method accept
- ((type completable-pathname) stream (view textual-view) &key)
+ ((type completable-pathname) stream (view textual-view) &key (default nil defaultp)
+ (default-type type))
(multiple-value-bind (pathname success string)
(complete-input stream
#'filename-completer
:allow-any-input t)
- (if success
- (values pathname 'completable-pathname)
- (values string 'string))))
+ (cond (success
+ (values pathname type))
+ ((and (zerop (length string))
+ defaultp)
+ (values default default-type))
+ (t (values string 'string)))))
(defun filepath-filename (pathname)
(if (null (pathname-type pathname))
@@ -661,7 +679,10 @@
buffer))
(defun find-file (filepath)
- (cond ((directory-pathname-p filepath)
+ (cond ((null filepath)
+ (display-message "No file name given.")
+ (beep))
+ ((directory-pathname-p filepath)
(display-message "~A is a directory name." filepath)
(beep))
(t
@@ -690,17 +711,20 @@
buffer))))))
(define-named-command com-find-file ()
- (let ((filepath (accept 'completable-pathname
- :prompt "Find File")))
+ (let* ((filepath (accept 'completable-pathname
+ :prompt "Find File")))
(find-file filepath)))
(defun find-file-read-only (filepath)
- (cond ((directory-pathname-p filepath)
+ (cond ((null filepath)
+ (display-message "No file name given.")
+ (beep))
+ ((directory-pathname-p filepath)
(display-message "~A is a directory name." filepath)
(beep))
(t
(let ((existing-buffer (find filepath (buffers *application-frame*)
- :key #'filepath :test #'equal)))
+ :key #'filepath :test #'equal)))
(if (and existing-buffer (read-only-p existing-buffer))
(switch-to-buffer existing-buffer)
(if (probe-file filepath)
@@ -853,8 +877,16 @@
(needs-saving buffer) nil)
(display-message "Wrote: ~a" (filepath buffer))))))
+(define-presentation-method present (object (type buffer)
+ stream
+ (view textual-view)
+ &key acceptably for-context-type)
+ (declare (ignore acceptably for-context-type))
+ (princ (name object) stream))
+
(define-presentation-method accept
- ((type buffer) stream (view textual-view) &key)
+ ((type buffer) stream (view textual-view) &key (default nil defaultp)
+ (default-type type))
(multiple-value-bind (object success string)
(complete-input stream
(lambda (so-far action)
@@ -864,8 +896,11 @@
:value-key #'identity))
:partial-completers '(#\Space)
:allow-any-input t)
- (declare (ignore success))
- (or object string)))
+ (cond (success
+ (values object type))
+ ((and (zerop (length string)) defaultp)
+ (values default default-type))
+ (t (values string 'string)))))
(defgeneric switch-to-buffer (buffer))
@@ -893,7 +928,9 @@
(define-named-command com-switch-to-buffer ()
(let ((buffer (accept 'buffer
- :prompt "Switch to buffer")))
+ :prompt "Switch to buffer"
+ :default (second (buffers *application-frame*))
+ :default-type 'buffer)))
(switch-to-buffer buffer)))
(defgeneric kill-buffer (buffer))
@@ -921,7 +958,13 @@
(kill-buffer (buffer (current-window))))
(define-named-command com-kill-buffer ()
- (kill-buffer (buffer (current-window))))
+ (let ((buffer (accept 'buffer
+ :prompt "Kill buffer"
+ :default (buffer (current-window))
+ :default-type 'buffer)))
+ (format *trace-output* "Here: ~a~%" buffer) (finish-output *trace-output*)
+ (kill-buffer buffer)))
+
(define-named-command com-full-redisplay ()
(full-redisplay (current-window)))
@@ -1388,7 +1431,7 @@
:keystroke gesture :errorp nil))
(loop for code from (char-code #\Space) to (char-code #\~)
- do (isearch-set-key (code-char code) 'com-append-char))
+ do (isearch-set-key (code-char code) 'com-isearch-append-char))
(isearch-set-key '(#\Newline) 'com-isearch-exit)
(isearch-set-key '(#\Backspace) 'com-isearch-delete-char)
More information about the Climacs-cvs
mailing list