[climacs-cvs] CVS climacs

dmurray dmurray at common-lisp.net
Sun May 14 20:35:44 UTC 2006


Update of /project/climacs/cvsroot/climacs
In directory clnet:/tmp/cvs-serv18370

Modified Files:
	base.lisp file-commands.lisp packages.lisp pane.lisp 
	search-commands.lisp 
Log Message:
Undo fundamental/basic breakage. Sorry. Also add
String Search, Reverse String Search, Word Search and
Reverse Word Search commands.


--- /project/climacs/cvsroot/climacs/base.lisp	2006/05/12 18:59:05	1.48
+++ /project/climacs/cvsroot/climacs/base.lisp	2006/05/14 20:35:44	1.49
@@ -745,6 +745,11 @@
          return i
        finally (return nil))))
 
+(defun search-word-backward (mark word)
+  (let ((offset (buffer-search-word-backward (buffer mark) (offset mark) word)))
+    (when offset
+      (setf (offset mark) offset))))
+
 (defun buffer-search-word-forward (buffer offset word &key (test #'eql))
   "Return the smallest offset of BUFFER >= OFFSET containing WORD as a
 word or NIL if no such offset exists"
@@ -757,5 +762,12 @@
 		 (buffer-looking-at buffer i word :test test)
 		 (not (and (< j blen)
 			   (constituentp (buffer-object buffer j)))))
+	 ;; should this be (+ i wlen)? jqs 2006-05-14
          return i
        finally (return nil))))
+
+(defun search-word-forward (mark word)
+  (let ((wlen (length word))
+	(offset (buffer-search-word-forward (buffer mark) (offset mark) word)))
+    (when offset
+      (setf (offset mark) (+ offset wlen)))))
\ No newline at end of file
--- /project/climacs/cvsroot/climacs/file-commands.lisp	2006/05/14 07:13:43	1.17
+++ /project/climacs/cvsroot/climacs/file-commands.lisp	2006/05/14 20:35:44	1.18
@@ -127,7 +127,7 @@
 	     :test (lambda (x y)
 		     (member x y :test #'string-equal))
 	     :key #'climacs-syntax::syntax-description-pathname-types))
-      'fundamental-syntax))
+      'basic-syntax))
 
 (defun evaluate-attributes (buffer options)
   "Evaluate the attributes `options' and modify `buffer' as
--- /project/climacs/cvsroot/climacs/packages.lisp	2006/05/14 09:37:01	1.95
+++ /project/climacs/cvsroot/climacs/packages.lisp	2006/05/14 20:35:44	1.96
@@ -144,7 +144,7 @@
 
 (defpackage :climacs-pane
   (:use :clim-lisp :clim :climacs-buffer :climacs-base :climacs-abbrev
-	:climacs-syntax :flexichain :undo :climacs-fundamental-syntax)
+	:climacs-syntax :flexichain :undo)
   (:export #:climacs-buffer #:needs-saving
 	   #:filepath #:file-saved-p #:file-write-time
 	   #:read-only-p #:buffer-read-only
@@ -170,7 +170,7 @@
 
 (defpackage :climacs-gui
   (:use :clim-lisp :clim :climacs-buffer :climacs-base
-	:climacs-abbrev :climacs-syntax :climacs-fundamental-syntax
+	:climacs-abbrev :climacs-syntax
 	:climacs-kill-ring :climacs-pane :clim-extensions :undo :esa)
   ;;(:import-from :lisp-string)
   (:export :climacs ; Main entry point.
--- /project/climacs/cvsroot/climacs/pane.lisp	2006/05/14 07:13:43	1.42
+++ /project/climacs/cvsroot/climacs/pane.lisp	2006/05/14 20:35:44	1.43
@@ -255,7 +255,7 @@
   (declare (ignore args))
   (with-slots (syntax point) buffer
      (setf syntax (make-instance
-		   'fundamental-syntax :buffer (implementation buffer))
+		   'basic-syntax :buffer (implementation buffer))
 	   point (clone-mark (low-mark buffer) :right))))
 
 (defmethod (setf syntax) :after (syntax (buffer climacs-buffer))
--- /project/climacs/cvsroot/climacs/search-commands.lisp	2006/05/12 16:52:33	1.2
+++ /project/climacs/cvsroot/climacs/search-commands.lisp	2006/05/14 20:35:44	1.3
@@ -30,6 +30,46 @@
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; 
+;;; String search
+
+(define-command (com-string-search :name t :command-table search-table)
+    ((string 'string :prompt "Search string"))
+  "Prompt for a string and search forward for it.
+If found, leaves point after string. If not, leaves point where it is."
+  (let* ((pane (current-window))
+	 (point (point pane)))
+    (search-forward point string)))
+
+(define-command (com-reverse-string-search :name t :command-table search-table)
+    ((string 'string :prompt "Search string"))
+  "Prompt for a string and search backward for it.
+If found, leaves point before string. If not, leaves point where it is."
+  (let* ((pane (current-window))
+	 (point (point pane)))
+    (search-backward point string)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; 
+;;; Word search
+
+(define-command (com-word-search :name t :command-table search-table)
+    ((word 'string :prompt "Search word"))
+  "Prompt for a whitespace delimited word and search forward for it.
+If found, leaves point after the word. If not, leaves point where it is."
+  (let* ((pane (current-window))
+	 (point (point pane)))
+    (climacs-base::search-word-forward point word)))
+
+(define-command (com-reverse-word-search :name t :command-table search-table)
+    ((word 'string :prompt "Search word"))
+  "Prompt for a whitespace delimited word and search backward for it.
+If found, leaves point before the word. If not, leaves point where it is."
+  (let* ((pane (current-window))
+	 (point (point pane)))
+    (climacs-base::search-word-backward point word)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; 
 ;;; Incremental search
 
 (make-command-table 'isearch-climacs-table :errorp nil)
@@ -445,5 +485,3 @@
 (multiple-query-replace-set-key '(#\q) 'com-query-replace-exit)
 (multiple-query-replace-set-key '(#\y) 'com-multiple-query-replace-replace)
 (multiple-query-replace-set-key '(#\n) 'com-multiple-query-replace-skip)
-
-




More information about the Climacs-cvs mailing list