Patch 8.0.09911

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0911
Problem:Terminal test takes too long.
Solution:   Instead of "sleep 1" use a Python program to briefly sleep.
Files:  src/testdir/test_terminal.vim, src/testdir/test_short_sleep.py


*** ../vim-8.0.0910/src/testdir/test_terminal.vim   2017-08-11 
22:27:44.513127603 +0200
--- src/testdir/test_terminal.vim   2017-08-11 22:43:13.742563761 +0200
***
*** 6,11 
--- 6,13 
  
  source shared.vim
  
+ let s:python = PythonProg()
+ 
  " Open a terminal with a shell, assign the job to g:job and return the buffer
  " number.
  func Run_shell_in_terminal(options)
***
*** 319,359 
  endfunc
  
  func Test_finish_close()
-   " TODO: use something that takes much less than a whole second
-   echo 'This will take five seconds...'
call assert_equal(1, winnr('$'))
  
!   if has('win32')
! let cmd = $windir . '\system32\timeout.exe 1'
else
! let cmd = 'sleep 1'
endif
exe 'terminal ++close ' . cmd
let buf = bufnr('')
call assert_equal(2, winnr('$'))
- 
wincmd p
!   sleep 1200 msec
call assert_equal(1, winnr('$'))
  
call term_start(cmd, {'term_finish': 'close'})
call assert_equal(2, winnr('$'))
let buf = bufnr('')
wincmd p
!   sleep 1200 msec
call assert_equal(1, winnr('$'))
  
exe 'terminal ++open ' . cmd
let buf = bufnr('')
close
!   sleep 1200 msec
call assert_equal(2, winnr('$'))
bwipe
  
call term_start(cmd, {'term_finish': 'open'})
let buf = bufnr('')
close
!   sleep 1200 msec
call assert_equal(2, winnr('$'))
  
bwipe
--- 321,366 
  endfunc
  
  func Test_finish_close()
call assert_equal(1, winnr('$'))
  
!   if s:python != ''
! let cmd = s:python . " test_short_sleep.py"
! let waittime = 500
else
! echo 'This will take five seconds...'
! let waittime = 2000
! if has('win32')
!   let cmd = $windir . '\system32\timeout.exe 1'
! else
!   let cmd = 'sleep 1'
! endif
endif
+ 
exe 'terminal ++close ' . cmd
let buf = bufnr('')
call assert_equal(2, winnr('$'))
wincmd p
!   call WaitFor("winnr('$') == 1", waittime)
call assert_equal(1, winnr('$'))
  
call term_start(cmd, {'term_finish': 'close'})
call assert_equal(2, winnr('$'))
let buf = bufnr('')
wincmd p
!   call WaitFor("winnr('$') == 1", waittime)
call assert_equal(1, winnr('$'))
  
exe 'terminal ++open ' . cmd
let buf = bufnr('')
close
!   call WaitFor("winnr('$') == 2", waittime)
call assert_equal(2, winnr('$'))
bwipe
  
call term_start(cmd, {'term_finish': 'open'})
let buf = bufnr('')
close
!   call WaitFor("winnr('$') == 2", waittime)
call assert_equal(2, winnr('$'))
  
bwipe
*** ../vim-8.0.0910/src/testdir/test_short_sleep.py 2017-08-11 
22:44:11.578155307 +0200
--- src/testdir/test_short_sleep.py 2017-08-11 22:31:11.635664630 +0200
***
*** 0 
--- 1,11 
+ #!/usr/bin/python
+ #
+ # Program that sleeps for 100 msec
+ #
+ # This requires Python 2.6 or later.
+ 
+ import time
+ 
+ if __name__ == "__main__":
+ 
+ time.sleep(0.1)  # sleep 100 msec
*** ../vim-8.0.0910/src/version.c   2017-08-11 22:27:44.513127603 +0200
--- src/version.c   2017-08-11 22:32:18.603191534 +0200
***
*** 771,772 
--- 771,774 
  {   /* Add new patch number below this line */
+ /**/
+ 911,
  /**/

-- 
Yesterday, all my deadlines seemed so far away
now it looks as though it's freeze in four days
oh I believe in cvs..
[ CVS log "Beatles style" for FreeBSD ports/INDEX, Satoshi Asami ]

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Patch 8.0.0910

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0910
Problem:Cannot create a terminal in the current window.
Solution:   Add option "curwin" and ++curwin.
Files:  src/terminal.c, runtime/doc/eval.txt, src/channel.c,
src/structs.h, src/ex_cmds.h, src/testdir/test_terminal.vim


*** ../vim-8.0.0909/src/terminal.c  2017-08-11 21:51:18.804637212 +0200
--- src/terminal.c  2017-08-11 22:14:57.926538594 +0200
***
*** 244,250 
  }
  
  static void
! term_start(char_u *cmd, jobopt_T *opt)
  {
  exarg_T   split_ea;
  win_T *old_curwin = curwin;
--- 244,250 
  }
  
  static void
