Patch 8.2.3226
Problem:    New digraph functions use old naming scheme.
Solution:   Use the digraph_ prefix. (Hirohito Higashi, closes #8580)
Files:      runtime/doc/digraph.txt, runtime/doc/eval.txt,
            runtime/doc/usr_41.txt, src/digraph.c, src/edit.c, src/errors.h,
            src/evalfunc.c, src/proto/digraph.pro,
            src/testdir/test_digraph.vim


*** ../vim-8.2.3225/runtime/doc/digraph.txt     2021-07-19 20:07:16.693295633 
+0200
--- runtime/doc/digraph.txt     2021-07-26 21:42:55.104966083 +0200
***************
*** 40,46 ****
                        future.
                        NOTE: This command cannot add a digraph that starts
                        with a white space.  If you want to add such digraph,
!                       you can use |setdigraph()| instead.
  
  Vim is normally compiled with the |+digraphs| feature.  If the feature is
  disabled, the ":digraph" command will display an error message.
--- 40,46 ----
                        future.
                        NOTE: This command cannot add a digraph that starts
                        with a white space.  If you want to add such digraph,
!                       you can use |digraph_set()| instead.
  
  Vim is normally compiled with the |+digraphs| feature.  If the feature is
  disabled, the ":digraph" command will display an error message.
*** ../vim-8.2.3225/runtime/doc/eval.txt        2021-07-19 20:07:16.697295626 
+0200
--- runtime/doc/eval.txt        2021-07-26 21:42:55.108966074 +0200
***************
*** 2531,2536 ****
--- 2548,2557 ----
  did_filetype()                        Number  |TRUE| if FileType autocmd 
event used
  diff_filler({lnum})           Number  diff filler lines about {lnum}
  diff_hlID({lnum}, {col})      Number  diff highlighting at {lnum}/{col}
+ digraph_get({chars})          String  get the digraph of {chars}
+ digraph_getlist([{listall}])  List    get all |digraph|s
+ digraph_set({chars}, {digraph})       Boolean register |digraph|
+ digraph_setlist({digraphlist})        Boolean register multiple |digraph|s
  echoraw({expr})                       none    output {expr} as-is
  empty({expr})                 Number  |TRUE| if {expr} is empty
  environ()                     Dict    return environment variables
***************
*** 2603,2610 ****
  getcurpos([{winnr}])          List    position of the cursor
  getcursorcharpos([{winnr}])   List    character position of the cursor
  getcwd([{winnr} [, {tabnr}]]) String  get the current working directory
- getdigraph({chars})           String  get the digraph of {chars}
- getdigraphlist([{listall}])   List    get all |digraph|s
  getenv({name})                        String  return environment variable
  getfontname([{name}])         String  name of font being used
  getfperm({fname})             String  file permissions of file {fname}
--- 2624,2629 ----
***************
*** 2871,2878 ****
  setcharsearch({dict})         Dict    set character search from {dict}
  setcmdpos({pos})              Number  set cursor position in command-line
  setcursorcharpos({list})      Number  move cursor to position in {list}
- setdigraph({chars}, {digraph})        Boolean  register |digraph|
- setdigraphlist({digraphlist}) Boolean  register multiple |digraph|s
  setenv({name}, {val})         none    set environment variable
  setfperm({fname}, {mode})     Number  set {fname} file permissions to {mode}
  setline({lnum}, {line})               Number  set line {lnum} to {line}
--- 2890,2895 ----
***************
*** 4181,4186 ****
--- 4203,4309 ----
  
                Can also be used as a |method|: >
                        GetLnum()->diff_hlID(col)
+ <
+ 
+ digraph_get({chars})                                  *digraph_get()* *E1214*
+               Return the digraph of {chars}.  This should be a string with
+               exactly two characters.  If {chars} are not just two
+               characters, or the digraph of {chars} does not exist, an error
+               is given and an empty string is returned.
+ 
+               The character will be converted from Unicode to 'encoding'
+               when needed.  This does require the conversion to be
+               available, it might fail.
+ 
+               Also see |digraph_getlist()|.
+ 
+               Examples: >
+               " Get a built-in digraph
+               :echo digraph_get('00')         " Returns '∞'
+ 
+               " Get a user-defined digraph
+               :call digraph_set('aa', 'あ')
+               :echo digraph_get('aa')         " Returns 'あ'
+ <
+               Can also be used as a |method|: >
+                       GetChars()->digraph_get()
+ <
+               This function works only when compiled with the |+digraphs|
+               feature.  If this feature is disabled, this function will
+               display an error message.
+ 
+ 
+ digraph_getlist([{listall}])                          *digraph_getlist()*
+               Return a list of digraphs.  If the {listall} argument is given
+               and it is TRUE, return all digraphs, including the default
+               digraphs.  Otherwise, return only user-defined digraphs.
+ 
+               The characters will be converted from Unicode to 'encoding'
+               when needed.  This does require the conservation to be
+               available, it might fail.
+ 
+               Also see |digraph_get()|.
+ 
+               Examples: >
+               " Get user-defined digraphs
+               :echo digraph_getlist()
+ 
+               " Get all the digraphs, including default digraphs
+               :echo digraph_getlist(1)
+ <
+               Can also be used as a |method|: >
+                       GetNumber()->digraph_getlist()
+ <
+               This function works only when compiled with the |+digraphs|
+               feature.  If this feature is disabled, this function will
+               display an error message.
+ 
+ 
+ digraph_set({chars}, {digraph})                               *digraph_set()* 
*E1205*
+               Add digraph {chars} to the list.  {chars} must be a string
+               with two characters.  {digraph} is a string with one utf-8
+               encoded character. Be careful, composing characters are NOT
+               ignored.  This function is similar to |:digraphs| command, but
+               useful to add digraphs start with a white space.
+ 
+               The function result is v:true if |digraph| is registered.  If
+               this fails an error message is given and v:false is returned.
+ 
+               If you want to define multiple digraphs at once, you can use
+               |digraph_setlist()|.
+ 
+               Example: >
+                       call digraph_set('  ', 'あ')
+ <
+               Can be used as a |method|: >
+                       GetString()->digraph_set('あ')
+ <
+               This function works only when compiled with the |+digraphs|
+               feature.  If this feature is disabled, this function will
+               display an error message.
+ 
+ 
+ digraph_setlist({digraphlist})                                
*digraph_setlist()*
+               Similar to |digraph_set()| but this function can add multiple
+               digraphs at once.  {digraphlist} is a list composed of lists,
+               where each list contains two strings with {chars} and
+               {digraph} as in |digraph_set()|.
+               Example: >
+                   call digraph_setlist([['aa', 'あ'], ['ii', 'い']])
+ <
+               It is similar to the following: >
+                   for [chars, digraph] in [['aa', 'あ'], ['ii', 'い']]
+                         call digraph_set(chars, digraph)
+                   endfor
+ <             Except that the function returns after the first error,
+               following digraphs will not be added.
+ 
+               Can be used as a |method|: >
+                   GetList()->digraph_setlist()
+ <
+               This function works only when compiled with the |+digraphs|
+               feature.  If this feature is disabled, this function will
+               display an error message.
  
  
  echoraw({expr})                                               *echoraw()*
***************
*** 5545,5605 ****
  
  <             Can also be used as a |method|: >
                        GetWinnr()->getcwd()
- <
-                                             *getdigraph()* *E1214*
- getdigraph({chars})
-               Return the digraph of {chars}.  This should be a string with
-               exactly two characters.  If {chars} are not just two
-               characters, or the digraph of {chars} does not exist, an error
-               is given and an empty string is returned.
- 
-               The character will be converted from Unicode to 'encoding'
-               when needed.  This does require the conversion to be
-               available, it might fail.
- 
-               Also see |getdigraphlist()|.
- 
-               Examples: >
-               " Get a built-in digraph
-               :echo getdigraph('00')          " Returns '∞'
- 
-               " Get a user-defined digraph
-               :call setdigraph('aa', 'あ')
-               :echo getdigraph('aa')          " Returns 'あ'
- <
-               Can also be used as a |method|: >
-                       GetChars()->getdigraph()
- <
-               This function works only when compiled with the |+digraphs|
-               feature.  If this feature is disabled, this function will
-               display an error message.
- 
- 
- getdigraphlist([{listall}])                   *getdigraphlist()*
-               Return a list of digraphs.  If the {listall} argument is given
-               and it is TRUE, return all digraphs, including the default
-               digraphs.  Otherwise, return only user-defined digraphs.
- 
-               The characters will be converted from Unicode to 'encoding'
-               when needed.  This does require the conservation to be
-               available, it might fail.
- 
-               Also see |getdigraph()|.
- 
-               Examples: >
-               " Get user-defined digraphs
-               :echo getdigraphlist()
- 
-               " Get all the digraphs, including default digraphs
-               :echo digraphlist(1)
- <
-               Can also be used as a |method|: >
-                       GetNumber()->getdigraphlist()
- <
-               This function works only when compiled with the |+digraphs|
-               feature.  If this feature is disabled, this function will
-               display an error message.
- 
  
  getenv({name})                                                *getenv()*
                Return the value of environment variable {name}.
--- 5686,5691 ----
***************
*** 9505,9557 ****
                        GetCursorPos()->setcursorcharpos()
  
  
- setdigraph({chars}, {digraph})                *setdigraph()* *E1205*
-               Add digraph {chars} to the list.  {chars} must be a string
-               with two characters.  {digraph} is a string with one utf-8
-               encoded character. Be careful, composing characters are NOT
-               ignored.  This function is similar to |:digraphs| command, but
-               useful to add digraphs start with a white space.
- 
-               The function result is v:true if |digraph| is registered.  If
-               this fails an error message is given and v:false is returned.
- 
-               If you want to define multiple digraphs at once, you can use
-               |setdigraphlist()|.
- 
-               Example: >
-                       call setdigraph('  ', 'あ')
- <
-               Can be used as a |method|: >
-                       GetString()->setdigraph('あ')
- <
-               This function works only when compiled with the |+digraphs|
-               feature.  If this feature is disabled, this function will
-               display an error message.
- 
- 
- setdigraphlist({digraphlist})                 *setdigraphlist()*
-               Similar to |setdigraph()| but this function can add multiple
-               digraphs at once.  {digraphlist} is a list composed of lists,
-               where each list contains two strings with {chars} and
-               {digraph} as in |setdigraph()|.
-               Example: >
-                   call setdigraphlist([['aa', 'あ'], ['ii', 'い']])
- <
-               It is similar to the following: >
-                   for [chars, digraph] in [['aa', 'あ'], ['ii', 'い']]
-                         call setdigraph(chars, digraph)
-                   endfor
- <             Except that the function returns after the first error,
-               following digraphs will not be added.
- 
-               Can be used as a |method|: >
-                   GetList()->setdigraphlist()
- <
-               This function works only when compiled with the |+digraphs|
-               feature.  If this feature is disabled, this function will
-               display an error message.
- 
- 
  setenv({name}, {val})                                         *setenv()*
                Set environment variable {name} to {val}.
                When {val} is |v:null| the environment variable is deleted.
--- 9628,9633 ----
*** ../vim-8.2.3225/runtime/doc/usr_41.txt      2021-07-19 20:07:16.697295626 
+0200
--- runtime/doc/usr_41.txt      2021-07-26 21:42:55.108966074 +0200
***************
*** 986,1001 ****
        winrestview()           restore saved view of current window
  
  Mappings and Menus:                       *mapping-functions*
        hasmapto()              check if a mapping exists
        mapcheck()              check if a matching mapping exists
        maparg()                get rhs of a mapping
        mapset()                restore a mapping
        menu_info()             get information about a menu item
        wildmenumode()          check if the wildmode is active
-       getdigraph()            get |digraph|
-       getdigraphlist()        get all |digraph|s
-       setdigraph()            register |digraph|
-       setdigraphlist()        register multiple |digraph|s
  
  Testing:                                  *test-functions*
        assert_equal()          assert that two expressions values are equal
--- 994,1009 ----
        winrestview()           restore saved view of current window
  
  Mappings and Menus:                       *mapping-functions*
+       digraph_get()           get |digraph|
+       digraph_getlist()       get all |digraph|s
+       digraph_set()           register |digraph|
+       digraph_setlist()       register multiple |digraph|s
        hasmapto()              check if a mapping exists
        mapcheck()              check if a matching mapping exists
        maparg()                get rhs of a mapping
        mapset()                restore a mapping
        menu_info()             get information about a menu item
        wildmenumode()          check if the wildmode is active
  
  Testing:                                  *test-functions*
        assert_equal()          assert that two expressions values are equal
*** ../vim-8.2.3225/src/digraph.c       2021-07-20 21:07:32.960058864 +0200
--- src/digraph.c       2021-07-26 21:42:55.108966074 +0200
***************
*** 1781,1787 ****
      else if (p_dg)
      {
        if (backspaced >= 0)
!           c = getdigraph(backspaced, c, FALSE);
        backspaced = -1;
        if ((c == K_BS || c == Ctrl_H) && lastchar >= 0)
            backspaced = lastchar;
--- 1781,1787 ----
      else if (p_dg)
      {
        if (backspaced >= 0)
!           c = digraph_get(backspaced, c, FALSE);
        backspaced = -1;
        if ((c == K_BS || c == Ctrl_H) && lastchar >= 0)
            backspaced = lastchar;
***************
*** 1887,1893 ****
        --no_mapping;
        --allow_keys;
        if (cc != ESC)      // ESC cancels CTRL-K
!           return getdigraph(c, cc, TRUE);
      }
      return NUL;
  }
--- 1887,1893 ----
        --no_mapping;
        --allow_keys;
        if (cc != ESC)      // ESC cancels CTRL-K
!           return digraph_get(c, cc, TRUE);
      }
      return NUL;
  }
