Merge pull request #13351 from janlazo/vim-8.1.1598

vim-patch:8.1.{1598,1601,2332},8.2.2032
This commit is contained in:
Jan Edmund Lazo
2020-11-22 19:42:28 -05:00
committed by GitHub
4 changed files with 68 additions and 51 deletions

View File

@@ -692,12 +692,21 @@ au BufNewFile,BufRead .gtkrc,gtkrc setf gtkrc
au BufNewFile,BufRead *.haml setf haml au BufNewFile,BufRead *.haml setf haml
" Hamster Classic | Playground files " Hamster Classic | Playground files
au BufNewFile,BufRead *.hsc,*.hsm setf hamster au BufNewFile,BufRead *.hsm setf hamster
au BufNewFile,BufRead *.hsc
\ if match(join(getline(1,10), "\n"), '\%(^\|\n\)\s*\%({-#\_s*LANGUAGE\>\|\<module\>\)') != -1 |
\ setf haskell |
\ else |
\ setf hamster |
\ endif
" Haskell " Haskell
au BufNewFile,BufRead *.hs,*.hs-boot setf haskell au BufNewFile,BufRead *.hs,*.hs-boot setf haskell
au BufNewFile,BufRead *.lhs setf lhaskell au BufNewFile,BufRead *.lhs setf lhaskell
au BufNewFile,BufRead *.chs setf chaskell au BufNewFile,BufRead *.chs setf chaskell
au BufNewFile,BufRead cabal.project setf cabalproject
au BufNewFile,BufRead $HOME/.cabal/config setf cabalconfig
au BufNewFile,BufRead cabal.config setf cabalconfig
" Haste " Haste
au BufNewFile,BufRead *.ht setf haste au BufNewFile,BufRead *.ht setf haste
@@ -2048,6 +2057,8 @@ endif
" BIND zone " BIND zone
au BufNewFile,BufRead */named/db.*,*/bind/db.* call s:StarSetf('bindzone') au BufNewFile,BufRead */named/db.*,*/bind/db.* call s:StarSetf('bindzone')
au BufNewFile,BufRead cabal.project.* call s:StarSetf('cabalproject')
" Calendar " Calendar
au BufNewFile,BufRead */.calendar/*, au BufNewFile,BufRead */.calendar/*,
\*/share/calendar/*/calendar.*,*/share/calendar/calendar.* \*/share/calendar/*/calendar.*,*/share/calendar/calendar.*

View File

@@ -7173,46 +7173,6 @@ int get_sts_value(void)
return (int)result; return (int)result;
} }
/// Check matchpairs option for "*initc".
/// If there is a match set "*initc" to the matching character and "*findc" to
/// the opposite character. Set "*backwards" to the direction.
/// When "switchit" is true swap the direction.
void find_mps_values(int *initc, int *findc, int *backwards, int switchit)
{
char_u *ptr = curbuf->b_p_mps;
while (*ptr != NUL) {
if (utf_ptr2char(ptr) == *initc) {
if (switchit) {
*findc = *initc;
*initc = utf_ptr2char(ptr + utfc_ptr2len(ptr) + 1);
*backwards = true;
} else {
*findc = utf_ptr2char(ptr + utfc_ptr2len(ptr) + 1);
*backwards = false;
}
return;
}
char_u *prev = ptr;
ptr += utfc_ptr2len(ptr) + 1;
if (utf_ptr2char(ptr) == *initc) {
if (switchit) {
*findc = *initc;
*initc = utf_ptr2char(prev);
*backwards = false;
} else {
*findc = utf_ptr2char(prev);
*backwards = true;
}
return;
}
ptr += utfc_ptr2len(ptr);
if (*ptr == ',') {
ptr++;
}
}
}
/// This is called when 'breakindentopt' is changed and when a window is /// This is called when 'breakindentopt' is changed and when a window is
/// initialized /// initialized
static bool briopt_check(win_T *wp) static bool briopt_check(win_T *wp)

View File

