Changeset 800
- Timestamp:
- Apr 30, 2004, 7:30:04 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/ccl/hemlock/src/htext2.lisp (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/hemlock/src/htext2.lisp
r738 r800 19 19 (in-package :hemlock-internals) 20 20 21 (defun maybe-update-selection (mark) 22 mark 23 #+nil 24 (let* ((line (mark-line mark)) 25 (buffer (if line (line-%buffer line))) 26 (document (if buffer (buffer-document buffer)))) 27 (if (and buffer 28 (eq mark (buffer-point buffer)) 29 document) 30 (document-set-point-position document)) 31 mark)) 21 32 22 33 23 … … 238 228 (change-line mark line)) 239 229 (setf (mark-charpos mark) 0) 240 (maybe-update-selection mark))230 mark) 241 231 242 232 (defun line-end (mark &optional line) … … 247 237 (setq line (mark-line mark))) 248 238 (setf (mark-charpos mark) (line-length* line)) 249 (maybe-update-selection mark))239 mark) 250 240 251 241 (defun buffer-start (mark &optional (buffer (line-buffer (mark-line mark)))) … … 266 256 (change-line mark line)) 267 257 (setf (mark-charpos mark) (mark-charpos new-position)) 268 (maybe-update-selection mark))258 mark) 269 259 270 260 … … 279 269 (always-change-line mark prev) 280 270 (setf (mark-charpos mark) (line-length* prev)) 281 (maybe-update-selection mark))))271 mark))) 282 272 (t 283 273 (setf (mark-charpos mark) (1- charpos)) 284 (maybe-update-selection mark)))))274 mark)))) 285 275 286 276 (defun mark-after (mark) … … 294 284 (always-change-line mark next) 295 285 (setf (mark-charpos mark) 0) 296 (maybe-update-selection mark))))286 mark))) 297 287 (t 298 288 (setf (mark-charpos mark) (1+ charpos)) 299 (maybe-update-selection mark)))))289 mark)))) 300 290 301 291 … … 304 294 where it currently points. If there aren't N characters before (or after) 305 295 the mark, Nil is returned." 306 (let* ((charpos (mark-charpos mark)) 307 (result-mark 308 (if (< n 0) 309 (let ((n (- n))) 310 (if (< charpos n) 311 (do ((line (line-previous (mark-line mark)) (line-previous line)) 312 (n (- n charpos 1))) 313 ((null line) nil) 314 (let ((length (line-length* line))) 315 (cond ((<= n length) 316 (always-change-line mark line) 317 (setf (mark-charpos mark) (- length n)) 318 (return mark)) 319 (t 320 (setq n (- n (1+ length))))))) 321 (progn (setf (mark-charpos mark) (- charpos n)) 322 mark))) 323 (let* ((line (mark-line mark)) 324 (length (line-length* line))) 325 (if (> (+ charpos n) length) 326 (do ((line (line-next line) (line-next line)) 327 (n (- n (1+ (- length charpos))))) 328 ((null line) nil) 329 (let ((length (line-length* line))) 330 (cond ((<= n length) 331 (always-change-line mark line) 332 (setf (mark-charpos mark) n) 333 (return mark)) 334 (t 335 (setq n (- n (1+ length))))))) 336 (progn (setf (mark-charpos mark) (+ charpos n)) 337 mark)))))) 338 (if result-mark (maybe-update-selection result-mark)))) 296 (let* ((charpos (mark-charpos mark))) 297 (if (< n 0) 298 (let ((n (- n))) 299 (if (< charpos n) 300 (do ((line (line-previous (mark-line mark)) (line-previous line)) 301 (n (- n charpos 1))) 302 ((null line) nil) 303 (let ((length (line-length* line))) 304 (cond ((<= n length) 305 (always-change-line mark line) 306 (setf (mark-charpos mark) (- length n)) 307 (return mark)) 308 (t 309 (setq n (- n (1+ length))))))) 310 (progn (setf (mark-charpos mark) (- charpos n)) 311 mark))) 312 (let* ((line (mark-line mark)) 313 (length (line-length* line))) 314 (if (> (+ charpos n) length) 315 (do ((line (line-next line) (line-next line)) 316 (n (- n (1+ (- length charpos))))) 317 ((null line) nil) 318 (let ((length (line-length* line))) 319 (cond ((<= n length) 320 (always-change-line mark line) 321 (setf (mark-charpos mark) n) 322 (return mark)) 323 (t 324 (setq n (- n (1+ length))))))) 325 (progn (setf (mark-charpos mark) (+ charpos n)) 326 mark)))))) 339 327 340 328 … … 343 331 it currently points. If there aren't N lines after (or before) the Mark, 344 332 Nil is returned." 345 (let* ((result 346 (if (< n 0) 333 (if (< n 0) 347 334 (do ((line (mark-line mark) (line-previous line)) 348 335 (n n (1+ n))) … … 364 351 (min (line-length line) charpos) 365 352 (min (line-length line) (mark-charpos mark)))) 366 (return mark)))))) 367 (when result (maybe-update-selection result)))) 353 (return mark))))) 368 354 369 355 ;;; region-bounds -- Public … … 518 504 (write-string (buffer-name structure) stream) 519 505 (write-string "\">" stream)) 506 507 (defun check-buffer-modification (buffer mark) 508 (when (typep buffer 'buffer) 509 (let* ((protected-region (buffer-protected-region buffer))) 510 (when protected-region 511 (let* ((prot-start (region-start protected-region)) 512 (prot-end (region-end protected-region))) 513 514 (when (and (mark>= mark prot-start) 515 (mark< mark prot-end)) 516 (editor-error "Can't modify protected buffer region.")))))))
Note:
See TracChangeset
for help on using the changeset viewer.
