[clim-desktop-cvs] CVS clim-desktop

thenriksen thenriksen at common-lisp.net
Tue May 2 14:40:15 UTC 2006


Update of /project/clim-desktop/cvsroot/clim-desktop
In directory clnet:/tmp/cvs-serv6237

Modified Files:
	swine.lisp 
Log Message:
Cleaned stuff up, removed unused functions, moved some functions to
Climacs proper.


--- /project/clim-desktop/cvsroot/clim-desktop/swine.lisp	2006/04/30 12:10:05	1.4
+++ /project/clim-desktop/cvsroot/clim-desktop/swine.lisp	2006/05/02 14:40:15	1.5
@@ -27,11 +27,6 @@
 
 ;; Convenience functions:
 
-(defun buffer-substring (buffer start end)
-  "Return a string of the contents of buffer from `start' to
-`end'."
-  (coerce (buffer-sequence buffer start end) 'string))
-
 (defun unlisted (obj)
   (if (listp obj)
       (first obj)
@@ -42,81 +37,29 @@
       obj
       (list obj)))
 
-(defun definition-at-mark (mark syntax)
+(defun text-of-definition-at-mark (mark syntax)
   "Return the text of the definition at mark."
-  (let* ((definition (form-toplevel (or (form-around syntax (offset mark))
-                                        (form-after syntax (offset mark)))
-                                    syntax))
-         (definition-pos (start-offset definition)))
+  (let ((definition (definition-at-mark mark syntax)))
     (buffer-substring (buffer mark)
-                      definition-pos
+                      (start-offset definition)                      
                       (end-offset definition))))
                       
-(defun expression-at-mark (mark syntax)
- "Return the text of the expression at mark."
- (let ((m (clone-mark mark)))
-   (forward-expression m syntax)
-   (let ((end (offset m)))
-     (backward-expression m syntax)
-     (buffer-substring (buffer mark) (offset m) end))))
+(defun text-of-expression-at-mark (mark syntax)
+  "Return the text of the expression at mark."
+  (let ((expression (expression-at-mark mark syntax)))
+    (buffer-substring (buffer mark)
+                      (start-offset expression)                      
+                      (end-offset expression))))
 
 (defun symbol-name-at-mark (mark syntax)
- "Return the text of the symbol at mark."
- (let ((potential-form (or (form-around syntax (offset mark))
-			   (form-around syntax (1- (offset mark)))
-			   (form-around syntax (1+ (offset mark))))))
-   (when (and potential-form
-              (typep potential-form 'token-mixin))
-     (buffer-substring (buffer mark) (start-offset potential-form)
-                       (end-offset potential-form)))))
-
-(defun find-operator-in-trees (trees list offset)
- (cond ((or (null trees)
-            (>= (start-offset (first-form trees)) offset))
-        list)
-       ((or (< (start-offset (first-form trees)) offset (end-offset (first-form trees)))
-            (typep (first-form trees) 'incomplete-form-mixin))
-        (cons (first-form trees)
-              (find-operator-in-tree (first-form trees) offset)))
-       (t (find-operator-in-trees (rest-forms trees) list offset))))
-
-(defun find-operator-in-tree (tree offset)
- (if (null (children tree))
-     '()
-     (find-operator-in-trees (children tree) nil offset)))
-
-(defun enclosing-operator-names-at-mark (mark syntax)
- "Returns a list of strings being the operator names surrounding mark."
- (with-slots (stack-top) syntax
-    (loop for form in (find-operator-in-tree stack-top (offset mark))
-          for token = (and form (second-form (children form)))
-          when (and (typep form 'list-form)
-                    (typep token 'token-mixin))
-            collect (buffer-substring (buffer mark)
-                                      (start-offset token)
-                                      (end-offset token)))))
-
-;; Once Dwight understands the syntax facilities better,
-;; he should rewrite this to something like the above.
-
-(defmethod backward-up-list-no-error (mark (syntax lisp-syntax))
-  (let ((form (or (form-around syntax (offset mark))
-		  (form-before syntax (offset mark))
-		  (form-after syntax (offset mark)))))
-    (when form
-	(let ((parent (parent form)))
-	  (if (typep parent 'list-form)
-	      (setf (offset mark) (start-offset parent)))))))
-
-(defun enclosing-list-first-word (mark syntax) 
- "Return the text of the expression at mark. Mark need not be in
-a complete list form."
- ;; This is not very fast, but fast enough.
- (first (reverse (enclosing-operator-names-at-mark mark syntax))))
+  "Return the text of the symbol at mark."
+  (symbol-name (token-to-symbol syntax
+                                (expression-at-mark mark syntax)
+                                :preserve)))
 
 (defun macroexpand-with-swank (mark syntax &optional (all nil))
  (with-slots (package) syntax
-    (let* ((string (expression-at-mark mark syntax))
+    (let* ((string (text-of-expression-at-mark mark syntax))
            (swank::*buffer-package* (or package *package*))
            (swank::*buffer-readtable* *readtable*)
            (expansion (if all
@@ -159,7 +102,7 @@
 
 (defun compile-defun-with-swank (mark pane syntax)
  (with-slots (package) syntax
-    (let* ((string (definition-at-mark mark syntax))
+    (let* ((string (text-of-definition-at-mark mark syntax))
            (buffer-name (name (buffer pane)))
            (buffer-file-name (filepath (buffer pane)))
            (m (clone-mark mark))
@@ -845,7 +788,8 @@
                             indexing-start-arg
                             operator-form))
          (preceding-arg-obj (when preceding-arg-token
-                              (token-to-object syntax preceding-arg-token t))))
+                              (token-to-object syntax preceding-arg-token
+                                               :no-error t))))
     (values preceding-arg-obj argument-indices)))
 
  ;; This is a generic function in order to facilitate different lambda




More information about the Clim-desktop-cvs mailing list