@@ -1658,6 +1658,48 @@ static bool find_rawstring_end(char_u *linep, pos_T *startpos, pos_T *endpos)
return found; return found;
} }
/// Check matchpairs option for "*initc".
/// If there is a match set "*initc" to the matching character and "*findc" to
/// the opposite character. Set "*backwards" to the direction.
/// When "switchit" is true swap the direction.
static void find_mps_values(int *initc, int *findc, bool *backwards,
bool switchit)
FUNC_ATTR_NONNULL_ALL
{
char_u *ptr = curbuf->b_p_mps;
while (*ptr != NUL) {
if (utf_ptr2char(ptr) == *initc) {
if (switchit) {
*findc = *initc;
*initc = utf_ptr2char(ptr + utfc_ptr2len(ptr) + 1);
*backwards = true;
} else {
*findc = utf_ptr2char(ptr + utfc_ptr2len(ptr) + 1);
*backwards = false;
}
return;
}
char_u *prev = ptr;
ptr += utfc_ptr2len(ptr) + 1;
if (utf_ptr2char(ptr) == *initc) {
if (switchit) {
*findc = *initc;
*initc = utf_ptr2char(prev);
*backwards = false;
} else {
*findc = utf_ptr2char(prev);
*backwards = true;
}
return;
}
ptr += utfc_ptr2len(ptr);
if (*ptr == ',') {
ptr++;
}
}
}
/* /*
* findmatchlimit -- find the matching paren or brace, if it exists within * findmatchlimit -- find the matching paren or brace, if it exists within
* maxtravel lines of the cursor. A maxtravel of 0 means search until falling * maxtravel lines of the cursor. A maxtravel of 0 means search until falling
@@ -1684,7 +1726,7 @@ pos_T *findmatchlimit(oparg_T *oap, int initc, int flags, int64_t maxtravel)
static pos_T pos; // current search position static pos_T pos; // current search position
int findc = 0; // matching brace int findc = 0; // matching brace
int count = 0; // cumulative number of braces int count = 0; // cumulative number of braces
int backwards = false; // init for gcc bool backwards = false; // init for gcc
bool raw_string = false; // search for raw string bool raw_string = false; // search for raw string
bool inquote = false; // true when inside quotes bool inquote = false; // true when inside quotes
char_u *ptr; char_u *ptr;
@@ -1729,9 +1771,10 @@ pos_T *findmatchlimit(oparg_T *oap, int initc, int flags, int64_t maxtravel)
raw_string = (initc == 'R'); raw_string = (initc == 'R');
initc = NUL; initc = NUL;
} else if (initc != '#' && initc != NUL) { } else if (initc != '#' && initc != NUL) {
find_mps_values(&initc, &findc, &backwards, TRUE); find_mps_values(&initc, &findc, &backwards, true);
if (findc == NUL) if (findc == NUL) {
return NULL; return NULL;
}
} else { } else {
/* /*
* Either initc is '#', or no initc was given and we need to look * Either initc is '#', or no initc was given and we need to look
@@ -1759,20 +1802,20 @@ pos_T *findmatchlimit(oparg_T *oap, int initc, int flags, int64_t maxtravel)
else if (linep[pos.col] == '/') { else if (linep[pos.col] == '/') {
if (linep[pos.col + 1] == '*') { if (linep[pos.col + 1] == '*') {
comment_dir = FORWARD; comment_dir = FORWARD;
backwards = FALSE; backwards = false;
pos.col++; pos.col++;
} else if (pos.col > 0 && linep[pos.col - 1] == '*') { } else if (pos.col > 0 && linep[pos.col - 1] == '*') {
comment_dir = BACKWARD; comment_dir = BACKWARD;
backwards = TRUE; backwards = true;
pos.col--; pos.col--;
} }
} else if (linep[pos.col] == '*') { } else if (linep[pos.col] == '*') {
if (linep[pos.col + 1] == '/') { if (linep[pos.col + 1] == '/') {
comment_dir = BACKWARD; comment_dir = BACKWARD;
backwards = TRUE; backwards = true;
} else if (pos.col > 0 && linep[pos.col - 1] == '/') { } else if (pos.col > 0 && linep[pos.col - 1] == '/') {
comment_dir = FORWARD; comment_dir = FORWARD;
backwards = FALSE; backwards = false;
} }
} }
} }
@@ -1794,9 +1837,10 @@ pos_T *findmatchlimit(oparg_T *oap, int initc, int flags, int64_t maxtravel)
if (initc == NUL) if (initc == NUL)
break; break;
find_mps_values(&initc, &findc, &backwards, FALSE); find_mps_values(&initc, &findc, &backwards, false);
if (findc) if (findc) {
break; break;
}
pos.col += utfc_ptr2len(linep + pos.col); pos.col += utfc_ptr2len(linep + pos.col);
} }
if (!findc) { if (!findc) {

View File

@@ -86,6 +86,8 @@ let s:filename_checks = {
\ 'bzr': ['bzr_log.any'], \ 'bzr': ['bzr_log.any'],
\ 'c': ['enlightenment/file.cfg', 'file.qc', 'file.c'], \ 'c': ['enlightenment/file.cfg', 'file.qc', 'file.c'],
\ 'cabal': ['file.cabal'], \ 'cabal': ['file.cabal'],
\ 'cabalconfig': ['cabal.config'],
\ 'cabalproject': ['cabal.project', 'cabal.project.local'],
\ 'calendar': ['calendar'], \ 'calendar': ['calendar'],
\ 'catalog': ['catalog', 'sgml.catalogfile'], \ 'catalog': ['catalog', 'sgml.catalogfile'],
\ 'cdl': ['file.cdl'], \ 'cdl': ['file.cdl'],