***************
*** 1981,1987 ****
   * Allow for both char1-char2 and char2-char1
   */
      int
! getdigraph(int char1, int char2, int meta_char)
  {
      int           retval;
  
--- 1981,1987 ----
   * Allow for both char1-char2 and char2-char1
   */
      int
! digraph_get(int char1, int char2, int meta_char)
  {
      int           retval;
  
***************
*** 2143,2149 ****
  }
  
      static void
! getdigraphlist_appendpair(digr_T *dp, list_T *l)
  {
      char_u    buf[30];
      char_u    *p;
--- 2143,2149 ----
  }
  
      static void
! digraph_getlist_appendpair(digr_T *dp, list_T *l)
  {
      char_u    buf[30];
      char_u    *p;
***************
*** 2194,2200 ****
  }
  
      void
! getdigraphlist_common(int list_all, typval_T *rettv)
  {
      int               i;
      digr_T    *dp;
--- 2194,2200 ----
  }
  
      void
! digraph_getlist_common(int list_all, typval_T *rettv)
  {
      int               i;
      digr_T    *dp;
***************
*** 2215,2225 ****
            tmp.result = getexactdigraph(tmp.char1, tmp.char2, FALSE);
            if (tmp.result != 0 && tmp.result != tmp.char2
                                          && (has_mbyte || tmp.result <= 255))
!               getdigraphlist_appendpair(&tmp, rettv->vval.v_list);
  #else
            if (getexactdigraph(dp->char1, dp->char2, FALSE) == dp->result
                    && (has_mbyte || dp->result <= 255))
!               getdigraphlist_appendpair(dp, rettv->vval.v_list);
  #endif
            ++dp;
        }
--- 2215,2225 ----
            tmp.result = getexactdigraph(tmp.char1, tmp.char2, FALSE);
            if (tmp.result != 0 && tmp.result != tmp.char2
                                          && (has_mbyte || tmp.result <= 255))
!               digraph_getlist_appendpair(&tmp, rettv->vval.v_list);
  #else
            if (getexactdigraph(dp->char1, dp->char2, FALSE) == dp->result
                    && (has_mbyte || dp->result <= 255))
!               digraph_getlist_appendpair(dp, rettv->vval.v_list);
  #endif
            ++dp;
        }
