Changeset 12651
- Timestamp:
- Aug 23, 2009, 9:51:03 AM (15 years ago)
- File:
-
- 1 edited
-
trunk/source/cocoa-ide/hemlock/src/edit-defs.lisp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/cocoa-ide/hemlock/src/edit-defs.lisp
r12635 r12651 313 313 (let* ((base-name (ccl::definition-base-name def-type full-name)) 314 314 (string (string base-name)) 315 (pattern (new-search-pattern :string-insensitive :forward string))) 316 (with-mark ((mark (current-point))) 317 (when (loop 318 while (find-pattern mark pattern) 319 thereis (and (match-definition-context mark def-type full-name) 320 (backward-up-list mark)) 321 do (character-offset mark 1)) 315 (pattern (new-search-pattern :string-insensitive :forward string)) 316 (found 0)) 317 (with-mark ((mark (buffer-start-mark (current-buffer)))) 318 (when (or (loop 319 while (and (find-pattern mark pattern) (incf found)) 320 thereis (and (match-definition-context mark def-type full-name) 321 (backward-up-list mark)) 322 do (character-offset mark 1)) 323 ;; if there is only one instance, just go there 324 (and (eql found 1) (find-pattern (buffer-start mark) pattern)) 325 ;; Else should try again, being less strict... 326 ) 322 327 (move-point-leaving-mark mark))))) 323 328 324 329 (defun move-point-leaving-mark (target) 325 (let ((point (current-point )))330 (let ((point (current-point-collapsing-selection))) 326 331 (push-new-buffer-mark point) 327 332 (move-mark point target) … … 342 347 (declare (inline search)) 343 348 (with-mark ((temp-mark (current-point))) 344 (unless (move-to-absolute-position temp-mark start-pos)345 (buffer-end temp-mark))346 349 (unless full-text 347 350 ;; Someday, might only store a snippet for toplevel, so inner notes … … 349 352 (let* ((toplevel (ccl::source-note-toplevel-note source)) 350 353 (toplevel-start-pos (and (not (eq toplevel source)) 351 (ccl:source-note-start-pos toplevel)))) 352 (when toplevel-start-pos 354 (ccl:source-note-start-pos toplevel))) 355 (text (and toplevel-start-pos (ccl:source-note-text toplevel)))) 356 (when text 353 357 (setq offset (- start-pos toplevel-start-pos)) 354 358 (setq start-pos toplevel-start-pos) 355 (setq full-text (ccl:source-note-text toplevel))))) 359 (setq full-text text) 360 (character-offset temp-mark (- offset))))) 361 (unless (move-to-absolute-position temp-mark start-pos) 362 (buffer-end temp-mark)) 363 356 364 (when (or (null full-text) 357 365 (or (search temp-mark full-text :forward) … … 367 375 368 376 (defun find-definition-in-buffer (def-type full-name source) 369 (current-point-collapsing-selection)370 377 (or (and (ccl:source-note-p source) 371 378 (move-to-source-note source))
Note:
See TracChangeset
for help on using the changeset viewer.
