mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	Merge pull request #10171 from blueyed/vim-8.1.1318
vim-patch:8.1.1318: code for text changes is in a "misc" file
This commit is contained in:
		@@ -15,6 +15,7 @@
 | 
			
		||||
#include "nvim/lua/executor.h"
 | 
			
		||||
#include "nvim/vim.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/getchar.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,7 @@
 | 
			
		||||
#include "nvim/channel.h"
 | 
			
		||||
#include "nvim/vim.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/diff.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1798
									
								
								src/nvim/change.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1798
									
								
								src/nvim/change.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11
									
								
								src/nvim/change.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/nvim/change.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
#ifndef NVIM_CHANGE_H
 | 
			
		||||
#define NVIM_CHANGE_H
 | 
			
		||||
 | 
			
		||||
#include "nvim/buffer_defs.h"  // for buf_T
 | 
			
		||||
#include "nvim/pos.h"  // for linenr_T
 | 
			
		||||
 | 
			
		||||
#ifdef INCLUDE_GENERATED_DECLARATIONS
 | 
			
		||||
# include "change.h.generated.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif  // NVIM_CHANGE_H
 | 
			
		||||
@@ -5,6 +5,7 @@
 | 
			
		||||
#include <inttypes.h>
 | 
			
		||||
 | 
			
		||||
#include "nvim/assert.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/fold.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@
 | 
			
		||||
#include "nvim/ascii.h"
 | 
			
		||||
#include "nvim/diff.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/eval.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,7 @@
 | 
			
		||||
#include "nvim/ascii.h"
 | 
			
		||||
#include "nvim/edit.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/digraph.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,7 @@
 | 
			
		||||
#endif
 | 
			
		||||
#include "nvim/eval.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/channel.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/context.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -20,6 +20,7 @@
 | 
			
		||||
#include "nvim/ascii.h"
 | 
			
		||||
#include "nvim/ex_cmds.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/diff.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@
 | 
			
		||||
#endif
 | 
			
		||||
#include "nvim/ex_cmds2.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/eval.h"
 | 
			
		||||
#include "nvim/ex_cmds.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -16,6 +16,7 @@
 | 
			
		||||
#include "nvim/ascii.h"
 | 
			
		||||
#include "nvim/ex_docmd.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/diff.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,7 @@
 | 
			
		||||
#include "nvim/ascii.h"
 | 
			
		||||
#include "nvim/fileio.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/diff.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@
 | 
			
		||||
#include "nvim/vim.h"
 | 
			
		||||
#include "nvim/ascii.h"
 | 
			
		||||
#include "nvim/fold.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/diff.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@
 | 
			
		||||
 | 
			
		||||
#include "nvim/ascii.h"
 | 
			
		||||
#include "nvim/assert.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/indent.h"
 | 
			
		||||
#include "nvim/eval.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
@@ -316,109 +317,6 @@ int set_indent(int size, int flags)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Copy the indent from ptr to the current line (and fill to size).
 | 
			
		||||
// Leaves the cursor on the first non-blank in the line.
 | 
			
		||||
// @return true if the line was changed.
 | 
			
		||||