***************
*** 2228,2234 ****
      dp = (digr_T *)user_digraphs.ga_data;
      for (i = 0; i < user_digraphs.ga_len && !got_int; ++i)
      {
!       getdigraphlist_appendpair(dp, rettv->vval.v_list);
        ++dp;
      }
  }
--- 2228,2234 ----
      dp = (digr_T *)user_digraphs.ga_data;
      for (i = 0; i < user_digraphs.ga_len && !got_int; ++i)
      {
!       digraph_getlist_appendpair(dp, rettv->vval.v_list);
        ++dp;
      }
  }
***************
*** 2363,2369 ****
  }
  
      static int
! setdigraph_common(typval_T *argchars, typval_T *argdigraph)
  {
      int               char1, char2;
      char_u    *digraph;
--- 2363,2369 ----
  }
  
      static int
! digraph_set_common(typval_T *argchars, typval_T *argdigraph)
  {
      int               char1, char2;
      char_u    *digraph;
***************
*** 2394,2403 ****
  
  #if defined(FEAT_EVAL) || defined(PROTO)
  /*
!  * "getdigraph()" function
   */
      void
! f_getdigraph(typval_T *argvars, typval_T *rettv)
  {
  # ifdef FEAT_DIGRAPHS
      int               code;
--- 2394,2403 ----
  
  #if defined(FEAT_EVAL) || defined(PROTO)
  /*
!  * "digraph_get()" function
   */
      void
! f_digraph_get(typval_T *argvars, typval_T *rettv)
  {
  # ifdef FEAT_DIGRAPHS
      int               code;
***************
*** 2415,2421 ****
        semsg(_(e_digraph_must_be_just_two_characters_str), digraphs);
        return;
      }
!     code = getdigraph(digraphs[0], digraphs[1], FALSE);
  
      if (has_mbyte)
        buf[(*mb_char2bytes)(code, buf)] = NUL;
--- 2415,2421 ----
        semsg(_(e_digraph_must_be_just_two_characters_str), digraphs);
        return;
      }
!     code = digraph_get(digraphs[0], digraphs[1], FALSE);
  
      if (has_mbyte)
        buf[(*mb_char2bytes)(code, buf)] = NUL;
***************
*** 2431,2440 ****
  }
  
  /*
!  * "getdigraphlist()" function
   */
      void
