Advertisement
Guest User

Untitled

a guest
Feb 19th, 2022
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. diff --git a/src/evalvars.c b/src/evalvars.c
  2. index fdc6f454a..2566a1703 100644
  3. --- a/src/evalvars.c
  4. +++ b/src/evalvars.c
  5. @@ -147,6 +147,7 @@ static struct vimvar
  6. {VV_NAME("argv", VAR_LIST), VV_RO},
  7. {VV_NAME("collate", VAR_STRING), VV_RO},
  8. {VV_NAME("disallow_let", VAR_NUMBER), 0}, // TODO: remove
  9. + {VV_NAME("cmd", VAR_STRING), VV_RO},
  10. };
  11.  
  12. // shorthand
  13. diff --git a/src/normal.c b/src/normal.c
  14. index 89eaabccc..8a2bdab43 100644
  15. --- a/src/normal.c
  16. +++ b/src/normal.c
  17. @@ -1809,9 +1809,13 @@ clear_showcmd(void)
  18. # endif
  19. sprintf((char *)showcmd_buf, "%ldx%ld", lines,
  20. (long)(rightcol - leftcol + 1));
  21. + set_vim_var_string(VV_CMD, (char_u*)showcmd_buf, -1);
  22. }
  23. else if (VIsual_mode == 'V' || VIsual.lnum != curwin->w_cursor.lnum)
  24. + {
  25. sprintf((char *)showcmd_buf, "%ld", lines);
  26. + set_vim_var_string(VV_CMD, (char_u*)showcmd_buf, -1);
  27. + }
  28. else
  29. {
  30. char_u *s, *e;
  31. @@ -1843,17 +1847,25 @@ clear_showcmd(void)
  32. s += l;
  33. }
  34. if (bytes == chars)
  35. + {
  36. sprintf((char *)showcmd_buf, "%d", chars);
  37. + set_vim_var_string(VV_CMD, (char_u*)showcmd_buf, -1);
  38. + }
  39. else
  40. + {
  41. sprintf((char *)showcmd_buf, "%d-%d", chars, bytes);
  42. + set_vim_var_string(VV_CMD, (char_u*)showcmd_buf, -1);
  43. + }
  44. }
  45. showcmd_buf[SHOWCMD_COLS] = NUL; // truncate
  46. + set_vim_var_string(VV_CMD, (char_u*)showcmd_buf, -1);
  47. showcmd_visual = TRUE;
  48. }
  49. else
  50. {
  51. showcmd_buf[0] = NUL;
  52. showcmd_visual = FALSE;
  53. + set_vim_var_string(VV_CMD, (char_u*)showcmd_buf, -1);
  54.  
  55. // Don't actually display something if there is nothing to clear.
  56. if (showcmd_is_clear)
  57. @@ -1916,6 +1928,7 @@ add_to_showcmd(int c)
  58. mch_memmove(showcmd_buf, showcmd_buf + overflow,
  59. old_len - overflow + 1);
  60. STRCAT(showcmd_buf, p);
  61. + set_vim_var_string(VV_CMD, (char_u*)showcmd_buf, -1);
  62.  
  63. if (char_avail())
  64. return FALSE;
  65. @@ -1947,6 +1960,8 @@ del_from_showcmd(int len)
  66. if (len > old_len)
  67. len = old_len;
  68. showcmd_buf[old_len - len] = NUL;
  69. + set_vim_var_string(VV_CMD, (char_u*)showcmd_buf, -1);
  70. +
  71.  
  72. if (!char_avail())
  73. display_showcmd();
  74. @@ -1960,7 +1975,11 @@ del_from_showcmd(int len)
  75. push_showcmd(void)
  76. {
  77. if (p_sc)
  78. + {
  79. STRCPY(old_showcmd_buf, showcmd_buf);
  80. + set_vim_var_string(VV_CMD, (char_u*)showcmd_buf, -1);
  81. +
  82. + }
  83. }
  84.  
  85. void
  86. @@ -1970,6 +1989,8 @@ pop_showcmd(void)
  87. return;
  88.  
  89. STRCPY(showcmd_buf, old_showcmd_buf);
  90. + set_vim_var_string(VV_CMD, (char_u*)showcmd_buf, -1);
  91. +
  92.  
  93. display_showcmd();
  94. }
  95. diff --git a/src/vim.h b/src/vim.h
  96. index c43ec83e6..1c576a774 100644
  97. --- a/src/vim.h
  98. +++ b/src/vim.h
  99. @@ -1993,7 +1993,8 @@ typedef int sock_T;
  100. #define VV_ARGV 94
  101. #define VV_COLLATE 95
  102. #define VV_DISALLOW_LET 96 // TODO: remove again
  103. -#define VV_LEN 97 // number of v: vars
  104. +#define VV_CMD 97
  105. +#define VV_LEN 98 // number of v: vars
  106.  
  107. // used for v_number in VAR_BOOL and VAR_SPECIAL
  108. #define VVAL_FALSE 0L // VAR_BOOL
  109.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement