Changeset 8461 for trunk/j/src/org/armedbear/lisp/slime.lisp
- Timestamp:
- 02/04/05 04:28:47 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/j/src/org/armedbear/lisp/slime.lisp
r8440 r8461 2 2 ;;; 3 3 ;;; Copyright (C) 2004-2005 Peter Graves 4 ;;; $Id: slime.lisp,v 1.2 7 2005-02-01 03:38:22piso Exp $4 ;;; $Id: slime.lisp,v 1.28 2005-02-04 04:28:47 piso Exp $ 5 5 ;;; 6 6 ;;; This program is free software; you can redistribute it and/or … … 231 231 (values)) 232 232 233 (defun symbol-name-at-point () 234 (let ((string (line-chars (current-line))) 235 (point-charpos (mark-charpos (current-point))) 236 (begin 0) 237 end) 238 (when (= point-charpos (length string)) 239 (decf point-charpos)) 233 (defun symbol-name-at-mark (mark) 234 (let* ((string (line-chars (mark-line mark))) 235 (length (length string)) 236 (charpos (mark-charpos mark)) 237 (begin 0) 238 end) 239 (when (= charpos length) 240 (decf charpos)) 240 241 (loop 241 (aver (< point-charpos (length string)))242 (cond ((not (delimiter-p (schar string point-charpos)))242 (aver (< charpos length)) 243 (cond ((not (delimiter-p (schar string charpos))) 243 244 (return)) 244 ((zerop point-charpos)245 (return-from symbol-name-at- pointnil))245 ((zerop charpos) 246 (return-from symbol-name-at-mark nil)) 246 247 (t 247 (decf point-charpos))))248 (dotimes (i point-charpos)248 (decf charpos)))) 249 (dotimes (i charpos) 249 250 (let ((c (schar string i))) 250 251 (when (delimiter-p c) 251 252 (setf begin (1+ i))))) 252 (do ((i point-charpos (1+ i)))253 ((= i (length string)) (setf end i))253 (do ((i charpos (1+ i))) 254 ((= i length) (setf end i)) 254 255 (when (delimiter-p (schar string i)) 255 256 (setf end i) … … 257 258 (subseq string begin end))) 258 259 259 (defun enclosing-operator-names ( )260 (defun enclosing-operator-names (mark) 260 261 "Return the list of operator names of the forms containing point." 261 262 (let ((result ())) 262 (save-excursion 263 (loop 264 (let ((point1 (current-point)) 265 (point2 (progn (backward-up-list) (current-point)))) 266 (when (and (equal (mark-line point1) (mark-line point2)) 267 (eql (mark-charpos point1) (mark-charpos point2))) 268 (return))) 269 (unless (looking-at "(") 270 (return)) 271 (when (looking-at "(") 272 (forward-char) 273 (let ((name (symbol-name-at-point))) 274 (cond ((string-equal name "defun") 275 (return)) 276 ((null name) 277 (return)) 278 (t 279 (push name result)))) 280 (backward-up-list)))) 263 (loop 264 (let* ((mark1 (copy-mark mark)) 265 (mark2 (progn (backward-up-list mark) (copy-mark mark)))) 266 (when (mark= mark1 mark2) ; Can't go back any further. 267 (return))) 268 (unless (looking-at mark "(") 269 (return)) 270 (forward-char mark) 271 (let ((name (symbol-name-at-mark mark))) 272 (cond ((string-equal name "defun") 273 (return)) 274 ((null name) 275 (return)) 276 (t 277 (push name result)))) 278 (backward-up-list mark)) 281 279 (nreverse result))) 282 280 283 281 (defun slime-space () 284 282 (unwind-protect 285 (when (and (slime-connected-p)286 (not (slime-busy-p)))287 (let ((names (enclosing-operator-names)))288 (when names289 (slime-eval-async290 `(swank:arglist-for-echo-area (quote ,names))291 #'(lambda (message)292 (when (stringp message)293 (status (string-trim '(#\") message))))))))294 (insert #\space)))283 (when (and (slime-connected-p) 284 (not (slime-busy-p))) 285 (let ((names (enclosing-operator-names (current-point)))) 286 (when names 287 (slime-eval-async 288 `(swank:arglist-for-echo-area (quote ,names)) 289 #'(lambda (message) 290 (when (stringp message) 291 (status (string-trim '(#\") message)))))))) 292 (insert #\space))) 295 293 296 294 (defun find-buffer-package () … … 376 374 (return-from slime-edit-definition))) 377 375 (unless function-name 378 (setf function-name (string-upcase (symbol-name-at- point))))376 (setf function-name (string-upcase (symbol-name-at-mark (current-point))))) 379 377 (when function-name 380 378 (setf function-name (string function-name)) … … 448 446 (map-key-for-mode "Ctrl Alt I" "(slime:slime-complete-symbol)" "Lisp") 449 447 (map-key-for-mode "Space" "(slime:slime-space)" "Lisp Shell") 450 ;;(map-key-for-mode "Space" "(slime:slime-space)" "Lisp")448 (map-key-for-mode "Space" "(slime:slime-space)" "Lisp") 451 449 (map-key-for-mode "Alt ." "(slime:slime-edit-definition)" "Lisp Shell") 452 450 (map-key-for-mode "Alt ." "(slime:slime-edit-definition)" "Lisp")
Note: See TracChangeset
for help on using the changeset viewer.