int copy_indent(int size, char_u *src)
 | 
			
		||||
{
 | 
			
		||||
  char_u *p = NULL;
 | 
			
		||||
  char_u *line = NULL;
 | 
			
		||||
  char_u *s;
 | 
			
		||||
  int todo;
 | 
			
		||||
  int ind_len;
 | 
			
		||||
  int line_len = 0;
 | 
			
		||||
  int tab_pad;
 | 
			
		||||
  int ind_done;
 | 
			
		||||
  int round;
 | 
			
		||||
 | 
			
		||||
  // Round 1: compute the number of characters needed for the indent
 | 
			
		||||
  // Round 2: copy the characters.
 | 
			
		||||
  for (round = 1; round <= 2; ++round) {
 | 
			
		||||
    todo = size;
 | 
			
		||||
    ind_len = 0;
 | 
			
		||||
    ind_done = 0;
 | 
			
		||||
    s = src;
 | 
			
		||||
 | 
			
		||||
    // Count/copy the usable portion of the source line.
 | 
			
		||||
    while (todo > 0 && ascii_iswhite(*s)) {
 | 
			
		||||
      if (*s == TAB) {
 | 
			
		||||
        tab_pad = (int)curbuf->b_p_ts
 | 
			
		||||
                  - (ind_done % (int)curbuf->b_p_ts);
 | 
			
		||||
 | 
			
		||||
        // Stop if this tab will overshoot the target.
 | 
			
		||||
        if (todo < tab_pad) {
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
        todo -= tab_pad;
 | 
			
		||||
        ind_done += tab_pad;
 | 
			
		||||
      } else {
 | 
			
		||||
        todo--;
 | 
			
		||||
        ind_done++;
 | 
			
		||||
      }
 | 
			
		||||
      ind_len++;
 | 
			
		||||
 | 
			
		||||
      if (p != NULL) {
 | 
			
		||||
        *p++ = *s;
 | 
			
		||||
      }
 | 
			
		||||
      s++;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Fill to next tabstop with a tab, if possible.
 | 
			
		||||
    tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts);
 | 
			
		||||
 | 
			
		||||
    if ((todo >= tab_pad) && !curbuf->b_p_et) {
 | 
			
		||||
      todo -= tab_pad;
 | 
			
		||||
      ind_len++;
 | 
			
		||||
 | 
			
		||||
      if (p != NULL) {
 | 
			
		||||
        *p++ = TAB;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Add tabs required for indent.
 | 
			
		||||
    while (todo >= (int)curbuf->b_p_ts && !curbuf->b_p_et) {
 | 
			
		||||
      todo -= (int)curbuf->b_p_ts;
 | 
			
		||||
      ind_len++;
 | 
			
		||||
 | 
			
		||||
      if (p != NULL) {
 | 
			
		||||
        *p++ = TAB;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Count/add spaces required for indent.
 | 
			
		||||
    while (todo > 0) {
 | 
			
		||||
      todo--;
 | 
			
		||||
      ind_len++;
 | 
			
		||||
 | 
			
		||||
      if (p != NULL) {
 | 
			
		||||
        *p++ = ' ';
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (p == NULL) {
 | 
			
		||||
      // Allocate memory for the result: the copied indent, new indent
 | 
			
		||||
      // and the rest of the line.
 | 
			
		||||
      line_len = (int)STRLEN(get_cursor_line_ptr()) + 1;
 | 
			
		||||
      assert(ind_len + line_len >= 0);
 | 
			
		||||
      size_t line_size;
 | 
			
		||||
      STRICT_ADD(ind_len, line_len, &line_size, size_t);
 | 
			
		||||
      line = xmalloc(line_size);
 | 
			
		||||
      p = line;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Append the original line
 | 
			
		||||
  memmove(p, get_cursor_line_ptr(), (size_t)line_len);
 | 
			
		||||
 | 
			
		||||
  // Replace the line
 | 
			
		||||
  ml_replace(curwin->w_cursor.lnum, line, false);
 | 
			
		||||
 | 
			
		||||
  // Put the cursor after the indent.
 | 
			
		||||
  curwin->w_cursor.col = ind_len;
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Return the indent of the current line after a number.  Return -1 if no
 | 
			
		||||
// number was found.  Used for 'n' in 'formatoptions': numbered list.
 | 
			
		||||
// Since a pattern is used it can actually handle more than numbers.
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,7 @@
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/undo.h"
 | 
			
		||||
#include "nvim/ascii.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
 | 
			
		||||
#ifdef WIN32
 | 
			
		||||
#include "nvim/os/os.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -47,6 +47,7 @@
 | 
			
		||||
#include "nvim/vim.h"
 | 
			
		||||
#include "nvim/memline.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/eval.h"
 | 
			
		||||
#include "nvim/getchar.h"
 | 
			
		||||
@@ -1178,7 +1179,7 @@ void ml_recover(void)
 | 
			
		||||
    /* Recovering an empty file results in two lines and the first line is
 | 
			
		||||
     * empty.  Don't set the modified flag then. */
 | 
			
		||||
    if (!(curbuf->b_ml.ml_line_count == 2 && *ml_get(1) == NUL)) {
 | 
			
		||||
      changed_int();
 | 
			
		||||
      changed_internal();
 | 
			
		||||
      buf_inc_changedtick(curbuf);
 | 
			
		||||
    }
 | 
			
		||||
  } else {
 | 
			
		||||
@@ -1188,7 +1189,7 @@ void ml_recover(void)
 | 
			
		||||
      i = STRCMP(p, ml_get(idx + lnum));
 | 
			
		||||
      xfree(p);
 | 
			
		||||
      if (i != 0) {
 | 
			
		||||
        changed_int();
 | 
			
		||||
        changed_internal();
 | 
			
		||||
        buf_inc_changedtick(curbuf);
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1741
									
								
								src/nvim/misc1.c
									
									
									
									
									
								
							
							
						
						
									
										1741
									
								
								src/nvim/misc1.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -18,6 +18,7 @@
 | 
			
		||||
#include "nvim/ascii.h"
 | 
			
		||||
#include "nvim/normal.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/diff.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,7 @@
 | 
			
		||||
#include "nvim/ascii.h"
 | 
			
		||||
#include "nvim/ops.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/assert.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -84,6 +84,7 @@
 | 
			
		||||
#include "nvim/ascii.h"
 | 
			
		||||
#include "nvim/spell.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/charset.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/edit.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -53,6 +53,7 @@
 | 
			
		||||
#include "nvim/macros.h"
 | 
			
		||||
#include "nvim/mbyte.h"
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/ascii.h"
 | 
			
		||||
#include "nvim/getchar.h"
 | 
			
		||||
#include "nvim/ui.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -85,6 +85,7 @@
 | 
			
		||||
 | 
			
		||||
#include "nvim/buffer.h"
 | 
			
		||||
#include "nvim/ascii.h"
 | 
			
		||||
#include "nvim/change.h"
 | 
			
		||||
#include "nvim/undo.h"
 | 
			
		||||
#include "nvim/cursor.h"
 | 
			
		||||
#include "nvim/edit.h"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user