! term_start(char_u *cmd, jobopt_T *opt, int forceit)
  {
  exarg_T   split_ea;
  win_T *old_curwin = curwin;
***
*** 261,288 
  term->tl_finish = opt->jo_term_finish;
  ga_init2(>tl_scrollback, sizeof(sb_line_T), 300);
  
- /* Open a new window or tab. */
  vim_memset(_ea, 0, sizeof(split_ea));
! split_ea.cmdidx = CMD_new;
! split_ea.cmd = (char_u *)"new";
! split_ea.arg = (char_u *)"";
! if (opt->jo_term_rows > 0 && !(cmdmod.split & WSP_VERT))
  {
!   split_ea.line2 = opt->jo_term_rows;
!   split_ea.addr_count = 1;
  }
! if (opt->jo_term_cols > 0 && (cmdmod.split & WSP_VERT))
  {
!   split_ea.line2 = opt->jo_term_cols;
!   split_ea.addr_count = 1;
! }
  
! ex_splitview(_ea);
! if (curwin == old_curwin)
! {
!   /* split failed */
!   vim_free(term);
!   return;
  }
  term->tl_buffer = curbuf;
  curbuf->b_term = term;
--- 261,303 
  term->tl_finish = opt->jo_term_finish;
  ga_init2(>tl_scrollback, sizeof(sb_line_T), 300);
  
  vim_memset(_ea, 0, sizeof(split_ea));
! if (opt->jo_curwin)
  {
!   /* Create a new buffer in the current window. */
!   if (!can_abandon(curbuf, forceit))
!   {
!   EMSG(_(e_nowrtmsg));
!   return;
!   }
!   if (do_ecmd(0, NULL, NULL, _ea, ECMD_ONE,
!ECMD_HIDE + (forceit ? ECMD_FORCEIT : 0), curwin) == FAIL)
!   return;
  }
! else
  {
!   /* Open a new window or tab. */
!   split_ea.cmdidx = CMD_new;
!   split_ea.cmd = (char_u *)"new";
!   split_ea.arg = (char_u *)"";
!   if (opt->jo_term_rows > 0 && !(cmdmod.split & WSP_VERT))
!   {
!   split_ea.line2 = opt->jo_term_rows;
!   split_ea.addr_count = 1;
!   }
!   if (opt->jo_term_cols > 0 && (cmdmod.split & WSP_VERT))
!   {
!   split_ea.line2 = opt->jo_term_cols;
!   split_ea.addr_count = 1;
!   }
  
!   ex_splitview(_ea);
!   if (curwin == old_curwin)
!   {
!   /* split failed */
!   vim_free(term);
!   return;
!   }
  }
  term->tl_buffer = curbuf;
  curbuf->b_term = term;
***
*** 378,383 
--- 393,400 
opt.jo_term_finish = 'c';
else if ((int)(p - cmd) == 4 && STRNICMP(cmd, "open", 4) == 0)
opt.jo_term_finish = 'o';
+   else if ((int)(p - cmd) == 6 && STRNICMP(cmd, "curwin", 6) == 0)
+   opt.jo_curwin = 1;
else
{
if (*p)
***
*** 400,408 
else
opt.jo_term_rows = eap->line2;
  }
- /* TODO: get more options from before the command */
  
! term_start(cmd, );
  }
  
  /*
--- 417,424 
else
opt.jo_term_rows = eap->line2;
  }
  
! term_start(cmd, , eap->forceit);
  }
  
  /*
***
*** 2365,2377 
JO_TIMEOUT_ALL + JO_STOPONEXIT
+ JO_EXIT_CB + JO_CLOSE_CALLBACK,
JO2_TERM_NAME + JO2_TERM_FINISH
!   + JO2_TERM_COLS + JO2_TERM_ROWS + JO2_VERTICAL
+ JO2_CWD + JO2_ENV) == FAIL)
return;
  
  if (opt.jo_vertical)
cmdmod.split = WSP_VERT;
! term_start(cmd, );
  
  if (curbuf->b_term != NULL)
rettv->vval.v_number = curbuf->b_fnum;
--- 2381,2393 
JO_TIMEOUT_ALL + JO_STOPONEXIT
+ JO_EXIT_CB + JO_CLOSE_CALLBACK,
JO2_TERM_NAME + JO2_TERM_FINISH
!   + JO2_TERM_COLS + JO2_TERM_ROWS + JO2_VERTICAL + JO2_CURWIN
+ JO2_CWD + JO2_ENV) == FAIL)
return;
  
  if (opt.jo_vertical)
cmdmod.split = WSP_VERT;
! term_start(cmd, , FALSE);
  
  if (curbuf->b_term != NULL)
rettv->vval.v_number = curbuf->b_fnum;
*** ../vim-8.0.0909/runtime/doc/eval.txt2017-08-11 21:51:18.808637183 
+0200
--- runtime/doc/eval.txt2017-08-11 21:55:05.543014554 +0200
***
*** 8077,8082 
--- 8077,8085 
   "term_cols"   horizontal size to use for the terminal,
 instead of using 'termsize'
   "vertical"split the window vertically
+  "curwin"  use the current window, do not split the
+

Patch 8.0.0909

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0909
Problem:Channel test fails.
Solution:   Allow for "cwd" and "env" arguments.
Files:  src/channel.c


*** ../vim-8.0.0908/src/channel.c   2017-08-11 21:51:18.808637183 +0200
--- src/channel.c   2017-08-11 22:21:18.947849890 +0200
***
*** 4976,4983 
clear_job_options();
opt.jo_mode = MODE_NL;
if (get_job_options([1], ,
!   JO_MODE_ALL + JO_CB_ALL + JO_TIMEOUT_ALL + JO_STOPONEXIT
!+ JO_EXIT_CB + JO_OUT_IO + JO_BLOCK_WRITE, 0) == FAIL)
goto theend;
  }
  
--- 4983,4991 
clear_job_options();
opt.jo_mode = MODE_NL;
if (get_job_options([1], ,
!   JO_MODE_ALL + JO_CB_ALL + JO_TIMEOUT_ALL + JO_STOPONEXIT
!+ JO_EXIT_CB + JO_OUT_IO + JO_BLOCK_WRITE,
!JO2_ENV + JO2_CWD) == FAIL)
goto theend;
  }
  
*** ../vim-8.0.0908/src/version.c   2017-08-11 21:51:18.812637155 +0200
--- src/version.c   2017-08-11 22:22:15.259452393 +0200
***
*** 771,772 
--- 771,774 
  {   /* Add new patch number below this line */
+ /**/
+ 909,
  /**/

-- 
Snoring is prohibited unless all bedroom windows are closed and securely
locked.
[real standing law in Massachusetts, United States of America]

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Patch 8.0.0908

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0908
Problem:Cannot set terminal size with options.
Solution:   Add "term_rows", "term_cols" and "vertical".
Files:  src/terminal.c, runtime/doc/eval.txt, src/channel.c,
src/proto/channel.pro, src/structs.h, src/evalfunc.c,
src/testdir/test_terminal.vim


*** ../vim-8.0.0907/src/terminal.c  2017-08-11 19:12:05.052966360 +0200
--- src/terminal.c  2017-08-11 21:44:05.607739252 +0200
***
*** 237,244 
  opt->jo_io_buf[PART_OUT] = curbuf->b_fnum;
  opt->jo_io_buf[PART_ERR] = curbuf->b_fnum;
  opt->jo_pty = TRUE;
! opt->jo_term_rows = rows;
! opt->jo_term_cols = cols;
  }
  
  static void
--- 237,246 
  opt->jo_io_buf[PART_OUT] = curbuf->b_fnum;
  opt->jo_io_buf[PART_ERR] = curbuf->b_fnum;
  opt->jo_pty = TRUE;
! if ((opt->jo_set2 & JO2_TERM_ROWS) == 0)
!   opt->jo_term_rows = rows;
! if ((opt->jo_set2 & JO2_TERM_COLS) == 0)
!   opt->jo_term_cols = cols;
  }
  
  static void
***
*** 2361,2371 
  if (argvars[1].v_type != VAR_UNKNOWN
&& get_job_options([1], ,
JO_TIMEOUT_ALL + JO_STOPONEXIT
!   + JO_EXIT_CB + JO_CLOSE_CALLBACK
!   + JO2_TERM_NAME + JO2_TERM_FINISH
!   + JO2_CWD + JO2_ENV) == FAIL)
return;
  
  term_start(cmd, );
  
  if (curbuf->b_term != NULL)
