Loading ...
Sorry, an error occurred while loading the content.

439Re: [60am,mb] visual selection is not drawn correctly

Expand Messages
  • Bram Moolenaar
    Jul 3, 2001
    • 0 Attachment
      Yasuhiro Matsumoto wrote:

      >in below's case, the second line does not draw shadow of selection.
      >the cause of this problem is skipping boundary of selection area
      > by multibyte which defined fromcol and tocol in screen.c(2908).
      >(please compare like multibyte to [])
      >
      >ex)
      >[][][]
      > [][][]
      >
      >I made a patch.
      >Please check this.
      [and then:]
      > Sorry.
      > I have mistake.
      > please check this (ptr2len -> ptr2cells)

      Thanks for fixing this.

      This code to check for the start/end of a highlighting region is executed for
      every character. It starts to look complicated now. I'll try to simplify it
      a bit.

      Please verify that the patch below works properly. It's simpler than your
      patch, perhaps I missed something. I verified it works correclty in UTF-8
      text. The characters that are highlighted are the ones deleted with "d".

      *** ../dist/vim60am/src/screen.c Wed Jun 20 22:05:08 2001
      --- screen.c Tue Jul 3 11:41:01 2001
      ***************
      *** 2316,2321 ****
      --- 2316,2322 ----
      int n_skip = 0; /* nr of chars to skip for 'nowrap' */

      int fromcol, tocol; /* start/end of inverting */
      + int fromcol_prev = -2; /* start of inverting after cursor */
      int noinvcur = FALSE; /* don't invert the cursor */
      #ifdef FEAT_VISUAL
      pos_T *top, *bot;
      ***************
      *** 2640,2645 ****
      --- 2641,2669 ----
      #endif
      }

      + /*
      + * Correct highlighting for cursor that can't be disabled.
      + * Avoids having to check this for each character.
      + */
      + if (fromcol >= 0)
      + {
      + if (noinvcur)
      + {
      + if ((colnr_T)fromcol == wp->w_virtcol)
      + {
      + /* highlighting starts at cursor, let it start just after the
      + * cursor */
      + fromcol_prev = fromcol;
      + fromcol = -1;
      + }
      + else if ((colnr_T)fromcol < wp->w_virtcol)
      + /* restart highlighting after the cursor */
      + fromcol_prev = wp->w_virtcol;
      + }
      + if (fromcol >= tocol)
      + fromcol = -1;
      + }
      +
      #ifdef FEAT_SEARCH_EXTRA
      /*
      * Handle highlighting the last used search pattern.
      ***************
      *** 2905,2924 ****
      if (draw_state == WL_LINE && area_highlighting)
      {
      /* handle Visual or match highlighting in this line */
      ! if (((vcol == fromcol
      ! && !(noinvcur
      ! && (colnr_T)vcol == wp->w_virtcol
      ! ))
      ! || (noinvcur
      ! && (colnr_T)vcol_prev == wp->w_virtcol
      ! && vcol >= fromcol))
      ! && vcol < tocol)
      area_attr = attr; /* start highlighting */
      ! else if (area_attr
      && (vcol == tocol
      ! || (noinvcur
      ! && (colnr_T)vcol == wp->w_virtcol
      ! )))
      #ifdef LINE_ATTR
      area_attr = line_attr; /* stop highlighting */
      else if (line_attr && ((fromcol == -10 && tocol == MAXCOL)
      --- 2929,2945 ----
      if (draw_state == WL_LINE && area_highlighting)
      {
      /* handle Visual or match highlighting in this line */
      ! if (vcol == fromcol
      ! #ifdef FEAT_MBYTE
      ! || (has_mbyte && vcol + 1 == fromcol && n_extra == 0
      ! && (*mb_ptr2cells)(ptr) > 1)
      ! #endif
      ! || ((colnr_T)vcol_prev == fromcol_prev
      ! && vcol < tocol))
      area_attr = attr; /* start highlighting */
      ! else if (area_attr != 0
      && (vcol == tocol
      ! || (noinvcur && (colnr_T)vcol == wp->w_virtcol)))
      #ifdef LINE_ATTR
      area_attr = line_attr; /* stop highlighting */
      else if (line_attr && ((fromcol == -10 && tocol == MAXCOL)
      --
      hundred-and-one symptoms of being an internet addict:
      89. In addition to your e-mail address being on your business cards
      you even have your own domain.

      /// Bram Moolenaar -- Bram@... -- http://www.moolenaar.net \\\
      ((( Creator of Vim -- http://vim.sf.net -- ftp://ftp.vim.org/pub/vim )))
      \\\ Help me helping AIDS orphans in Uganda - http://iccf-holland.org ///
    • Show all 9 messages in this topic