mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-03 17:24:29 +00:00 
			
		
		
		
	Merge pull request #9289 from bfredl/nsclear
API: rename nvim_buf_clear_highlight to nvim_buf_clear_namespace
This commit is contained in:
		@@ -913,7 +913,7 @@ ArrayOf(Integer, 2) nvim_buf_get_mark(Buffer buffer, String name, Error *err)
 | 
			
		||||
/// create a namespace, use |nvim_create_namespace| which returns a namespace
 | 
			
		||||
/// id. Pass it in to this function as `ns_id` to add highlights to the
 | 
			
		||||
/// namespace. All highlights in the same namespace can then be cleared with
 | 
			
		||||
/// single call to |nvim_buf_clear_highlight|. If the highlight never will be
 | 
			
		||||
/// single call to |nvim_buf_clear_namespace|. If the highlight never will be
 | 
			
		||||
/// deleted by an API call, pass `ns_id = -1`.
 | 
			
		||||
///
 | 
			
		||||
/// As a shorthand, `ns_id = 0` can be used to create a new namespace for the
 | 
			
		||||
@@ -967,23 +967,23 @@ Integer nvim_buf_add_highlight(Buffer buffer,
 | 
			
		||||
  return ns_id;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Clears highlights and virtual text from a given source id and range of lines
 | 
			
		||||
/// Clears namespaced objects, highlights and virtual text, from a line range
 | 
			
		||||
///
 | 
			
		||||
/// To clear a source group in the entire buffer, pass in 0 and -1 to
 | 
			
		||||
/// To clear the namespace in the entire buffer, pass in 0 and -1 to
 | 
			
		||||
/// line_start and line_end respectively.
 | 
			
		||||
///
 | 
			
		||||
/// @param buffer     Buffer handle
 | 
			
		||||
/// @param ns_id      Namespace to clear, or -1 to clear all.
 | 
			
		||||
/// @param ns_id      Namespace to clear, or -1 to clear all namespaces.
 | 
			
		||||
/// @param line_start Start of range of lines to clear
 | 
			
		||||
/// @param line_end   End of range of lines to clear (exclusive) or -1 to clear
 | 
			
		||||
///                   to end of file.
 | 
			
		||||
///                   to end of buffer.
 | 
			
		||||
/// @param[out] err   Error details, if any
 | 
			
		||||
void nvim_buf_clear_highlight(Buffer buffer,
 | 
			
		||||
void nvim_buf_clear_namespace(Buffer buffer,
 | 
			
		||||
                              Integer ns_id,
 | 
			
		||||
                              Integer line_start,
 | 
			
		||||
                              Integer line_end,
 | 
			
		||||
                              Error *err)
 | 
			
		||||
  FUNC_API_SINCE(1)
 | 
			
		||||
  FUNC_API_SINCE(5)
 | 
			
		||||
{
 | 
			
		||||
  buf_T *buf = find_buffer_by_handle(buffer, err);
 | 
			
		||||
  if (!buf) {
 | 
			
		||||
@@ -1001,6 +1001,26 @@ void nvim_buf_clear_highlight(Buffer buffer,
 | 
			
		||||
  bufhl_clear_line_range(buf, (int)ns_id, (int)line_start+1, (int)line_end);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Clears highlights and virtual text from namespace and range of lines
 | 
			
		||||
///
 | 
			
		||||
/// @deprecated use |nvim_buf_clear_namespace|.
 | 
			
		||||
///
 | 
			
		||||
/// @param buffer     Buffer handle
 | 
			
		||||
/// @param ns_id      Namespace to clear, or -1 to clear all.
 | 
			
		||||
/// @param line_start Start of range of lines to clear
 | 
			
		||||
/// @param line_end   End of range of lines to clear (exclusive) or -1 to clear
 | 
			
		||||
///                   to end of file.
 | 
			
		||||
/// @param[out] err   Error details, if any
 | 
			
		||||
void nvim_buf_clear_highlight(Buffer buffer,
 | 
			
		||||
                              Integer ns_id,
 | 
			
		||||
                              Integer line_start,
 | 
			
		||||
                              Integer line_end,
 | 
			
		||||
                              Error *err)
 | 
			
		||||
  FUNC_API_SINCE(1)
 | 
			
		||||
{
 | 
			
		||||
  nvim_buf_clear_namespace(buffer, ns_id, line_start, line_end, err);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/// Set the virtual text (annotation) for a buffer line.
 | 
			
		||||
///
 | 
			
		||||
@@ -1012,10 +1032,10 @@ void nvim_buf_clear_highlight(Buffer buffer,
 | 
			
		||||
///
 | 
			
		||||
/// Namespaces are used to support batch deletion/updating of virtual text.
 | 
			
		||||
/// To create a namespace, use |nvim_create_namespace|. Virtual text is
 | 
			
		||||
/// cleared using |nvim_buf_clear_highlight|. The same `ns_id` can be used for
 | 
			
		||||
/// cleared using |nvim_buf_clear_namespace|. The same `ns_id` can be used for
 | 
			
		||||
/// both virtual text and highlights added by |nvim_buf_add_highlight|, both
 | 
			
		||||
/// can then be cleared with a single call to |nvim_buf_clear_highlight|. If the
 | 
			
		||||
/// virtual text never will be cleared by an API call, pass `src_id = -1`.
 | 
			
		||||
/// can then be cleared with a single call to |nvim_buf_clear_namespace|. If the
 | 
			
		||||
/// virtual text never will be cleared by an API call, pass `ns_id = -1`.
 | 
			
		||||
///
 | 
			
		||||
/// As a shorthand, `ns_id = 0` can be used to create a new namespace for the
 | 
			
		||||
/// virtual text, the allocated id is then returned.
 | 
			
		||||
 
 | 
			
		||||
@@ -37,8 +37,8 @@ describe('Buffer highlighting', function()
 | 
			
		||||
    screen:detach()
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
  local add_hl = curbufmeths.add_highlight
 | 
			
		||||
  local clear_hl = curbufmeths.clear_highlight
 | 
			
		||||
  local add_highlight = curbufmeths.add_highlight
 | 
			
		||||
  local clear_namespace = curbufmeths.clear_namespace
 | 
			
		||||
 | 
			
		||||
  it('works', function()
 | 
			
		||||
    insert([[
 | 
			
		||||
@@ -57,8 +57,8 @@ describe('Buffer highlighting', function()
 | 
			
		||||
                                              |
 | 
			
		||||
    ]])
 | 
			
		||||
 | 
			
		||||
    add_hl(-1, "String", 0 , 10, 14)
 | 
			
		||||
    add_hl(-1, "Statement", 1 , 5, -1)
 | 
			
		||||
    add_highlight(-1, "String", 0 , 10, 14)
 | 
			
		||||
    add_highlight(-1, "Statement", 1 , 5, -1)
 | 
			
		||||
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
      these are {2:some} lines                    |
 | 
			
		||||
@@ -83,7 +83,7 @@ describe('Buffer highlighting', function()
 | 
			
		||||
                                              |
 | 
			
		||||
    ]])
 | 
			
		||||
 | 
			
		||||
    clear_hl(-1, 0, -1)
 | 
			
		||||
    clear_namespace(-1, 0, -1)
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
      these are some lines                    |
 | 
			
		||||
      ^                                        |
 | 
			
		||||
@@ -96,7 +96,7 @@ describe('Buffer highlighting', function()
 | 
			
		||||
    ]])
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
  describe('support adding multiple sources', function()
 | 
			
		||||
  describe('support using multiple namespaces', function()
 | 
			
		||||
    local id1, id2
 | 
			
		||||
    before_each(function()
 | 
			
		||||
      insert([[
 | 
			
		||||
@@ -106,21 +106,21 @@ describe('Buffer highlighting', function()
 | 
			
		||||
        from different sources]])
 | 
			
		||||
 | 
			
		||||
      command("hi ImportantWord gui=bold cterm=bold")
 | 
			
		||||
      id1 = add_hl(0, "ImportantWord", 0, 2, 8)
 | 
			
		||||
      add_hl(id1, "ImportantWord", 1, 12, -1)
 | 
			
		||||
      add_hl(id1, "ImportantWord", 2, 0, 9)
 | 
			
		||||
      add_hl(id1, "ImportantWord", 3, 5, 14)
 | 
			
		||||
      id1 = add_highlight(0, "ImportantWord", 0, 2, 8)
 | 
			
		||||
      add_highlight(id1, "ImportantWord", 1, 12, -1)
 | 
			
		||||
      add_highlight(id1, "ImportantWord", 2, 0, 9)
 | 
			
		||||
      add_highlight(id1, "ImportantWord", 3, 5, 14)
 | 
			
		||||
 | 
			
		||||
      -- add_highlight can be called like this to get a new source
 | 
			
		||||
      -- without adding any highlight
 | 
			
		||||
      id2 = add_hl(0, "", 0, 0, 0)
 | 
			
		||||
      id2 = add_highlight(0, "", 0, 0, 0)
 | 
			
		||||
      neq(id1, id2)
 | 
			
		||||
 | 
			
		||||
      add_hl(id2, "Special", 0, 2, 8)
 | 
			
		||||
      add_hl(id2, "Identifier", 1, 3, 8)
 | 
			
		||||
      add_hl(id2, "Special", 1, 14, 20)
 | 
			
		||||
      add_hl(id2, "Underlined", 2, 6, 12)
 | 
			
		||||
      add_hl(id2, "Underlined", 3, 0, 9)
 | 
			
		||||
      add_highlight(id2, "Special", 0, 2, 8)
 | 
			
		||||
      add_highlight(id2, "Identifier", 1, 3, 8)
 | 
			
		||||
      add_highlight(id2, "Special", 1, 14, 20)
 | 
			
		||||
      add_highlight(id2, "Underlined", 2, 6, 12)
 | 
			
		||||
      add_highlight(id2, "Underlined", 3, 0, 9)
 | 
			
		||||
 | 
			
		||||
      screen:expect([[
 | 
			
		||||
        a {5:longer} example                        |
 | 
			
		||||
@@ -135,7 +135,21 @@ describe('Buffer highlighting', function()
 | 
			
		||||
    end)
 | 
			
		||||
 | 
			
		||||
    it('and clearing the first added', function()
 | 
			
		||||
      clear_hl(id1, 0, -1)
 | 
			
		||||
      clear_namespace(id1, 0, -1)
 | 
			
		||||
      screen:expect([[
 | 
			
		||||
        a {4:longer} example                        |
 | 
			
		||||
        in {6:order} to de{4:monstr}ate                 |
 | 
			
		||||
        combin{9:ing hi}ghlights                    |
 | 
			
		||||
        {9:from diff}erent source^s                  |
 | 
			
		||||
        {1:~                                       }|
 | 
			
		||||
        {1:~                                       }|
 | 
			
		||||
        {1:~                                       }|
 | 
			
		||||
                                                |
 | 
			
		||||
      ]])
 | 
			
		||||
    end)
 | 
			
		||||
 | 
			
		||||
    it('and clearing using deprecated name', function()
 | 
			
		||||
      curbufmeths.clear_highlight(id1, 0, -1)
 | 
			
		||||
      screen:expect([[
 | 
			
		||||
        a {4:longer} example                        |
 | 
			
		||||
        in {6:order} to de{4:monstr}ate                 |
 | 
			
		||||
@@ -149,7 +163,7 @@ describe('Buffer highlighting', function()
 | 
			
		||||
    end)
 | 
			
		||||
 | 
			
		||||
    it('and clearing the second added', function()
 | 
			
		||||
      clear_hl(id2, 0, -1)
 | 
			
		||||
      clear_namespace(id2, 0, -1)
 | 
			
		||||
      screen:expect([[
 | 
			
		||||
        a {7:longer} example                        |
 | 
			
		||||
        in order to {7:demonstrate}                 |
 | 
			
		||||
@@ -163,9 +177,9 @@ describe('Buffer highlighting', function()
 | 
			
		||||
    end)
 | 
			
		||||
 | 
			
		||||
    it('and clearing line ranges', function()
 | 
			
		||||
      clear_hl(-1, 0, 1)
 | 
			
		||||
      clear_hl(id1, 1, 2)
 | 
			
		||||
      clear_hl(id2, 2, -1)
 | 
			
		||||
      clear_namespace(-1, 0, 1)
 | 
			
		||||
      clear_namespace(id1, 1, 2)
 | 
			
		||||
      clear_namespace(id2, 2, -1)
 | 
			
		||||
      screen:expect([[
 | 
			
		||||
        a longer example                        |
 | 
			
		||||
        in {6:order} to de{4:monstr}ate                 |
 | 
			
		||||
@@ -208,9 +222,9 @@ describe('Buffer highlighting', function()
 | 
			
		||||
  it('prioritizes latest added highlight', function()
 | 
			
		||||
    insert([[
 | 
			
		||||
      three overlapping colors]])
 | 
			
		||||
    add_hl(0, "Identifier", 0, 6, 17)
 | 
			
		||||
    add_hl(0, "String", 0, 14, 23)
 | 
			
		||||
    local id = add_hl(0, "Special", 0, 0, 9)
 | 
			
		||||
    add_highlight(0, "Identifier", 0, 6, 17)
 | 
			
		||||
    add_highlight(0, "String", 0, 14, 23)
 | 
			
		||||
    local id = add_highlight(0, "Special", 0, 0, 9)
 | 
			
		||||
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
      {4:three ove}{6:rlapp}{2:ing color}^s                |
 | 
			
		||||
@@ -223,7 +237,7 @@ describe('Buffer highlighting', function()
 | 
			
		||||
                                              |
 | 
			
		||||
    ]])
 | 
			
		||||
 | 
			
		||||
    clear_hl(id, 0, 1)
 | 
			
		||||
    clear_namespace(id, 0, 1)
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
      three {6:overlapp}{2:ing color}^s                |
 | 
			
		||||
      {1:~                                       }|
 | 
			
		||||
@@ -239,8 +253,8 @@ describe('Buffer highlighting', function()
 | 
			
		||||
  it('works with multibyte text', function()
 | 
			
		||||
    insert([[
 | 
			
		||||
      Ta båten över sjön!]])
 | 
			
		||||
    add_hl(-1, "Identifier", 0, 3, 9)
 | 
			
		||||
    add_hl(-1, "String", 0, 16, 21)
 | 
			
		||||
    add_highlight(-1, "Identifier", 0, 3, 9)
 | 
			
		||||
    add_highlight(-1, "String", 0, 16, 21)
 | 
			
		||||
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
      Ta {6:båten} över {2:sjön}^!                     |
 | 
			
		||||
@@ -257,7 +271,7 @@ describe('Buffer highlighting', function()
 | 
			
		||||
  it('works with new syntax groups', function()
 | 
			
		||||
    insert([[
 | 
			
		||||
      fancy code in a new fancy language]])
 | 
			
		||||
    add_hl(-1, "FancyLangItem", 0, 0, 5)
 | 
			
		||||
    add_highlight(-1, "FancyLangItem", 0, 0, 5)
 | 
			
		||||
    screen:expect([[
 | 
			
		||||
      fancy code in a new fancy languag^e      |
 | 
			
		||||
      {1:~                                       }|
 | 
			
		||||
@@ -321,7 +335,7 @@ describe('Buffer highlighting', function()
 | 
			
		||||
                                                |
 | 
			
		||||
      ]])
 | 
			
		||||
 | 
			
		||||
      clear_hl(id1, 0, -1)
 | 
			
		||||
      clear_namespace(id1, 0, -1)
 | 
			
		||||
      screen:expect([[
 | 
			
		||||
        ^1 + 2                                   |
 | 
			
		||||
        3 +                                     |
 | 
			
		||||
@@ -449,7 +463,7 @@ describe('Buffer highlighting', function()
 | 
			
		||||
                                                |
 | 
			
		||||
      ]])
 | 
			
		||||
 | 
			
		||||
      clear_hl(-1, 0, -1)
 | 
			
		||||
      clear_namespace(-1, 0, -1)
 | 
			
		||||
      screen:expect([[
 | 
			
		||||
        ^1 + 2{1:$}                                  |
 | 
			
		||||
        3 +{1:$}                                    |
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user