--- 2363,2376 
  if (argvars[1].v_type != VAR_UNKNOWN
&& get_job_options([1], ,
JO_TIMEOUT_ALL + JO_STOPONEXIT
!   + JO_EXIT_CB + JO_CLOSE_CALLBACK,
!   JO2_TERM_NAME + JO2_TERM_FINISH
!   + JO2_TERM_COLS + JO2_TERM_ROWS + JO2_VERTICAL
!   + JO2_CWD + JO2_ENV) == FAIL)
return;
  
+ if (opt.jo_vertical)
+   cmdmod.split = WSP_VERT;
  term_start(cmd, );
  
  if (curbuf->b_term != NULL)
*** ../vim-8.0.0907/runtime/doc/eval.txt2017-08-11 20:25:22.097565404 
+0200
--- runtime/doc/eval.txt2017-08-11 21:47:44.250173325 +0200
***
*** 8050,8057 
  term_start({cmd}, {options})  *term_start()*
Open a terminal window and run {cmd} in it.
  
!   Returns the buffer number of the terminal window.
!   When opening the window fails zero is returned.
  
{options} are similar to what is used for |job_start()|, see
|job-options|.  However, not all options can be used.  These
--- 8050,8059 
  term_start({cmd}, {options})  *term_start()*
Open a terminal window and run {cmd} in it.
  
!   Returns the buffer number of the terminal window.  If {cmd}
!   cannot be executed the window does open and shows an error
!   message.
!   If opening the window fails zero is returned.
  
{options} are similar to what is used for |job_start()|, see
|job-options|.  However, not all options can be used.  These
***
*** 8067,8076 
connected to the terminal.  When I/O is connected to the
terminal then the callback function for that part is not used.
  
!   There are two extra options:
   "term_name"   name to use for the buffer name, instead
 of the command name.
!  "term_finish" What todo when the job is finished:
"close": close any windows
"open": open window if needed
 Note that "open" can be interruptive.
--- 8069,8083 
connected to the terminal.  When I/O is connected to the
terminal then the callback function for that part is not used.
  
!   There are extra options:
   "term_name"   name to use for the buffer name, instead
 of the command name.
!  "term_rows"   vertical size to use for the terminal,
!instead of using 'termsize'
!  "term_cols"   horizontal size to use for the terminal,
!instead of using 'termsize'
!  "vertical"split the window vertically
!  "term_finish" What to do when the job is finished:
"close": close any windows
"open": open window if needed
 Note that "open" can be interruptive.
