[vim] - patchlevel 397

Karsten Hopp karsten at fedoraproject.org
Tue Aug 12 08:48:12 UTC 2014


commit 5d6b092d919d146e335db95f887300a9cc76f3df
Author: Karsten Hopp <karsten at redhat.com>
Date:   Tue Aug 12 10:46:24 2014 +0200

    - patchlevel 397

 7.4.397 |  150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 150 insertions(+), 0 deletions(-)
---
diff --git a/7.4.397 b/7.4.397
new file mode 100644
index 0000000..4d70ca6
--- /dev/null
+++ b/7.4.397
@@ -0,0 +1,150 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.4.397
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.397
+Problem:    Matchparen only uses the topmost syntax item.
+Solution:   Go through the syntax stack to find items. (James McCoy)
+            Also use getcurpos() when possible.
+Files:      runtime/plugin/matchparen.vim
+
+
+*** ../vim-7.4.396/runtime/plugin/matchparen.vim	2014-06-17 17:48:21.772628007 +0200
+--- runtime/plugin/matchparen.vim	2014-08-06 19:02:04.967128364 +0200
+***************
+*** 1,6 ****
+  " Vim plugin for showing matching parens
+  " Maintainer:  Bram Moolenaar <Bram at vim.org>
+! " Last Change: 2014 Jun 17
+  
+  " Exit quickly when:
+  " - this plugin was already loaded (or disabled)
+--- 1,6 ----
+  " Vim plugin for showing matching parens
+  " Maintainer:  Bram Moolenaar <Bram at vim.org>
+! " Last Change: 2014 Jul 19
+  
+  " Exit quickly when:
+  " - this plugin was already loaded (or disabled)
+***************
+*** 54,67 ****
+    let c_col = col('.')
+    let before = 0
+  
+!   let c = getline(c_lnum)[c_col - 1]
+    let plist = split(&matchpairs, '.\zs[:,]')
+    let i = index(plist, c)
+    if i < 0
+      " not found, in Insert mode try character before the cursor
+      if c_col > 1 && (mode() == 'i' || mode() == 'R')
+        let before = 1
+!       let c = getline(c_lnum)[c_col - 2]
+        let i = index(plist, c)
+      endif
+      if i < 0
+--- 54,68 ----
+    let c_col = col('.')
+    let before = 0
+  
+!   let text = getline(c_lnum)
+!   let c = text[c_col - 1]
+    let plist = split(&matchpairs, '.\zs[:,]')
+    let i = index(plist, c)
+    if i < 0
+      " not found, in Insert mode try character before the cursor
+      if c_col > 1 && (mode() == 'i' || mode() == 'R')
+        let before = 1
+!       let c = text[c_col - 2]
+        let i = index(plist, c)
+      endif
+      if i < 0
+***************
+*** 87,100 ****
+    " Find the match.  When it was just before the cursor move it there for a
+    " moment.
+    if before > 0
+!     let save_cursor = winsaveview()
+      call cursor(c_lnum, c_col - before)
+    endif
+  
+!   " When not in a string or comment ignore matches inside them.
+    " We match "escape" for special items, such as lispEscapeSpecial.
+!   let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' .
+! 	\ '=~?  "string\\|character\\|singlequote\\|escape\\|comment"'
+    execute 'if' s_skip '| let s_skip = 0 | endif'
+  
+    " Limit the search to lines visible in the window.
+--- 88,114 ----
+    " Find the match.  When it was just before the cursor move it there for a
+    " moment.
+    if before > 0
+!     let has_getcurpos = exists("*getcurpos")
+!     if has_getcurpos
+!       " getcurpos() is more efficient but doesn't exist before 7.4.313.
+!       let save_cursor = getcurpos()
+!     else
+!       let save_cursor = winsaveview()
+!     endif
+      call cursor(c_lnum, c_col - before)
+    endif
+  
+!   " Build an expression that detects whether the current cursor position is in
+!   " certain syntax types (string, comment, etc.), for use as searchpairpos()'s
+!   " skip argument.
+    " We match "escape" for special items, such as lispEscapeSpecial.
+!   let s_skip = '!empty(filter(map(synstack(line("."), col(".")), ''synIDattr(v:val, "name")''), ' .
+! 	\ '''v:val =~? "string\\|character\\|singlequote\\|escape\\|comment"''))'
+!   " If executing the expression determines that the cursor is currently in
+!   " one of the syntax types, then we want searchpairpos() to find the pair
+!   " within those syntax types (i.e., not skip).  Otherwise, the cursor is
+!   " outside of the syntax types and s_skip should keep its value so we skip any
+!   " matching pair inside the syntax types.
+    execute 'if' s_skip '| let s_skip = 0 | endif'
+  
+    " Limit the search to lines visible in the window.
+***************
+*** 147,153 ****
+    endtry
+  
+    if before > 0
+!     call winrestview(save_cursor)
+    endif
+  
+    " If a match is found setup match highlighting.
+--- 161,171 ----
+    endtry
+  
+    if before > 0
+!     if has_getcurpos
+!       call setpos('.', save_cursor)
+!     else
+!       call winrestview(save_cursor)
+!     endif
+    endif
+  
+    " If a match is found setup match highlighting.
+*** ../vim-7.4.396/src/version.c	2014-08-06 18:17:03.475147780 +0200
+--- src/version.c	2014-08-06 19:06:44.627126354 +0200
+***************
+*** 743,744 ****
+--- 743,746 ----
+  {   /* Add new patch number below this line */
++ /**/
++     397,
+  /**/
+
+-- 
+Often you're less important than your furniture.  If you think about it, you
+can get fired but your furniture stays behind, gainfully employed at the
+company that didn't need _you_ anymore.
+				(Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram at 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    ///


More information about the scm-commits mailing list