@@ -489,24 +489,16 @@ impl BufferText {
489489 ) -> bool {
490490 // GNU intervals are character-indexed; BufferText owns the conversion
491491 // from buffer byte offsets into interval positions.
492- let ( start, end) = {
493- let storage = self . storage . borrow ( ) ;
494- (
495- storage. gap . byte_to_char ( start) ,
496- storage. gap . byte_to_char ( end) ,
497- )
498- } ;
492+ let start = self . buf_bytepos_to_charpos ( start) ;
493+ let end = self . buf_bytepos_to_charpos ( end) ;
499494 self . storage
500495 . borrow_mut ( )
501496 . text_props
502497 . put_property ( start, end, name, value)
503498 }
504499
505500 pub fn text_props_get_property ( & self , pos : usize , name : Value ) -> Option < Value > {
506- let pos = {
507- let storage = self . storage . borrow ( ) ;
508- storage. gap . byte_to_char ( pos)
509- } ;
501+ let pos = self . buf_bytepos_to_charpos ( pos) ;
510502 self . storage
511503 . borrow ( )
512504 . text_props
@@ -515,83 +507,67 @@ impl BufferText {
515507 }
516508
517509 pub fn text_props_get_properties ( & self , pos : usize ) -> HashMap < Value , Value > {
518- let pos = {
519- let storage = self . storage . borrow ( ) ;
520- storage. gap . byte_to_char ( pos)
521- } ;
510+ let pos = self . buf_bytepos_to_charpos ( pos) ;
522511 self . storage . borrow ( ) . text_props . get_properties ( pos)
523512 }
524513
525514 pub fn text_props_get_properties_ordered ( & self , pos : usize ) -> Vec < ( Value , Value ) > {
526- let pos = {
527- let storage = self . storage . borrow ( ) ;
528- storage. gap . byte_to_char ( pos)
529- } ;
515+ let pos = self . buf_bytepos_to_charpos ( pos) ;
530516 self . storage . borrow ( ) . text_props . get_properties_ordered ( pos)
531517 }
532518
533519 pub fn text_props_remove_property ( & self , start : usize , end : usize , name : Value ) -> bool {
534- let ( start, end) = {
535- let storage = self . storage . borrow ( ) ;
536- (
537- storage. gap . byte_to_char ( start) ,
538- storage. gap . byte_to_char ( end) ,
539- )
540- } ;
520+ let start = self . buf_bytepos_to_charpos ( start) ;
521+ let end = self . buf_bytepos_to_charpos ( end) ;
541522 self . storage
542523 . borrow_mut ( )
543524 . text_props
544525 . remove_property ( start, end, name)
545526 }
546527
547528 pub fn text_props_remove_all ( & self , start : usize , end : usize ) {
548- let ( start, end) = {
549- let storage = self . storage . borrow ( ) ;
550- (
551- storage. gap . byte_to_char ( start) ,
552- storage. gap . byte_to_char ( end) ,
553- )
554- } ;
529+ let start = self . buf_bytepos_to_charpos ( start) ;
530+ let end = self . buf_bytepos_to_charpos ( end) ;
555531 self . storage
556532 . borrow_mut ( )
557533 . text_props
558534 . remove_all_properties ( start, end) ;
559535 }
560536
561537 pub fn text_props_next_change ( & self , pos : usize ) -> Option < usize > {
562- let storage = self . storage . borrow ( ) ;
563- let char_pos = storage. gap . byte_to_char ( pos) ;
564- storage
565- . text_props
566- . next_property_change ( char_pos)
567- . map ( |next| storage. gap . char_to_byte ( next) )
538+ let char_pos = self . buf_bytepos_to_charpos ( pos) ;
539+ let next = {
540+ self . storage
541+ . borrow ( )
542+ . text_props
543+ . next_property_change ( char_pos)
544+ } ;
545+ next. map ( |next| self . buf_charpos_to_bytepos ( next) )
568546 }
569547
570548 pub fn text_props_previous_change ( & self , pos : usize ) -> Option < usize > {
571- let storage = self . storage . borrow ( ) ;
572- let char_pos = storage. gap . byte_to_char ( pos) ;
573- storage
574- . text_props
575- . previous_property_change ( char_pos)
576- . map ( |prev| storage. gap . char_to_byte ( prev) )
549+ let char_pos = self . buf_bytepos_to_charpos ( pos) ;
550+ let prev = {
551+ self . storage
552+ . borrow ( )
553+ . text_props
554+ . previous_property_change ( char_pos)
555+ } ;
556+ prev. map ( |prev| self . buf_charpos_to_bytepos ( prev) )
577557 }
578558
579559 pub fn text_props_append_shifted ( & self , other : & TextPropertyTable , byte_offset : usize ) {
580- let char_offset = {
581- let storage = self . storage . borrow ( ) ;
582- storage. gap . byte_to_char ( byte_offset)
583- } ;
560+ let char_offset = self . buf_bytepos_to_charpos ( byte_offset) ;
584561 self . storage
585562 . borrow_mut ( )
586563 . text_props
587564 . append_shifted ( other, char_offset) ;
588565 }
589566
590567 pub fn text_props_slice ( & self , start : usize , end : usize ) -> TextPropertyTable {
591- let storage = self . storage . borrow ( ) ;
592- let start = storage. gap . byte_to_char ( start) ;
593- let end = storage. gap . byte_to_char ( end) ;
594- storage. text_props . slice ( start, end)
568+ let start = self . buf_bytepos_to_charpos ( start) ;
569+ let end = self . buf_bytepos_to_charpos ( end) ;
570+ self . storage . borrow ( ) . text_props . slice ( start, end)
595571 }
596572
597573 pub fn text_props_intervals_snapshot ( & self ) -> Vec < PropertyInterval > {
0 commit comments