Changeset 12558


Ignore:
Timestamp:
Aug 8, 2009, 5:52:53 AM (10 years ago)
Author:
rme
Message:

Add #/getCharacters:range: for xhemlock-buffer-string.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/cocoa-ide/hemlock-text.lisp

    r12556 r12558  
    9494            code
    9595            #\Replacement_Character))))))
     96
     97(objc:defmethod (#/getCharacters:range: :void) ((self xhemlock-buffer-string)
     98                                                (buffer (:* :unichar))
     99                                                (r :<NSR>ange))
     100  (let* ((cache (hemlock-buffer-string-cache self))
     101         (index (ns:ns-range-location r))
     102         (length (ns:ns-range-length r))
     103         (hi::*current-buffer* (buffer-cache-buffer cache)))
     104    #+debug
     105    (#_NSLog #@"get characters: %d/%d"
     106             :<NSUI>nteger index
     107             :<NSUI>nteger length)
     108    (multiple-value-bind (line idx) (update-line-cache-for-index cache index)
     109      (let* ((len (hemlock::line-length line)))
     110        (do* ((i 0 (1+ i)))
     111             ((= i length))
     112          (cond ((< idx len)
     113                 (setf (paref buffer (:* :unichar) i)
     114                       (char-code (hemlock::line-character line idx)))
     115                 (incf idx))
     116                (t
     117                 (setf (paref buffer (:* :unichar) i)
     118                       (char-code #\Newline)
     119                       line (hi::line-next line)
     120                       len (if line (hi::line-length line) 0)
     121                       idx 0))))))))
    96122
    97123
     
    364390            (:ns-glyph-info (format t "~s" keyword))))))))
    365391
    366      
    367 
    368392(defun charprops-to-dict (plist)
    369393  (when (null plist)
Note: See TracChangeset for help on using the changeset viewer.