! f_getdigraphlist(typval_T *argvars, typval_T *rettv)
  {
  # ifdef FEAT_DIGRAPHS
      int     flag_list_all;
--- 2431,2440 ----
  }
  
  /*
!  * "digraph_getlist()" function
   */
      void
! f_digraph_getlist(typval_T *argvars, typval_T *rettv)
  {
  # ifdef FEAT_DIGRAPHS
      int     flag_list_all;
***************
*** 2450,2472 ****
        flag_list_all = flag ? TRUE : FALSE;
      }
  
!     getdigraphlist_common(flag_list_all, rettv);
  # else
      emsg(_(e_no_digraphs_version));
  # endif
  }
  
  /*
!  * "setdigraph()" function
   */
      void
! f_setdigraph(typval_T *argvars, typval_T *rettv)
  {
  # ifdef FEAT_DIGRAPHS
      rettv->v_type = VAR_BOOL;
      rettv->vval.v_number = VVAL_FALSE;
  
!     if (!setdigraph_common(&argvars[0], &argvars[1]))
        return;
  
      rettv->vval.v_number = VVAL_TRUE;
--- 2450,2472 ----
        flag_list_all = flag ? TRUE : FALSE;
      }
  
!     digraph_getlist_common(flag_list_all, rettv);
  # else
      emsg(_(e_no_digraphs_version));
  # endif
  }
  
  /*
!  * "digraph_set()" function
   */
      void
