diff runtime/pack/dist/opt/termdebug/plugin/termdebug.vim @ 26100:babd9f1dbe12

Update runtime files Commit: https://github.com/vim/vim/commit/113cb513f76d8866cbb6dc85fa18aded753e01da Author: Bram Moolenaar <Bram@vim.org> Date: Sun Nov 7 20:27:04 2021 +0000 Update runtime files
author Bram Moolenaar <Bram@vim.org>
date Sun, 07 Nov 2021 21:30:10 +0100
parents d4faa2c5211b
children 624439a39432
line wrap: on
line diff
--- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
+++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
@@ -2,7 +2,7 @@
 "
 " Author: Bram Moolenaar
 " Copyright: Vim license applies, see ":help license"
-" Last Change: 2021 Aug 23
+" Last Change: 2021 Oct 26
 "
 " WORK IN PROGRESS - Only the basics work
 " Note: On MS-Windows you need a recent version of gdb.  The one included with
@@ -534,7 +534,7 @@ func s:GdbOutCallback(channel, text)
   if a:text == '(gdb) ' || a:text == '^done' || a:text[0] == '&'
     return
   endif
-  if a:text =~ '^^error,msg='
+  if a:text =~ '^\^error,msg='
     let text = s:DecodeMessage(a:text[11:])
     if exists('s:evalexpr') && text =~ 'A syntax error in expression, near\|No symbol .* in current context'
       " Silently drop evaluation errors.
@@ -736,9 +736,9 @@ func s:HandleDisasmMsg(msg)
   else
     let value = substitute(a:msg, '^\~\"[ ]*', '', '')
     let value = substitute(value, '^=>[ ]*', '', '')
-    let value = substitute(value, '\\n\"
$', '', '')
+    let value = substitute(value, '\\n\"\r$', '', '')
     let value = substitute(value, '\\n\"$', '', '')
-    let value = substitute(value, '
', '', '')
+    let value = substitute(value, '\r', '', '')
     let value = substitute(value, '\\t', ' ', 'g')
 
     if value != '' || !empty(s:asm_lines)
@@ -982,8 +982,22 @@ func s:Run(args)
 endfunc
 
 func s:SendEval(expr)
-  call s:SendCommand('-data-evaluate-expression "' . a:expr . '"')
-  let s:evalexpr = a:expr
+  " clean up expression that may got in because of range
+  " (newlines and surrounding spaces)
+  let expr = a:expr
+  if &filetype ==# 'cobol'
+    " extra cleanup for COBOL: _every: expression ends with a period,
+    " a trailing comma is ignored as it commonly separates multiple expr.
+    let expr = substitute(expr, '\..*', '', '')
+    let expr = substitute(expr, '[;\n]', ' ', 'g')
+    let expr = substitute(expr, ',*$', '', '')
+  else
+    let expr = substitute(expr, '\n', ' ', 'g')
+  endif
+  let expr = substitute(expr, '^ *\(.*\) *', '\1', '')
+
+  call s:SendCommand('-data-evaluate-expression "' . expr . '"')
+  let s:evalexpr = expr
 endfunc
 
 " :Evaluate - evaluate what is under the cursor
@@ -1058,7 +1072,8 @@ func s:HandleError(msg)
     let s:evalFromBalloonExpr = 0
     return
   endif
-  echoerr substitute(a:msg, '.*msg="\(.*\)"', '\1', '')
+  let msgVal = substitute(a:msg, '.*msg="\(.*\)"', '\1', '')
+  echoerr substitute(msgVal, '\\"', '"', 'g')
 endfunc
 
 func s:GotoSourcewinOrCreateIt()