*** ../vim-8.0.0907/src/channel.c   2017-08-11 19:12:05.052966360 +0200
--- src/channel.c   2017-08-11 21:39:37.745655960 +0200
***
*** 927,933 
  opt.jo_mode = MODE_JSON;
  opt.jo_timeout = 2000;
  if (get_job_options([1], ,
! JO_MODE_ALL + 

Patch 8.0.0907

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0907
Problem:With cp932 font names might be misinterpreted.
Solution:   Do not see "_" as a space when it is the second byte of a double
byte character. (Ken Takata)
Files:  src/os_win32.c


*** ../vim-8.0.0906/src/os_mswin.c  2017-08-07 21:17:53.00919 +0200
--- src/os_mswin.c  2017-08-11 20:53:34.861374456 +0200
***
*** 2965,2971 
int did_replace = FALSE;
  
for (i = 0; lf->lfFaceName[i]; ++i)
!   if (lf->lfFaceName[i] == '_')
{
lf->lfFaceName[i] = ' ';
did_replace = TRUE;
--- 2965,2973 
int did_replace = FALSE;
  
for (i = 0; lf->lfFaceName[i]; ++i)
!   if (IsDBCSLeadByte(lf->lfFaceName[i]))
!   ++i;
!   else if (lf->lfFaceName[i] == '_')
{
lf->lfFaceName[i] = ' ';
did_replace = TRUE;
*** ../vim-8.0.0906/src/version.c   2017-08-11 20:50:00.722908598 +0200
--- src/version.c   2017-08-11 20:55:05.336730685 +0200
***
*** 771,772 
--- 771,774 
  {   /* Add new patch number below this line */
+ /**/
+ 907,
  /**/

-- 
Why don't cannibals eat clowns?
Because they taste funny.

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Patch 8.0.0906

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0906
Problem:Don't recognize Couchbase files.
Solution:   Add filetype detection. (Eugene Ciurana, closes #1951)
Files:  runtime/filetype.vim, src/testdir/test_filetype.vim


*** ../vim-8.0.0905/runtime/filetype.vim2017-08-09 22:06:25.158509929 
+0200
--- runtime/filetype.vim2017-08-11 20:48:56.007373763 +0200
***
*** 1,7 
  " Vim support file to detect file types
  "
  " Maintainer: Bram Moolenaar 
! " Last Change:2017 Aug 09
  
  " Listen very carefully, I will say this only once
  if exists("did_load_filetypes")
--- 1,7 
  " Vim support file to detect file types
  "
  " Maintainer: Bram Moolenaar 
! " Last Change:2017 Aug 11
  
  " Listen very carefully, I will say this only once
  if exists("did_load_filetypes")
***
*** 1342,1347 
--- 1342,1350 
  " Mutt setup file (also for Muttng)
  au BufNewFile,BufRead Mutt{ng,}rc setf muttrc
  
+ " N1QL
+ au BufRead,BufNewfile *.n1ql,*.nqlsetf n1ql
+ 
  " Nano
  au BufNewFile,BufRead */etc/nanorc,*.nanorc   setf nanorc
  
*** ../vim-8.0.0905/src/testdir/test_filetype.vim   2017-08-09 
22:24:48.306504337 +0200
--- src/testdir/test_filetype.vim   2017-08-11 20:42:37.882093776 +0200
***
*** 297,302 
--- 297,303 
  \ 'mush': ['file.mush'],
  \ 'muttrc': ['Muttngrc', 'Muttrc'],
  \ 'mysql': ['file.mysql'],
+ \ 'n1ql': ['file.n1ql', 'file.nql'],
  \ 'named': ['namedfile.conf', 'rndcfile.conf'],
  \ 'nanorc': ['/etc/nanorc', 'file.nanorc'],
  \ 'ncf': ['file.ncf'],
*** ../vim-8.0.0905/src/version.c   2017-08-11 20:36:55.676558704 +0200
--- src/version.c   2017-08-11 20:49:30.259127554 +0200
***
*** 771,772 
--- 771,774 
  {   /* Add new patch number below this line */
+ /**/
+ 906,
  /**/

-- 
Biting someone with your natural teeth is "simple assault," while biting
someone with your false teeth is "aggravated assault."
[real standing law in Louisana, United States of America]

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Patch 8.0.0905

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0905
Problem:MS-Windows: broken multi-byte characters in the console.
Solution:   Restore all regions of the console buffer. (Ken Takata)
Files:  src/os_win32.c


*** ../vim-8.0.0904/src/os_win32.c  2017-08-11 19:12:05.056966332 +0200
--- src/os_win32.c  2017-08-11 20:33:01.038250779 +0200
***
*** 2192,2197 
--- 2192,2199 
  CONSOLE_SCREEN_BUFFER_INFOInfo;
  PCHAR_INFOBuffer;
  COORD BufferSize;
+ PSMALL_RECT   Regions;
+ int   NumRegions;
  } ConsoleBuffer;
  
  /*
***
*** 2212,2217 
--- 2214,2220 
  COORD BufferCoord;
  SMALL_RECT ReadRegion;
  WORD Y, Y_incr;
+ int i, numregions;
  
  if (cb == NULL)
return FALSE;
***
*** 2254,2260 
  ReadRegion.Left = 0;
  ReadRegion.Right = cb->Info.dwSize.X - 1;
  Y_incr = 12000 / cb->Info.dwSize.X;
! for (Y = 0; Y < cb->BufferSize.Y; Y += Y_incr)
  {
/*
 * Read into position (0, Y) in our buffer.
--- 2257,2278 
  ReadRegion.Left = 0;
  ReadRegion.Right = cb->Info.dwSize.X - 1;
  Y_incr = 12000 / cb->Info.dwSize.X;
! 
! numregions = (cb->Info.dwSize.Y + Y_incr - 1) / Y_incr;
! if (cb->Regions == NULL || numregions != cb->NumRegions)
! {
!   cb->NumRegions = numregions;
!   vim_free(cb->Regions);
!   cb->Regions = (PSMALL_RECT)alloc(cb->NumRegions * sizeof(SMALL_RECT));
!   if (cb->Regions == NULL)
!   {
!   vim_free(cb->Buffer);
!   cb->Buffer = NULL;
!   return FALSE;
!   }
! }
! 
! for (i = 0, Y = 0; i < cb->NumRegions; i++, Y += Y_incr)
  {
/*
 * Read into position (0, Y) in our buffer.
***
*** 2268,2274 
 */
ReadRegion.Top = Y;
ReadRegion.Bottom = Y + Y_incr - 1;
!   if (!ReadConsoleOutput(g_hConOut,   /* output handle */
cb->Buffer, /* our buffer */
cb->BufferSize, /* dimensions of our buffer */
BufferCoord,/* offset in our buffer */
--- 2286,2292 
 */
ReadRegion.Top = Y;
ReadRegion.Bottom = Y + Y_incr - 1;
!   if (!ReadConsoleOutputW(g_hConOut,  /* output handle */
cb->Buffer, /* our buffer */
cb->BufferSize, /* dimensions of our buffer */
BufferCoord,/* offset in our buffer */
***
*** 2276,2283 
--- 2294,2304 
{
vim_free(cb->Buffer);
cb->Buffer = NULL;
+   vim_free(cb->Regions);
+   cb->Regions = NULL;
return FALSE;
}
+   cb->Regions[i] = ReadRegion;
  }
  
  return TRUE;
***
*** 2299,2304 
--- 2320,2326 
  {
  COORD BufferCoord;
  SMALL_RECT WriteRegion;
+ int i;
  
  if (cb == NULL || !cb->IsValid)
return FALSE;
***
*** 2335,2353 
   */
  if (cb->Buffer != NULL)
  {
!   BufferCoord.X = 0;
!   BufferCoord.Y = 0;
!   WriteRegion.Left = 0;
!   WriteRegion.Top = 0;
!   WriteRegion.Right = cb->Info.dwSize.X - 1;
!   WriteRegion.Bottom = cb->Info.dwSize.Y - 1;
!   if (!WriteConsoleOutput(g_hConOut,  /* output handle */
!   cb->Buffer, /* our buffer */
!   cb->BufferSize, /* dimensions of our buffer */
!   BufferCoord,/* offset in our buffer */
!   ))  /* region to restore */
{
!   return FALSE;
}
  }
  
--- 2357,2375 
   */
  if (cb->Buffer != NULL)
  {
!   for (i = 0; i < cb->NumRegions; i++)
{
!   BufferCoord.X = cb->Regions[i].Left;
!   BufferCoord.Y = cb->Regions[i].Top;
!   WriteRegion = cb->Regions[i];
!   if (!WriteConsoleOutputW(g_hConOut, /* output handle */
!   cb->Buffer, /* our buffer */
!   cb->BufferSize, /* dimensions of our buffer */
!   BufferCoord,/* offset in our buffer */
!   ))  /* region to restore */
!   {
!   return FALSE;
!   }
}
  }
  
*** ../vim-8.0.0904/src/version.c   2017-08-11 20:25:22.097565404 +0200
--- src/version.c   2017-08-11 20:36:00.028959853 +0200
***
*** 771,772 
--- 771,774 
  {   /* Add new patch number below this line */
+ /**/
+ 905,
  /**/

-- 
It is illegal to rob a bank and then shoot at the bank teller with a water
pistol.
[real standing law in Louisana, United States of America]

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\

Patch 8.0.0904

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0904
Problem:Cannot set a location list from text.
Solution:   Add the "text" argument to setqflist(). (Yegappan Lakshmanan)
Files:  runtime/doc/eval.txt, src/quickfix.c,
src/testdir/test_quickfix.vim


*** ../vim-8.0.0903/runtime/doc/eval.txt2017-08-11 16:24:46.320283867 
+0200
--- runtime/doc/eval.txt2017-08-11 20:07:27.485252468 +0200
***
*** 6973,6982 
|winrestview()|.
  
  setqflist({list} [, {action}[, {what}]])  *setqflist()*
!   Create or replace or add to the quickfix list using the items
!   in {list}.  Each item in {list} is a dictionary.
!   Non-dictionary items in {list} are ignored.  Each dictionary
!   item can contain the following entries:
  
bufnr   buffer number; must be the number of a valid
buffer
--- 6973,6984 
|winrestview()|.
  
  setqflist({list} [, {action}[, {what}]])  *setqflist()*
!   Create or replace or add to the quickfix list.
!   
!   When {what} is not present, use the items in {list}.  Each
!   item must be a dictionary.  Non-dictionary items in {list} are
!   ignored.  Each dictionary item can contain the following
!   entries:
  
bufnr   buffer number; must be the number of a valid
buffer
***
*** 7028,7033 
--- 7030,7039 
argument is ignored.  The following items can be specified in
{what}:
context any Vim type can be stored as a context
+   textuse 'errorformat' to extract items from the
+   text and add the resulting entries to the
+   quickfix list {nr}.  The value can be a string
+   with one line or a list with multiple lines.
items   list of quickfix entries. Same as the {list}
argument.
nr  list number in the quickfix stack; zero
*** ../vim-8.0.0903/src/quickfix.c  2017-07-27 22:03:45.550703059 +0200
--- src/quickfix.c  2017-08-11 20:10:10.820097310 +0200
***
*** 4885,4891 
  }
  
  static int
! qf_set_properties(qf_info_T *qi, dict_T *what, int action)
  {
  dictitem_T*di;
  int   retval = FAIL;
--- 4885,4891 
  }
  
  static int
! qf_set_properties(qf_info_T *qi, dict_T *what, int action, char_u *title)
  {
  dictitem_T*di;
  int   retval = FAIL;
***
*** 4929,4935 
  
  if (newlist)
  {
!   qf_new_list(qi, NULL);
qf_idx = qi->qf_curlist;
  }
  
--- 4929,4935 
  
  if (newlist)
  {
!   qf_new_list(qi, title);
qf_idx = qi->qf_curlist;
  }
  
***
*** 4957,4962 
--- 4957,4979 
}
  }
  
+ if ((di = dict_find(what, (char_u *)"text", -1)) != NULL)
+ {
+   /* Only string and list values are supported */
+   if ((di->di_tv.v_type == VAR_STRING && di->di_tv.vval.v_string != NULL)
+   || (di->di_tv.v_type == VAR_LIST
+&& di->di_tv.vval.v_list != NULL))
+   {
+   if (action == 'r')
+   qf_free_items(qi, qf_idx);
+   if (qf_init_ext(qi, qf_idx, NULL, NULL, >di_tv, p_efm,
+   FALSE, (linenr_T)0, (linenr_T)0, NULL, NULL) > 0)
+   retval = OK;
+   }
+   else
+   return FAIL;
+ }
+ 
  if ((di = dict_find(what, (char_u *)"context", -1)) != NULL)
  {
typval_T*ctx;
***
*** 5070,5076 
qf_free_stack(wp, qi);
  }
  else if (what != NULL)
!   retval = qf_set_properties(qi, what, action);
  else
retval = qf_add_entries(qi, qi->qf_curlist, list, title, action);
  
--- 5087,5093 
qf_free_stack(wp, qi);
  }
  else if (what != NULL)
!   retval = qf_set_properties(qi, what, action, title);
  else
retval = qf_add_entries(qi, qi->qf_curlist, list, title, action);
  
*** ../vim-8.0.0903/src/testdir/test_quickfix.vim   2017-07-27 
22:03:45.550703059 +0200
--- src/testdir/test_quickfix.vim   2017-08-11 20:11:19.535611302 +0200
***
*** 1862,1867 
--- 1862,1872 
  let l = g:Xgetlist({'items':1})
  call assert_equal(0, len(l.items))
  
+ " The following used to crash Vim with address sanitizer
+ call g:Xsetlist([], 'f')
+ call g:Xsetlist([], 'a', {'items' : [{'filename':'F1', 'lnum':10}]})
+ call assert_equal(10, g:Xgetlist({'items':1}).items[0].lnum)
+ 
  " Save and restore the quickfix stack
  call g:Xsetlist([], 'f')
  call assert_equal(0, g:Xgetlist({'nr':'$'}).nr)

Patch 8.0.0903

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0903 (after 8.0.0902)
Problem:Early return from test function.
Solution:   Remove the return.
Files:  src/testdir/test_terminal.vim


*** ../vim-8.0.0902/src/testdir/test_terminal.vim   2017-08-11 
19:12:05.060966304 +0200
--- src/testdir/test_terminal.vim   2017-08-11 20:18:58.776339433 +0200
***
*** 266,272 
  endfunc
  
  func Test_finish_close()
-   return
" TODO: use something that takes much less than a whole second
echo 'This will take five seconds...'
call assert_equal(1, winnr('$'))
--- 266,271 
*** ../vim-8.0.0902/src/version.c   2017-08-11 19:12:05.060966304 +0200
--- src/version.c   2017-08-11 20:19:49.023975493 +0200
***
*** 771,772 
--- 771,774 
  {   /* Add new patch number below this line */
+ /**/
+ 903,
  /**/

-- 
How do you know when you have run out of invisible ink?

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Patch 8.0.0902

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0902
Problem:Cannot specify directory or environment for a job.
Solution:   Add the "cwd" and "env" arguments to job options. (Yasuhiro
Matsumoto, closes #1160)
Files:  runtime/doc/channel.txt, src/channel.c, src/terminal.c,
src/os_unix.c, src/os_win32.c, src/structs.h,
src/testdir/test_channel.vim, src/testdir/test_terminal.vim


*** ../vim-8.0.0901/runtime/doc/channel.txt 2017-01-25 22:40:45.076782542 
+0100
--- runtime/doc/channel.txt 2017-08-11 18:02:28.198366352 +0200
***
*** 1,4 
! *channel.txt*  For Vim version 8.0.  Last change: 2016 Oct 27
  
  
  VIM REFERENCE MANUALby Bram Moolenaar
--- 1,4 
! *channel.txt*  For Vim version 8.0.  Last change: 2017 Aug 11
  
  
  VIM REFERENCE MANUALby Bram Moolenaar
***
*** 375,381 
  ==
  6. Using a RAW or NL channel  *channel-raw*
  
! If mode is RAW or NL then a message can be send like this: >
  let response = ch_evalraw(channel, {string})
  
  The {string} is sent as-is.  The response will be what can be read from the
--- 375,381 
  ==
  6. Using a RAW or NL channel  *channel-raw*
  
! If mode is RAW or NL then a message can be sent like this: >
  let response = ch_evalraw(channel, {string})
  
  The {string} is sent as-is.  The response will be what can be read from the
***
*** 427,434 
  channels, an empty string for a RAW or NL channel.  You can use |ch_canread()|
  to check if there is something to read.
  
! Note that when there is no callback message are dropped.  To avoid that add a
! close callback to the channel.
  
  To read all output from a RAW channel that is available: >
let output = ch_readraw(channel)
--- 427,434 
  channels, an empty string for a RAW or NL channel.  You can use |ch_canread()|
  to check if there is something to read.
  
! Note that when there is no callback, messages are dropped.  To avoid that add
! a close callback to the channel.
  
  To read all output from a RAW channel that is available: >
let output = ch_readraw(channel)
***
*** 480,490 
  of a pipe causes the read end to get EOF).  To avoid this make the job sleep
  for a short while before it exits.
  
- Note that if the job exits before you read the output, the output may be lost.
- This depends on the system (on Unix this happens because closing the write end
- of a pipe causes the read end to get EOF).  To avoid this make the job sleep
- for a short while before it exits.
- 
  The handler defined for "out_cb" will not receive stderr.  If you want to
  handle that separately, add an "err_cb" handler: >
  let job = job_start(command, {"out_cb": "MyHandler",
--- 480,485 
***
*** 494,499 
--- 489,499 
  "callback" option: >
  let job = job_start(command, {"callback": "MyHandler"}) 
  
+ Depending on the system, starting a job can put Vim in the background, the
+ started job gets the focus.  To avoid that, use the `foreground()` function.
+ This might not always work when called early, put in the callback handler or
+ use a timer to call it after the job has started.
+ 
  You can send a message to the command with ch_evalraw().  If the channel is in
  JSON or JS mode you can use ch_evalexpr().
  
***
*** 518,524 
  and "in_bot" options.
  
  A special mode is when "in_top" is set to zero and "in_bot" is not set: Every
! time a line is added to the buffer, the last-but-one line will be send to the
  job stdin.  This allows for editing the last line and sending it when pressing
  Enter.
*channel-close-in*
--- 518,524 
  and "in_bot" options.
  
  A special mode is when "in_top" is set to zero and "in_bot" is not set: Every
! time a line is added to the buffer, the last-but-one line will be sent to the
  job stdin.  This allows for editing the last line and sending it when pressing
  Enter.
*channel-close-in*
***
*** 549,555 
  
  To start another process without creating a channel: >
  let job = job_start(command,
!   \ {"in_io": "null", "out_io": "null", "err_io": "null"})
  
  This starts {command} in the background, Vim does not wait for it to finish.
  
--- 549,555 
  
  To start another process without creating a channel: >
  let job = job_start(command,
!   \ {"in_io": "null", "out_io": "null", "err_io": "null"})
  
  This starts {command} in the background, Vim does not wait for it to finish.
  
***
*** 610,620 
*job-close_cb*
  "close_cb": handler   Callback for when the channel is closed.  Same as

Patch 8.0.0901

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0901
Problem:Asan suppress file missing from distribution.
Solution:   Add the file.
Files:  Filelist


*** ../vim-8.0.0900/Filelist2017-08-06 17:05:47.220142038 +0200
--- Filelist2017-08-11 17:13:55.959128511 +0200
***
*** 105,110 
--- 105,111 
src/testdir/Make_all.mak \
src/testdir/*.in \
src/testdir/*.py \
+   src/testdir/lsan-suppress.txt \
src/testdir/sautest/autoload/*.vim \
src/testdir/runtest.vim \
src/testdir/shared.vim \
*** ../vim-8.0.0900/src/version.c   2017-08-11 17:12:47.919619862 +0200
--- src/version.c   2017-08-11 17:54:45.985618719 +0200
***
*** 771,772 
--- 771,774 
  {   /* Add new patch number below this line */
+ /**/
+ 901,
  /**/

-- 
Any sufficiently advanced technology is indistinguishable from magic.
Arthur C. Clarke
Any sufficiently advanced bug is indistinguishable from a feature.
Rich Kulawiec

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Patch 8.0.0900

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0900
Problem::tab options doesn't open a new tab page. (Aviany)
Solution:   Support the :tab modifier. (closes #1960)
Files:  src/ex_cmds2.c, runtime/optwin.vim


*** ../vim-8.0.0899/src/ex_cmds2.c  2017-08-03 22:44:51.042797694 +0200
--- src/ex_cmds2.c  2017-08-11 16:58:55.797634249 +0200
***
*** 3749,3754 
--- 3749,3755 
  ex_options(
  exarg_T   *eap UNUSED)
  {
+ vim_setenv((char_u *)"OPTWIN_CMD", (char_u *)(cmdmod.tab ? "tab" : ""));
  cmd_source((char_u *)SYS_OPTWIN_FILE, NULL);
  }
  #endif
*** ../vim-8.0.0899/runtime/optwin.vim  2017-03-06 21:44:47.063429442 +0100
--- runtime/optwin.vim  2017-08-11 17:09:17.829138005 +0200
***
*** 1,20 
  " These commands create the option window.
  "
  " Maintainer: Bram Moolenaar 
! " Last Change:2017 Mar 06
  
  " If there already is an option window, jump to that one.
! if bufwinnr("option-window") > 0
!   let s:thiswin = winnr()
!   while 1
! if @% == "option-window"
finish
  endif
! wincmd w
! if s:thiswin == winnr()
!   break
! endif
!   endwhile
  endif
  
  " Make sure the '<' flag is not included in 'cpoptions', otherwise  would
--- 1,17 
  " These commands create the option window.
  "
  " Maintainer: Bram Moolenaar 
! " Last Change:2017 Aug 11
  
  " If there already is an option window, jump to that one.
! let buf = bufnr('option-window')
! if buf >= 0
!   let winids = win_findbuf(buf)
!   if len(winids) > 0
! if win_gotoid(winids[0]) == 1
finish
  endif
!   endif
  endif
  
  " Make sure the '<' flag is not included in 'cpoptions', otherwise  would
***
*** 141,148 
endif
  endwhile
  
! " Open the window
! new option-window
  setlocal ts=15 tw=0 noro buftype=nofile
  
  " Insert help and a "set" command for each option.
--- 138,145 
endif
  endwhile
  
! " Open the window.  $OPTWIN_CMD is set to "tab" for ":tab options".
! exe $OPTWIN_CMD . ' new option-window'
  setlocal ts=15 tw=0 noro buftype=nofile
  
  " Insert help and a "set" command for each option.
***
*** 506,511 
--- 503,516 
call append("$", "\t(local to window)")
call BinOptionL("crb")
  endif
+ if has("terminal")
+   call append("$", "termsize\tsize of a terminal window")
+   call append("$", "\t(local to window)")
+   call OptionL("tms")
+   call append("$", "termkey\tkey that precedes Vim commands in a terminal 
window")
+   call append("$", "\t(local to window)")
+   call OptionL("tk")
+ endif
  
  
  call Header("multiple tab pages")
***
*** 1296,1301 
--- 1301,1308 
  if has("viminfo")
call append("$", "viminfo\tlist that specifies what to write in the viminfo 
file")
call OptionG("vi", )
+   call append("$", "viminfofile\tfile name used for the viminfo file")
+   call OptionG("vif", )
  endif
  if has("quickfix")
call append("$", "bufhidden\twhat happens with a buffer when it's no longer 
in a window")
*** ../vim-8.0.0899/src/version.c   2017-08-11 16:31:50.329234432 +0200
--- src/version.c   2017-08-11 17:10:32.500598249 +0200
***
*** 771,772 
--- 771,774 
  {   /* Add new patch number below this line */
+ /**/
+ 900,
  /**/


-- 
Men may not be seen publicly in any kind of strapless gown.
[real standing law in Florida, United States of America]

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Patch 8.0.0899

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0899
Problem:Function name mch_stop_job() is confusing.
Solution:   Rename to mch_signal_job().
Files:  src/channel.c, src/os_unix.c, src/proto/os_unix.pro,
src/os_win32.c, src/proto/os_win32.pro, src/terminal.c


*** ../vim-8.0.0898/src/channel.c   2017-08-11 15:45:23.421118761 +0200
--- src/channel.c   2017-08-11 16:29:43.078150779 +0200
***
*** 4844,4850 
  
  for (job = first_job; job != NULL; job = job->jv_next)
if (job->jv_status == JOB_STARTED && job->jv_stoponexit != NULL)
!   mch_stop_job(job, job->jv_stoponexit);
  }
  
  /*
--- 4844,4850 
  
  for (job = first_job; job != NULL; job = job->jv_next)
if (job->jv_status == JOB_STARTED && job->jv_stoponexit != NULL)
!   mch_signal_job(job, job->jv_stoponexit);
  }
  
  /*
***
*** 5191,5197 
return 0;
  }
  ch_log(job->jv_channel, "Stopping job with '%s'", (char *)arg);
! if (mch_stop_job(job, arg) == FAIL)
return 0;
  
  /* Assume that only "kill" will kill the job. */
--- 5191,5197 
return 0;
  }
  ch_log(job->jv_channel, "Stopping job with '%s'", (char *)arg);
! if (mch_signal_job(job, arg) == FAIL)
return 0;
  
  /* Assume that only "kill" will kill the job. */
*** ../vim-8.0.0898/src/os_unix.c   2017-08-03 20:44:43.190297526 +0200
--- src/os_unix.c   2017-08-11 16:30:03.590003041 +0200
***
*** 5557,5563 
   * Return FAIL if "how" is not a valid name.
   */
  int
! mch_stop_job(job_T *job, char_u *how)
  {
  int   sig = -1;
  pid_t   job_pid;
--- 5557,5563 
   * Return FAIL if "how" is not a valid name.
   */
  int
! mch_signal_job(job_T *job, char_u *how)
  {
  int   sig = -1;
  pid_t   job_pid;
*** ../vim-8.0.0898/src/proto/os_unix.pro   2017-08-03 20:44:43.190297526 
+0200
--- src/proto/os_unix.pro   2017-08-11 16:30:54.005639968 +0200
***
*** 63,69 
  void mch_job_start(char **argv, job_T *job, jobopt_T *options);
  char *mch_job_status(job_T *job);
  job_T *mch_detect_ended_job(job_T *job_list);
! int mch_stop_job(job_T *job, char_u *how);
  void mch_clear_job(job_T *job);
  void mch_breakcheck(int force);
  int mch_expandpath(garray_T *gap, char_u *path, int flags);
--- 63,69 
  void mch_job_start(char **argv, job_T *job, jobopt_T *options);
  char *mch_job_status(job_T *job);
  job_T *mch_detect_ended_job(job_T *job_list);
! int mch_signal_job(job_T *job, char_u *how);
  void mch_clear_job(job_T *job);
  void mch_breakcheck(int force);
  int mch_expandpath(garray_T *gap, char_u *path, int flags);
*** ../vim-8.0.0898/src/os_win32.c  2017-08-07 21:17:53.115100890 +0200
--- src/os_win32.c  2017-08-11 16:30:07.373975788 +0200
***
*** 5248,5254 
   * Return FAIL if it didn't work.
   */
  int
! mch_stop_job(job_T *job, char_u *how)
  {
  int ret;
  
--- 5248,5254 
   * Return FAIL if it didn't work.
   */
  int
! mch_signal_job(job_T *job, char_u *how)
  {
  int ret;
  
*** ../vim-8.0.0898/src/proto/os_win32.pro  2017-08-03 20:44:43.190297526 
+0200
--- src/proto/os_win32.pro  2017-08-11 16:30:25.101848113 +0200
***
*** 45,51 
  void mch_job_start(char *cmd, job_T *job, jobopt_T *options);
  char *mch_job_status(job_T *job);
  job_T *mch_detect_ended_job(job_T *job_list);
! int mch_stop_job(job_T *job, char_u *how);
  void mch_clear_job(job_T *job);
  void mch_set_normal_colors(void);
  void mch_write(char_u *s, int len);
--- 45,51 
  void mch_job_start(char *cmd, job_T *job, jobopt_T *options);
  char *mch_job_status(job_T *job);
  job_T *mch_detect_ended_job(job_T *job_list);
! int mch_signal_job(job_T *job, char_u *how);
  void mch_clear_job(job_T *job);
  void mch_set_normal_colors(void);
  void mch_write(char_u *s, int len);
*** ../vim-8.0.0898/src/terminal.c  2017-08-11 16:24:46.312283924 +0200
--- src/terminal.c  2017-08-11 16:30:37.157761291 +0200
***
*** 1143,1149 
/* We don't know if the job can handle CTRL-C itself or not, this
 * may kill the shell instead of killing the command running in the
 * shell. */
!   mch_stop_job(curbuf->b_term->tl_job, (char_u *)"quit");
  #endif
  
if (c == (termkey == 0 ? Ctrl_W : termkey) || c == Ctrl_BSL)
--- 1143,1149 
/* We don't know if the job can handle CTRL-C itself or not, this
 * may kill the shell instead of killing the command running in the
 * shell. */
!   mch_signal_job(curbuf->b_term->tl_job, (char_u *)"quit");
  #endif
  
if (c == (termkey == 0 ? Ctrl_W : termkey) || c == Ctrl_BSL)
***
*** 2735,2741 
break;
}
if (part < PART_COUNT && mch_report_winsize(fd, rows, cols) == OK)
!   mch_stop_job(term->tl_job, (char_u *)"winch");
  }
  }
  
--- 2735,2741 

Patch 8.0.0898

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0898
Problem:Can't use the alternate screen in a terminal window.
Solution:   Initialze the alternate screen. (Yasuhiro Matsumoto, closes
#1957)  Add term_getaltscreen().
Files:  src/libvterm/include/vterm.h, src/terminal.c,
src/proto/terminal.pro, src/evalfunc.c, runtime/doc/eval.txt


*** ../vim-8.0.0897/src/libvterm/include/vterm.h2017-07-28 
17:04:11.778241455 +0200
--- src/libvterm/include/vterm.h2017-08-11 16:07:12.671839872 +0200
***
*** 188,193 
--- 188,195 
  void vterm_keyboard_end_paste(VTerm *vt);
  
  void vterm_mouse_move(VTerm *vt, int row, int col, VTermModifier mod);
+ /* "button" is 1 for left, 2 for middle, 3 for right.
+  * Button 4 is scroll wheel down, button 5 is scroll wheel up. */
  void vterm_mouse_button(VTerm *vt, int button, int pressed, VTermModifier 
mod);
  
  /* 
***
*** 302,307 
--- 304,312 
int (*settermprop)(VTermProp prop, VTermValue *val, void *user);
int (*bell)(void *user);
int (*resize)(int rows, int cols, void *user);
+   /* A line was pushed off the top of the window.
+* "cells[cols]" contains the cells of that line.
+* Return value is unused. */
int (*sb_pushline)(int cols, const VTermScreenCell *cells, void *user);
int (*sb_popline)(int cols, VTermScreenCell *cells, void *user);
  } VTermScreenCallbacks;
***
*** 320,325 
--- 325,333 
  void  vterm_screen_set_unrecognised_fallbacks(VTermScreen *screen, const 
VTermParserCallbacks *fallbacks, void *user);
  void *vterm_screen_get_unrecognised_fbdata(VTermScreen *screen);
  
+ /* Enable support for using the alternate screen if "altscreen" is non-zero.
+  * Before that switching to the alternate screen won't work.
+  * Calling with "altscreen" zero has no effect. */
  void vterm_screen_enable_altscreen(VTermScreen *screen, int altscreen);
  
  typedef enum {
*** ../vim-8.0.0897/src/terminal.c  2017-08-10 23:15:15.002851689 +0200
--- src/terminal.c  2017-08-11 16:10:21.878500160 +0200
***
*** 146,151 
--- 146,153 
  
  VTermPos  tl_cursor_pos;
  int   tl_cursor_visible;
+ 
+ int   tl_using_altscreen;
  };
  
  #define TMODE_ONCE 1  /* CTRL-\ CTRL-N used */
***
*** 1316,1321 
--- 1318,1328 
out_flush();
break;
  
+   case VTERM_PROP_ALTSCREEN:
+   /* TODO: do anything else? */
+   term->tl_using_altscreen = value->boolean;
+   break;
+ 
default:
break;
  }
***
*** 1865,1870 
--- 1872,1880 
  
  /* Required to initialize most things. */
  vterm_screen_reset(screen, 1 /* hard */);
+ 
+ /* Allow using alternate screen. */
+ vterm_screen_enable_altscreen(screen, 1);
  }
  
  /*
***
*** 1939,1944 
--- 1949,1967 
  }
  
  /*
+  * "term_getaltscreen(buf)" function
+  */
+ void
+ f_term_getaltscreen(typval_T *argvars, typval_T *rettv)
+ {
+ buf_T *buf = term_get_buf(argvars);
+ 
+ if (buf == NULL)
+   return;
+ rettv->vval.v_number = buf->b_term->tl_using_altscreen;
+ }
+ 
+ /*
   * "term_getattr(attr, name)" function
   */
  void
*** ../vim-8.0.0897/src/proto/terminal.pro  2017-08-08 23:06:40.850032268 
+0200
--- src/proto/terminal.pro  2017-08-11 16:10:25.966470715 +0200
***
*** 17,22 
--- 17,23 
  int term_get_attr(buf_T *buf, linenr_T lnum, int col);
  char_u *term_get_status_text(term_T *term);
  int set_ref_in_term(int copyID);
+ void f_term_getaltscreen(typval_T *argvars, typval_T *rettv);
  void f_term_getattr(typval_T *argvars, typval_T *rettv);
  void f_term_getcursor(typval_T *argvars, typval_T *rettv);
  void f_term_getjob(typval_T *argvars, typval_T *rettv);
*** ../vim-8.0.0897/src/evalfunc.c  2017-08-08 23:06:40.854032239 +0200
--- src/evalfunc.c  2017-08-11 16:10:47.630314685 +0200
***
*** 831,836 
--- 831,837 
  #endif
  {"tempname",  0, 0, f_tempname},
  #ifdef FEAT_TERMINAL
+ {"term_getaltscreen", 1, 1, f_term_getaltscreen},
  {"term_getattr",  2, 2, f_term_getattr},
  {"term_getcursor",1, 1, f_term_getcursor},
  {"term_getjob",   1, 1, f_term_getjob},
*** ../vim-8.0.0897/runtime/doc/eval.txt2017-08-10 23:15:14.998851718 
+0200
--- runtime/doc/eval.txt2017-08-11 16:12:49.601436457 +0200
***
*** 1,4 
! *eval.txt*For Vim version 8.0.  Last change: 2016 Nov 04
  
  
  VIM REFERENCE MANUALby Bram Moolenaar
--- 1,4 
! *eval.txt*For Vim version 8.0.  Last change: 2017 Aug 11
  
  
  VIM REFERENCE MANUALby Bram Moolenaar
***
*** 1815,1821 
hit-enter prompt.
  
*v:servername* *servername-variable*
! v:servername  The resulting registered |x11-clientserver| name if any.
   

Patch 8.0.0897

2017-08-11 Fir de Conversatie Bram Moolenaar

Patch 8.0.0897 (after 8.0.0896)
Problem:Wrong error message for invalid term_finish value
Solution:   Pass the right argument to emsg().
Files:  src/channel.c


*** ../vim-8.0.0896/src/channel.c   2017-08-10 23:15:15.002851689 +0200
--- src/channel.c   2017-08-11 15:42:05.814521786 +0200
***
*** 4426,4432 
val = get_tv_string(item);
if (STRCMP(val, "open") != 0 && STRCMP(val, "close") != 0)
{
!   EMSG2(_(e_invarg2), "drop");
return FAIL;
}
opt->jo_set2 |= JO2_TERM_FINISH;
--- 4426,4432 
val = get_tv_string(item);
if (STRCMP(val, "open") != 0 && STRCMP(val, "close") != 0)
{
!   EMSG2(_(e_invarg2), val);
return FAIL;
}
opt->jo_set2 |= JO2_TERM_FINISH;
*** ../vim-8.0.0896/src/version.c   2017-08-10 23:15:15.002851689 +0200
--- src/version.c   2017-08-11 15:45:16.361168875 +0200
***
*** 771,772 
--- 771,774 
  {   /* Add new patch number below this line */
+ /**/
+ 897,
  /**/

-- 
It is illegal for anyone to try and stop a child from playfully jumping over
puddles of water.
[real standing law in California, United States of America]

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [vim/vim] Broken syntax in tex when defining custom math column type (#984)

2017-08-11 Fir de Conversatie James Womack
On Wednesday, 14 December 2016 10:43:05 UTC, Anselm Haak  wrote:
> I just had the same problem as Bart Baker. When adding tabularx, the given 
> example produces the error (and can be compiled):
> 
> ### Minimal working example
> 
> ```tex
> \documentclass{scrartcl}
> 
> \usepackage{tabularx}
> 
> \begin{document}
> 
> \newcolumntype{L}{>{$}c<{$}}
> 
> This text is highlighted as if it was in mathmode, probably due to the wrong 
> nesting of curly brackets and dollar signs within the newcolumntype command.
> 
> \end{document}
> ```

Hi,

I also encountered this issue using the array package and defining a new column 
type as follows:

\newcolumntype{C}[1]{>{\hfil$} p{#1} <{$\hfil}}

I found a workaround, though. If you use the LaTeX syntax for inline math 
environment \( ... \) instead of $ ... $ then the syntax highlighting for the 
document that follows is correct, i.e.

\newcolumntype{C}[1]{>{\hfil\(} p{#1} <{\)\hfil}}

Hope this helps!

James

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.