! f_digraph_set(typval_T *argvars, typval_T *rettv)
  {
  # ifdef FEAT_DIGRAPHS
      rettv->v_type = VAR_BOOL;
      rettv->vval.v_number = VVAL_FALSE;
  
!     if (!digraph_set_common(&argvars[0], &argvars[1]))
        return;
  
      rettv->vval.v_number = VVAL_TRUE;
***************
*** 2476,2485 ****
  }
  
  /*
!  * "setdigraphlist()" function
   */
      void
! f_setdigraphlist(typval_T * argvars, typval_T *rettv)
  {
  # ifdef FEAT_DIGRAPHS
      list_T    *pl, *l;
--- 2476,2485 ----
  }
  
  /*
!  * "digraph_setlist()" function
   */
      void
! f_digraph_setlist(typval_T * argvars, typval_T *rettv)
  {
  # ifdef FEAT_DIGRAPHS
      list_T    *pl, *l;
***************
*** 2490,2496 ****
  
      if (argvars[0].v_type != VAR_LIST)
      {
!       emsg(_(e_setdigraphlist_argument_must_be_list_of_lists_with_two_items));
        return;
      }
  
--- 2490,2496 ----
  
      if (argvars[0].v_type != VAR_LIST)
      {
!       
emsg(_(e_digraph_setlist_argument_must_be_list_of_lists_with_two_items));
        return;
      }
  
***************
*** 2506,2523 ****
      {
        if (pli->li_tv.v_type != VAR_LIST)
        {
!           
emsg(_(e_setdigraphlist_argument_must_be_list_of_lists_with_two_items));
            return;
        }
  
        l = pli->li_tv.vval.v_list;
        if (l == NULL || l->lv_len != 2)
        {
!           
emsg(_(e_setdigraphlist_argument_must_be_list_of_lists_with_two_items));
            return;
        }
  
!       if (!setdigraph_common(&l->lv_first->li_tv,
                                                 &l->lv_first->li_next->li_tv))
            return;
      }
--- 2506,2523 ----
      {
        if (pli->li_tv.v_type != VAR_LIST)
        {
!           
emsg(_(e_digraph_setlist_argument_must_be_list_of_lists_with_two_items));
            return;
        }
  
        l = pli->li_tv.vval.v_list;
        if (l == NULL || l->lv_len != 2)
        {
!           
emsg(_(e_digraph_setlist_argument_must_be_list_of_lists_with_two_items));
            return;
        }
  
!       if (!digraph_set_common(&l->lv_first->li_tv,
                                                 &l->lv_first->li_next->li_tv))
            return;
      }
*** ../vim-8.2.3225/src/edit.c  2021-07-21 22:20:30.062401737 +0200
--- src/edit.c  2021-07-26 21:42:55.108966074 +0200
***************
*** 5219,5225 ****
        if (cc != ESC)
        {
            AppendToRedobuff((char_u *)CTRL_V_STR);
!           c = getdigraph(c, cc, TRUE);
  #ifdef FEAT_CMDL_INFO
            clear_showcmd();
  #endif
--- 5219,5225 ----
        if (cc != ESC)
        {
            AppendToRedobuff((char_u *)CTRL_V_STR);
!           c = digraph_get(c, cc, TRUE);
  #ifdef FEAT_CMDL_INFO
            clear_showcmd();
  #endif
*** ../vim-8.2.3225/src/errors.h        2021-07-23 20:37:52.018322443 +0200
--- src/errors.h        2021-07-26 21:42:55.108966074 +0200
***************
*** 610,617 ****
        INIT(= N_("E1214: Digraph must be just two characters: %s"));
  EXTERN char e_digraph_argument_must_be_one_character_str[]
        INIT(= N_("E1215: Digraph must be one character: %s"));
! EXTERN char e_setdigraphlist_argument_must_be_list_of_lists_with_two_items[]
!       INIT(= N_("E1216: setdigraphlist() argument must be a list of lists 
with two items"));
  #endif
  EXTERN char e_chan_or_job_required_for_argument_nr[]
        INIT(= N_("E1217: Channel or Job required for argument %d"));
--- 610,617 ----
        INIT(= N_("E1214: Digraph must be just two characters: %s"));
  EXTERN char e_digraph_argument_must_be_one_character_str[]
        INIT(= N_("E1215: Digraph must be one character: %s"));
! EXTERN char e_digraph_setlist_argument_must_be_list_of_lists_with_two_items[]
!       INIT(= N_("E1216: digraph_setlist() argument must be a list of lists 
with two items"));
  #endif
  EXTERN char e_chan_or_job_required_for_argument_nr[]
        INIT(= N_("E1217: Channel or Job required for argument %d"));
*** ../vim-8.2.3225/src/evalfunc.c      2021-07-25 15:57:29.218219920 +0200
--- src/evalfunc.c      2021-07-26 21:42:55.108966074 +0200
***************
*** 1292,1297 ****
--- 1292,1305 ----
                        ret_number,         f_diff_filler},
      {"diff_hlID",     2, 2, FEARG_1,      arg2_lnum_number,
                        ret_number,         f_diff_hlID},
+     {"digraph_get",   1, 1, FEARG_1,      arg1_string,
+                       ret_string,         f_digraph_get},
+     {"digraph_getlist",0, 1, FEARG_1,     arg1_number,
+                       ret_list_string_items, f_digraph_getlist},
+     {"digraph_set",   2, 2, FEARG_1,      arg2_string_number,
+                       ret_bool,       f_digraph_set},
+     {"digraph_setlist",1, 1, FEARG_1,     arg1_list_string,
+                       ret_bool,           f_digraph_setlist},
      {"echoraw",               1, 1, FEARG_1,      arg1_string,
                        ret_void,           f_echoraw},
      {"empty",         1, 1, FEARG_1,      NULL,
***************
*** 1406,1415 ****
                        ret_list_number,    f_getcursorcharpos},
      {"getcwd",                0, 2, FEARG_1,      arg2_number,
                        ret_string,         f_getcwd},
-     {"getdigraph",     1, 1, FEARG_1,      arg1_string,
-                         ret_string,         f_getdigraph},
-     {"getdigraphlist",  0, 1, FEARG_1,      arg1_number,
-                         ret_list_string_items, f_getdigraphlist},
      {"getenv",                1, 1, FEARG_1,      arg1_string,
                        ret_any,            f_getenv},
      {"getfontname",   0, 1, 0,            arg1_string,
--- 1414,1419 ----
***************
*** 1870,1879 ****
                        ret_number_bool,    f_setcmdpos},
      {"setcursorcharpos", 1, 3, FEARG_1,           arg13_cursor,
                        ret_number_bool,    f_setcursorcharpos},
-     {"setdigraph",    2, 2, FEARG_1,      arg2_string_number,
-                       ret_bool,           f_setdigraph},
-     {"setdigraphlist",        1, 1, FEARG_1,      arg1_list_string,
-                       ret_bool,           f_setdigraphlist},
      {"setenv",                2, 2, FEARG_2,      arg2_string_any,
                        ret_void,           f_setenv},
      {"setfperm",      2, 2, FEARG_1,      arg2_string,
--- 1874,1879 ----
*** ../vim-8.2.3225/src/proto/digraph.pro       2021-07-19 20:07:16.701295618 
+0200
--- src/proto/digraph.pro       2021-07-26 21:42:55.108966074 +0200
***************
*** 2,16 ****
  int do_digraph(int c);
  char_u *get_digraph_for_char(int val_arg);
  int get_digraph(int cmdline);
! int getdigraph(int char1, int char2, int meta_char);
  int check_digraph_chars_valid(int char1, int char2);
  void putdigraph(char_u *str);
  void listdigraphs(int use_headers);
! void getdigraphlist_common(int list_all, typval_T *rettv);
! void f_getdigraph(typval_T *argvars, typval_T *rettv);
! void f_getdigraphlist(typval_T *argvars, typval_T *rettv);
! void f_setdigraph(typval_T *argvars, typval_T *rettv);
! void f_setdigraphlist(typval_T *argvars, typval_T *rettv);
  char *keymap_init(void);
  void ex_loadkeymap(exarg_T *eap);
  void keymap_clear(garray_T *kmap);
--- 2,16 ----
  int do_digraph(int c);
  char_u *get_digraph_for_char(int val_arg);
  int get_digraph(int cmdline);
! int digraph_get(int char1, int char2, int meta_char);
  int check_digraph_chars_valid(int char1, int char2);
  void putdigraph(char_u *str);
  void listdigraphs(int use_headers);
! void digraph_getlist_common(int list_all, typval_T *rettv);
! void f_digraph_get(typval_T *argvars, typval_T *rettv);
! void f_digraph_getlist(typval_T *argvars, typval_T *rettv);
! void f_digraph_set(typval_T *argvars, typval_T *rettv);
! void f_digraph_setlist(typval_T *argvars, typval_T *rettv);
  char *keymap_init(void);
  void ex_loadkeymap(exarg_T *eap);
  void keymap_clear(garray_T *kmap);
*** ../vim-8.2.3225/src/testdir/test_digraph.vim        2021-07-19 
20:07:16.701295618 +0200
--- src/testdir/test_digraph.vim        2021-07-26 21:42:55.108966074 +0200
***************
*** 515,595 ****
    call StopVimInTerminal(buf)
  endfunc
  
! func Test_setdigraph_function()
    new
!   call setdigraph('aa', 'あ')
    call Put_Dig('aa')
    call assert_equal('あ', getline('$'))
!   call setdigraph(' i', 'い')
    call Put_Dig(' i')
    call assert_equal('い', getline('$'))
!   call setdigraph('  ', 'う')
    call Put_Dig('  ')
    call assert_equal('う', getline('$'))
  
!   eval 'aa'->setdigraph('え')
    call Put_Dig('aa')
    call assert_equal('え', getline('$'))
  
!   call assert_fails('call setdigraph("aaa", "あ")', 'E1214: Digraph must be 
just two characters: aaa')
!   call assert_fails('call setdigraph("b", "あ")', 'E1214: Digraph must be just 
two characters: b')
!   call assert_fails('call setdigraph("あ", "あ")', 'E1214: Digraph must be just 
two characters: あ')
!   call assert_fails('call setdigraph("aa", "ああ")', 'E1215: Digraph must be 
one character: ああ')
!   call assert_fails('call setdigraph("aa", "か" .. nr2char(0x3099))',  'E1215: 
Digraph must be one character: か' .. nr2char(0x3099))
    bwipe!
  endfunc
  
! func Test_getdigraph_function()
    " Built-in digraphs
!   call assert_equal('∞', getdigraph('00'))
  
    " User-defined digraphs
!   call setdigraph('aa', 'あ')
!   call setdigraph(' i', 'い')
!   call setdigraph('  ', 'う')
!   call assert_equal('あ', getdigraph('aa'))
!   call assert_equal('あ', 'aa'->getdigraph())
!   call assert_equal('い', getdigraph(' i'))
!   call assert_equal('う', getdigraph('  '))
!   call assert_fails('call getdigraph("aaa")', 'E1214: Digraph must be just 
two characters: aaa')
!   call assert_fails('call getdigraph("b")', 'E1214: Digraph must be just two 
characters: b')
  endfunc
  
! func Test_getdigraph_function_encode()
    CheckFeature iconv
    let testcases = {
          \'00': '∞',
          \'aa': 'あ',
          \}
    for [key, ch] in items(testcases)
!     call setdigraph(key, ch)
      set encoding=japan
!     call assert_equal(iconv(ch, 'utf-8', 'japan'), getdigraph(key))
      set encoding&
    endfor
  endfunc
  
! func Test_setdigraphlist_function()
!   call setdigraphlist([['aa', 'き'], ['bb', 'く']])
!   call assert_equal('き', getdigraph('aa'))
!   call assert_equal('く', getdigraph('bb'))
  
!   call assert_fails('call setdigraphlist([[]])', 'E1216:')
!   call assert_fails('call setdigraphlist([["aa", "b", "cc"]])', '1216:')
!   call assert_fails('call setdigraphlist([["あ", "あ"]])', 'E1214: Digraph must 
be just two characters: あ')
  endfunc
  
! func Test_getdigraphlist_function()
    " Make sure user-defined digraphs are defined
!   call setdigraphlist([['aa', 'き'], ['bb', 'く']])
  
!   for pair in getdigraphlist(1)
!     call assert_equal(getdigraph(pair[0]), pair[1])
    endfor
  
    " We don't know how many digraphs are registered before, so check the number
    " of digraphs returned.
!   call assert_equal(getdigraphlist()->len(), getdigraphlist(0)->len())
!   call assert_notequal((getdigraphlist()->len()), getdigraphlist(1)->len())
  endfunc
  " vim: shiftwidth=2 sts=2 expandtab
--- 515,595 ----
    call StopVimInTerminal(buf)
  endfunc
  
! func Test_digraph_set_function()
    new
!   call digraph_set('aa', 'あ')
    call Put_Dig('aa')
    call assert_equal('あ', getline('$'))
!   call digraph_set(' i', 'い')
    call Put_Dig(' i')
    call assert_equal('い', getline('$'))
!   call digraph_set('  ', 'う')
    call Put_Dig('  ')
    call assert_equal('う', getline('$'))
  
!   eval 'aa'->digraph_set('え')
    call Put_Dig('aa')
    call assert_equal('え', getline('$'))
  
!   call assert_fails('call digraph_set("aaa", "あ")', 'E1214: Digraph must be 
just two characters: aaa')
!   call assert_fails('call digraph_set("b", "あ")', 'E1214: Digraph must be 
just two characters: b')
!   call assert_fails('call digraph_set("あ", "あ")', 'E1214: Digraph must be 
just two characters: あ')
!   call assert_fails('call digraph_set("aa", "ああ")', 'E1215: Digraph must be 
one character: ああ')
!   call assert_fails('call digraph_set("aa", "か" .. nr2char(0x3099))',  
'E1215: Digraph must be one character: か' .. nr2char(0x3099))
    bwipe!
  endfunc
  
! func Test_digraph_get_function()
    " Built-in digraphs
!   call assert_equal('∞', digraph_get('00'))
  
    " User-defined digraphs
!   call digraph_set('aa', 'あ')
!   call digraph_set(' i', 'い')
!   call digraph_set('  ', 'う')
!   call assert_equal('あ', digraph_get('aa'))
!   call assert_equal('あ', 'aa'->digraph_get())
!   call assert_equal('い', digraph_get(' i'))
!   call assert_equal('う', digraph_get('  '))
!   call assert_fails('call digraph_get("aaa")', 'E1214: Digraph must be just 
two characters: aaa')
!   call assert_fails('call digraph_get("b")', 'E1214: Digraph must be just two 
characters: b')
  endfunc
  
! func Test_digraph_get_function_encode()
    CheckFeature iconv
    let testcases = {
          \'00': '∞',
          \'aa': 'あ',
          \}
    for [key, ch] in items(testcases)
!     call digraph_set(key, ch)
      set encoding=japan
!     call assert_equal(iconv(ch, 'utf-8', 'japan'), digraph_get(key))
      set encoding&
    endfor
  endfunc
  
! func Test_digraph_setlist_function()
!   call digraph_setlist([['aa', 'き'], ['bb', 'く']])
!   call assert_equal('き', digraph_get('aa'))
!   call assert_equal('く', digraph_get('bb'))
  
!   call assert_fails('call digraph_setlist([[]])', 'E1216:')
!   call assert_fails('call digraph_setlist([["aa", "b", "cc"]])', '1216:')
!   call assert_fails('call digraph_setlist([["あ", "あ"]])', 'E1214: Digraph 
must be just two characters: あ')
  endfunc
  
! func Test_digraph_getlist_function()
    " Make sure user-defined digraphs are defined
!   call digraph_setlist([['aa', 'き'], ['bb', 'く']])
  
!   for pair in digraph_getlist(1)
!     call assert_equal(digraph_get(pair[0]), pair[1])
    endfor
  
    " We don't know how many digraphs are registered before, so check the number
    " of digraphs returned.
!   call assert_equal(digraph_getlist()->len(), digraph_getlist(0)->len())
!   call assert_notequal((digraph_getlist()->len()), digraph_getlist(1)->len())
  endfunc
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.3225/src/version.c       2021-07-26 21:11:27.805521168 +0200
--- src/version.c       2021-07-26 21:44:20.768768061 +0200
***************
*** 757,758 ****
--- 757,760 ----
  {   /* Add new patch number below this line */
+ /**/
+     3226,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
243. You unsuccessfully try to download a pizza from www.dominos.com.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202107261954.16QJsYLS1412526%40masaka.moolenaar.net.

Raspunde prin e-mail lui