Mercurial > vim
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 } |