comparison src/ex_getln.c @ 14556:2bee637a8edc v8.1.0291

patch 8.1.0291: 'incsearch' highlighting not used for :sort commit https://github.com/vim/vim/commit/81f56536b1bc324eb173924a8cf4d7dbbf4f3fdb Author: Bram Moolenaar <Bram@vim.org> Date: Sat Aug 18 16:19:42 2018 +0200 patch 8.1.0291: 'incsearch' highlighting not used for :sort Problem: 'incsearch' highlighting not used for :sort. Solution: Handle pattern in :sort command.
author Christian Brabandt <cb@256bit.org>
date Sat, 18 Aug 2018 16:30:04 +0200
parents 806e1a2648c6
children d84e67a12671
comparison
equal deleted inserted replaced
14555:b8dad604cb54 14556:2bee637a8edc
314 ; 314 ;
315 if (*skipwhite(p) != NUL 315 if (*skipwhite(p) != NUL
316 && (STRNCMP(cmd, "substitute", p - cmd) == 0 316 && (STRNCMP(cmd, "substitute", p - cmd) == 0
317 || STRNCMP(cmd, "smagic", p - cmd) == 0 317 || STRNCMP(cmd, "smagic", p - cmd) == 0
318 || STRNCMP(cmd, "snomagic", MAX(p - cmd, 3)) == 0 318 || STRNCMP(cmd, "snomagic", MAX(p - cmd, 3)) == 0
319 || STRNCMP(cmd, "sort", p - cmd) == 0
319 || STRNCMP(cmd, "global", p - cmd) == 0 320 || STRNCMP(cmd, "global", p - cmd) == 0
320 || STRNCMP(cmd, "vglobal", p - cmd) == 0)) 321 || STRNCMP(cmd, "vglobal", p - cmd) == 0))
321 { 322 {
322 if (*cmd == 's' && cmd[1] == 'm') 323 if (*cmd == 's' && cmd[1] == 'm')
323 p_magic = TRUE; 324 p_magic = TRUE;
329 { 330 {
330 p++; 331 p++;
331 if (*skipwhite(p) == NUL) 332 if (*skipwhite(p) == NUL)
332 return FALSE; 333 return FALSE;
333 } 334 }
335
336 // For ":sort" skip over flags.
337 if (cmd[0] == 's' && cmd[1] == 'o')
338 {
339 while (ASCII_ISALPHA(*(p = skipwhite(p))))
340 ++p;
341 if (*p == NUL)
342 return FALSE;
343 }
344
334 p = skipwhite(p); 345 p = skipwhite(p);
335 delim = *p++; 346 delim = *p++;
336 end = skip_regexp(p, delim, p_magic, NULL); 347 end = skip_regexp(p, delim, p_magic, NULL);
337 if (end > p || *end == delim) 348 if (end > p || *end == delim)
338 { 349 {
357 { 368 {
358 search_first_line = ea.line1; 369 search_first_line = ea.line1;
359 search_last_line = ea.line2; 370 search_last_line = ea.line2;
360 } 371 }
361 } 372 }
362 else if (*cmd == 's') 373 else if (cmd[0] == 's' && cmd[1] != 'o')
363 { 374 {
364 // :s defaults to the current line 375 // :s defaults to the current line
365 search_first_line = curwin->w_cursor.lnum; 376 search_first_line = curwin->w_cursor.lnum;
366 search_last_line = curwin->w_cursor.lnum; 377 search_last_line = curwin->w_cursor.lnum;
367 } 378 }