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

2241Re: Make langmap accept multi-byte characters

Expand Messages
  • Konstantin Korikov
    Oct 15, 2006
    • 0 Attachment
      > http://lostclus.linux.kiev.ua/patches/all/vim70-langmapmb-2.patch
      >
      > I use combination of binary search and simple array lockup.

      This patch have a mistake here:

      /* insert new page at position a */
      pages = (langmap_page_T*)(langmap_pages.ga_data) + a;
      mch_memmove(pages + 1, pages,
      (langmap_pages.ga_len - a) * sizeof(langmap_page_T));
      ++langmap_pages.ga_len;
      pages[0].num = page_num;
      /* init with a-one-to one map */
      for (b = 0; b < (1 << LANGMAP_PAGESIZE_POT); b++)
      pages[0].charmap[b] = b;

      Last loop will correctly initialize array only if page number is zero.
      To resolve this problem

      char_u charmap[1 << LANGMAP_PAGESIZE_POT];

      needs to be replaced with

      int charmap[1 << LANGMAP_PAGESIZE_POT];

      But this will increase memory usage in 4 (for 32 bit machines) times.
      Another solution: fill array with zeros and insert addition check in
      LANGMAP_ADJUST.

      But I think there is no reason to complicate this task and separate
      entry for each key will be really optimal way, that keeps task simple.

      Thanks.

      http://lostclus.linux.kiev.ua/patches/all/vim70-langmapmb-3.patch

      --
      Best regards,
      Konstantin Korikov
      --------------------------------------------------
      gstreamer-0.10.4 - GStreamer streaming media framework runtime
      --------------------------------------------------
    • Show all 10 messages in this topic