From 94409348adfdd10a8266d2435d8f84dd99eb0f6b Mon Sep 17 00:00:00 2001 From: harriszh Date: Sun, 15 Jul 2018 00:23:58 +0800 Subject: [PATCH 01/16] initial version --- README | 16 ------------ README.md | 26 +++++++++++++++++++ .../systemverilog_emacsauto.vim | 14 +++++----- 3 files changed, 34 insertions(+), 22 deletions(-) delete mode 100644 README create mode 100644 README.md rename ftplugin/verilog_emacsauto.vim => plugin/systemverilog_emacsauto.vim (87%) mode change 100644 => 100755 diff --git a/README b/README deleted file mode 100644 index bfc7893..0000000 --- a/README +++ /dev/null @@ -1,16 +0,0 @@ -This is a mirror of http://www.vim.org/scripts/script.php?script_id=1875 - -Two emacs verilog-mode functions are mapped. -\a expands all the verilog-mode autos (similar to C-c C-a in emacs). -\d collapses all the verilog-mode autos (similar to C-c C-d in emacs). - -Previously if I wanted to update verilog-mode autos, I would - save and quit vim - fire up emacs - do the auto commands - save and close emacs - fire up vim. -And in doing so, I would lose all the edit history in vim. -With this I can just type \a and keep all the previous edit history for undos. - -This is my first attempt at writing a vim plugin. Code should be simple enough for an average Verilog user to take and fix/enhance according to needs. Doing :he plugin, :he write-plugin, or :he plugin-details should reveal how simple this really is. diff --git a/README.md b/README.md new file mode 100644 index 0000000..628eaec --- /dev/null +++ b/README.md @@ -0,0 +1,26 @@ +# verilog_emacsauto + +## Introduction +This is one improved version of [original verilog mode](https://github.com/vim-scripts/verilog_emacsauto.vim) +There are several issues in origional version: +- doesn't work on windows +- need enter "any key" twice to continue +- doesn't work for systemverilog + +## Installation + +### vim-plug +```vimscript +Plug 'zhuzhzh/verilog_emacsauto.vim', {'for': ['verilog', 'systemverilog'] } +``` + +### Vundle +```vimscript +Plugin 'zhuzhzh/verilog_emacsauto.vim' +``` + +## Feature +Two emacs verilog-mode functions are mapped. +a expands all the verilog-mode autos (similar to C-c C-a in emacs). +d collapses all the verilog-mode autos (similar to C-c C-d in emacs). + diff --git a/ftplugin/verilog_emacsauto.vim b/plugin/systemverilog_emacsauto.vim old mode 100644 new mode 100755 similarity index 87% rename from ftplugin/verilog_emacsauto.vim rename to plugin/systemverilog_emacsauto.vim index 66e2484..8712de1 --- a/ftplugin/verilog_emacsauto.vim +++ b/plugin/systemverilog_emacsauto.vim @@ -47,13 +47,14 @@ function s:Add() " a tmp file is need 'cause emacs doesn't support the stdin to stdout flow " maybe add /tmp to the temporary filename w! %.emacsautotmp - !emacs -batch -l ~/elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-auto - %!cat %.emacsautotmp + exec 'silent !emacs -batch -l ~/.elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-auto' + exec 'silent %!cat %.emacsautotmp ' if &expandtab retab let &tabstop=s:save_tabstop endif - !rm %.emacsautotmp + exec 'silent !rm %.emacsautotmp' + exec 'redraw!' endfunction " Delete function @@ -65,9 +66,10 @@ function s:Delete() " a tmp file is need 'cause emacs doesn't support the stdin to stdout flow " maybe add /tmp to the temporary filename w! %.emacsautotmp - !emacs -batch -l ~/elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-delete-auto - %!cat %.emacsautotmp - !rm %.emacsautotmp + exec 'silent !emacs -batch -l ~/.elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-delete-auto' + exec 'silent %!cat %.emacsautotmp' + exec 'silent !rm %.emacsautotmp' + exec 'redraw!' endfunction " VerilogEmacsAutoFoldLevel function From c91a0ccc3d3449282724973df0828fb36fc05e83 Mon Sep 17 00:00:00 2001 From: harriszh Date: Sun, 15 Jul 2018 00:25:59 +0800 Subject: [PATCH 02/16] fix \< issue --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 628eaec..6f5c7b4 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,6 @@ Plugin 'zhuzhzh/verilog_emacsauto.vim' ## Feature Two emacs verilog-mode functions are mapped. -a expands all the verilog-mode autos (similar to C-c C-a in emacs). -d collapses all the verilog-mode autos (similar to C-c C-d in emacs). +\a expands all the verilog-mode autos (similar to C-c C-a in emacs). +\d collapses all the verilog-mode autos (similar to C-c C-d in emacs). From ce33d2ce66cc908b27bb5784db23d8d42d8d6c8d Mon Sep 17 00:00:00 2001 From: harriszh Date: Sun, 15 Jul 2018 00:26:56 +0800 Subject: [PATCH 03/16] fix \< issue --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6f5c7b4..6a452ed 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,6 @@ Plugin 'zhuzhzh/verilog_emacsauto.vim' ## Feature Two emacs verilog-mode functions are mapped. -\a expands all the verilog-mode autos (similar to C-c C-a in emacs). -\d collapses all the verilog-mode autos (similar to C-c C-d in emacs). +- \a expands all the verilog-mode autos (similar to C-c C-a in emacs). +- \d collapses all the verilog-mode autos (similar to C-c C-d in emacs). From 3cb25e3d1746ddb73f97c6e4150ae94c58223310 Mon Sep 17 00:00:00 2001 From: harriszh Date: Sun, 15 Jul 2018 00:35:09 +0800 Subject: [PATCH 04/16] description for windows --- README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/README.md b/README.md index 6a452ed..b0dcdf4 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,31 @@ Plug 'zhuzhzh/verilog_emacsauto.vim', {'for': ['verilog', 'systemverilog'] } Plugin 'zhuzhzh/verilog_emacsauto.vim' ``` +## Windows +In order to work on windows, you need to install unix bins for windows. +Actually, git-for-windows already contains it. +Please add the path like D:\Git\usr\bin to system variable PATH +The bin path including emacs also needs to be added to PATH +if it still doesn't work , please consider to use the absolute path. +```vimscript +function s:Add() + if &expandtab + let s:save_tabstop = &tabstop + let &tabstop=8 + endif + " a tmp file is need 'cause emacs doesn't support the stdin to stdout flow + " maybe add /tmp to the temporary filename + w! %.emacsautotmp + !"D:\Program Files\emacs\bin\emacs.exe" -batch -l "D:\Program Files\emacs\share\emacs\site-lisp\verilog-mode.el" %.emacsautotmp -f verilog-batch-auto + %!"D:\Git\usr\bin\cat.exe" %.emacsautotmp + if &expandtab + retab + let &tabstop=s:save_tabstop + endif + !"D:\Git\usr\bin\rm.exe" %.emacsautotmp +endfunction +``` + ## Feature Two emacs verilog-mode functions are mapped. - \a expands all the verilog-mode autos (similar to C-c C-a in emacs). From 804a458a08a71ebcf5afe3b9bb00174703415969 Mon Sep 17 00:00:00 2001 From: harriszh Date: Tue, 28 Aug 2018 08:24:44 +0800 Subject: [PATCH 05/16] Update systemverilog_emacsauto.vim --- plugin/systemverilog_emacsauto.vim | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugin/systemverilog_emacsauto.vim b/plugin/systemverilog_emacsauto.vim index 8712de1..5357828 100755 --- a/plugin/systemverilog_emacsauto.vim +++ b/plugin/systemverilog_emacsauto.vim @@ -1,6 +1,7 @@ " Vim filetype plugin for using emacs verilog-mode -" Last Change: 2007 August 29 -" Maintainer: Seong Kang +" Last Change: 2018 August 28 +" Origin Author: Seong Kang +" New Author: Harris Zhu " License: This file is placed in the public domain. " comment out these two lines From ef4c5ecf883c877acfb3458cb9aa7e9885dda45c Mon Sep 17 00:00:00 2001 From: harriszh Date: Tue, 28 Aug 2018 14:25:03 +0800 Subject: [PATCH 06/16] Update systemverilog_emacsauto.vim --- plugin/systemverilog_emacsauto.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/systemverilog_emacsauto.vim b/plugin/systemverilog_emacsauto.vim index 5357828..081cd46 100755 --- a/plugin/systemverilog_emacsauto.vim +++ b/plugin/systemverilog_emacsauto.vim @@ -1,7 +1,7 @@ " Vim filetype plugin for using emacs verilog-mode " Last Change: 2018 August 28 " Origin Author: Seong Kang -" New Author: Harris Zhu +" Author: Harris Zhu " License: This file is placed in the public domain. " comment out these two lines From 3d0e4c382dfdb9c9aadf6c4eee624773aee79d84 Mon Sep 17 00:00:00 2001 From: KyleJeong <39640360+KyleJeong@users.noreply.github.com> Date: Tue, 19 May 2020 10:07:10 +0900 Subject: [PATCH 07/16] change ~/.elisp to ~/elisp to support Windows --- plugin/systemverilog_emacsauto.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin/systemverilog_emacsauto.vim b/plugin/systemverilog_emacsauto.vim index 081cd46..3c135b9 100755 --- a/plugin/systemverilog_emacsauto.vim +++ b/plugin/systemverilog_emacsauto.vim @@ -48,7 +48,7 @@ function s:Add() " a tmp file is need 'cause emacs doesn't support the stdin to stdout flow " maybe add /tmp to the temporary filename w! %.emacsautotmp - exec 'silent !emacs -batch -l ~/.elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-auto' + exec 'silent !emacs -batch -l ~/elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-auto' exec 'silent %!cat %.emacsautotmp ' if &expandtab retab @@ -67,7 +67,7 @@ function s:Delete() " a tmp file is need 'cause emacs doesn't support the stdin to stdout flow " maybe add /tmp to the temporary filename w! %.emacsautotmp - exec 'silent !emacs -batch -l ~/.elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-delete-auto' + exec 'silent !emacs -batch -l ~/elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-delete-auto' exec 'silent %!cat %.emacsautotmp' exec 'silent !rm %.emacsautotmp' exec 'redraw!' From 9ee59e65422ad8fc427c41cc493ecd4e6e204f3f Mon Sep 17 00:00:00 2001 From: KyleJeong <39640360+KyleJeong@users.noreply.github.com> Date: Tue, 19 May 2020 11:10:08 +0900 Subject: [PATCH 08/16] Windows Support --- plugin/systemverilog_emacsauto.vim | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/plugin/systemverilog_emacsauto.vim b/plugin/systemverilog_emacsauto.vim index 3c135b9..393a6dc 100755 --- a/plugin/systemverilog_emacsauto.vim +++ b/plugin/systemverilog_emacsauto.vim @@ -48,7 +48,13 @@ function s:Add() " a tmp file is need 'cause emacs doesn't support the stdin to stdout flow " maybe add /tmp to the temporary filename w! %.emacsautotmp - exec 'silent !emacs -batch -l ~/elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-auto' + if g:env =~ 'WINDOWS' + l:scrpt = 'silent !emacs -batch -l ' + expand("$HOME/.elisp") + 'verilog-mode.el %.emacsautotmp -f verilog-batch-auto' + exec l:scrpt + else + exec 'silent !emacs -batch -l ~/.elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-auto' + endif + exec 'silent %!cat %.emacsautotmp ' if &expandtab retab @@ -67,7 +73,12 @@ function s:Delete() " a tmp file is need 'cause emacs doesn't support the stdin to stdout flow " maybe add /tmp to the temporary filename w! %.emacsautotmp - exec 'silent !emacs -batch -l ~/elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-delete-auto' + if g:env =~ 'WINDOWS' + l:scrpt = 'silent !emacs -batch -l ' + expand("$HOME/.elisp") + 'verilog-mode.el %.emacsautotmp -f verilog-delete-auto' + exec l:scrpt + else + exec 'silent !emacs -batch -l ~/.elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-delete-auto' + endif exec 'silent %!cat %.emacsautotmp' exec 'silent !rm %.emacsautotmp' exec 'redraw!' From c6024aa7315743c3bafcf3adeb07cebded97deac Mon Sep 17 00:00:00 2001 From: KyleJeong <39640360+KyleJeong@users.noreply.github.com> Date: Tue, 19 May 2020 11:13:41 +0900 Subject: [PATCH 09/16] Update systemverilog_emacsauto.vim --- plugin/systemverilog_emacsauto.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin/systemverilog_emacsauto.vim b/plugin/systemverilog_emacsauto.vim index 393a6dc..81ebf08 100755 --- a/plugin/systemverilog_emacsauto.vim +++ b/plugin/systemverilog_emacsauto.vim @@ -49,7 +49,7 @@ function s:Add() " maybe add /tmp to the temporary filename w! %.emacsautotmp if g:env =~ 'WINDOWS' - l:scrpt = 'silent !emacs -batch -l ' + expand("$HOME/.elisp") + 'verilog-mode.el %.emacsautotmp -f verilog-batch-auto' + l:scrpt = 'silent !emacs -batch -l '.expand("$HOME/.elisp").'verilog-mode.el %.emacsautotmp -f verilog-batch-auto' exec l:scrpt else exec 'silent !emacs -batch -l ~/.elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-auto' @@ -74,7 +74,7 @@ function s:Delete() " maybe add /tmp to the temporary filename w! %.emacsautotmp if g:env =~ 'WINDOWS' - l:scrpt = 'silent !emacs -batch -l ' + expand("$HOME/.elisp") + 'verilog-mode.el %.emacsautotmp -f verilog-delete-auto' + l:scrpt = 'silent !emacs -batch -l '.expand("$HOME/.elisp").'verilog-mode.el %.emacsautotmp -f verilog-delete-auto' exec l:scrpt else exec 'silent !emacs -batch -l ~/.elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-delete-auto' From a635a6de1f4f5ba704b3a3bf3c8096310eda52f3 Mon Sep 17 00:00:00 2001 From: KyleJeong <39640360+KyleJeong@users.noreply.github.com> Date: Tue, 19 May 2020 11:28:48 +0900 Subject: [PATCH 10/16] Update systemverilog_emacsauto.vim --- plugin/systemverilog_emacsauto.vim | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugin/systemverilog_emacsauto.vim b/plugin/systemverilog_emacsauto.vim index 81ebf08..796fc1d 100755 --- a/plugin/systemverilog_emacsauto.vim +++ b/plugin/systemverilog_emacsauto.vim @@ -13,6 +13,7 @@ if exists("loaded_verilog_emacsauto") finish endif let loaded_verilog_emacsauto = 1 +let s:is_win = has('win32') " map \a, \d pair to Add and Delete functions, assuming \ is the leader " alternatively, map C-A, C-D to Add and Delete functions @@ -48,7 +49,7 @@ function s:Add() " a tmp file is need 'cause emacs doesn't support the stdin to stdout flow " maybe add /tmp to the temporary filename w! %.emacsautotmp - if g:env =~ 'WINDOWS' + if s:is_win l:scrpt = 'silent !emacs -batch -l '.expand("$HOME/.elisp").'verilog-mode.el %.emacsautotmp -f verilog-batch-auto' exec l:scrpt else @@ -73,7 +74,7 @@ function s:Delete() " a tmp file is need 'cause emacs doesn't support the stdin to stdout flow " maybe add /tmp to the temporary filename w! %.emacsautotmp - if g:env =~ 'WINDOWS' + if s:is_win l:scrpt = 'silent !emacs -batch -l '.expand("$HOME/.elisp").'verilog-mode.el %.emacsautotmp -f verilog-delete-auto' exec l:scrpt else From df2cfeb26df51a8b60a0ae466795d331288e0119 Mon Sep 17 00:00:00 2001 From: KyleJeong <39640360+KyleJeong@users.noreply.github.com> Date: Tue, 19 May 2020 11:55:53 +0900 Subject: [PATCH 11/16] Update systemverilog_emacsauto.vim --- plugin/systemverilog_emacsauto.vim | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugin/systemverilog_emacsauto.vim b/plugin/systemverilog_emacsauto.vim index 796fc1d..010106f 100755 --- a/plugin/systemverilog_emacsauto.vim +++ b/plugin/systemverilog_emacsauto.vim @@ -50,8 +50,8 @@ function s:Add() " maybe add /tmp to the temporary filename w! %.emacsautotmp if s:is_win - l:scrpt = 'silent !emacs -batch -l '.expand("$HOME/.elisp").'verilog-mode.el %.emacsautotmp -f verilog-batch-auto' - exec l:scrpt + let b:scrpt = 'silent !emacs -batch -l '.expand("$HOME/.elisp/").'verilog-mode.el %.emacsautotmp -f verilog-batch-auto' + exec b:scrpt else exec 'silent !emacs -batch -l ~/.elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-auto' endif @@ -75,8 +75,8 @@ function s:Delete() " maybe add /tmp to the temporary filename w! %.emacsautotmp if s:is_win - l:scrpt = 'silent !emacs -batch -l '.expand("$HOME/.elisp").'verilog-mode.el %.emacsautotmp -f verilog-delete-auto' - exec l:scrpt + b:scrpt = 'silent !emacs -batch -l '.expand("$HOME/.elisp/").'verilog-mode.el %.emacsautotmp -f verilog-delete-auto' + exec b:scrpt else exec 'silent !emacs -batch -l ~/.elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-delete-auto' endif From 545ec7e8329a81d398bf01a9a79556ec164cca53 Mon Sep 17 00:00:00 2001 From: KyleJeong <39640360+KyleJeong@users.noreply.github.com> Date: Tue, 19 May 2020 12:23:45 +0900 Subject: [PATCH 12/16] Update systemverilog_emacsauto.vim --- plugin/systemverilog_emacsauto.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/systemverilog_emacsauto.vim b/plugin/systemverilog_emacsauto.vim index 010106f..38aea0a 100755 --- a/plugin/systemverilog_emacsauto.vim +++ b/plugin/systemverilog_emacsauto.vim @@ -75,7 +75,7 @@ function s:Delete() " maybe add /tmp to the temporary filename w! %.emacsautotmp if s:is_win - b:scrpt = 'silent !emacs -batch -l '.expand("$HOME/.elisp/").'verilog-mode.el %.emacsautotmp -f verilog-delete-auto' + let b:scrpt = 'silent !emacs -batch -l '.expand("$HOME/.elisp/").'verilog-mode.el %.emacsautotmp -f verilog-delete-auto' exec b:scrpt else exec 'silent !emacs -batch -l ~/.elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-delete-auto' From 24b5c5b257fd56b9e78a33ebe412c80d1b6ccaf5 Mon Sep 17 00:00:00 2001 From: KyleJeong <39640360+KyleJeong@users.noreply.github.com> Date: Tue, 19 May 2020 12:36:17 +0900 Subject: [PATCH 13/16] Update systemverilog_emacsauto.vim --- plugin/systemverilog_emacsauto.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/systemverilog_emacsauto.vim b/plugin/systemverilog_emacsauto.vim index 38aea0a..2696b16 100755 --- a/plugin/systemverilog_emacsauto.vim +++ b/plugin/systemverilog_emacsauto.vim @@ -75,7 +75,7 @@ function s:Delete() " maybe add /tmp to the temporary filename w! %.emacsautotmp if s:is_win - let b:scrpt = 'silent !emacs -batch -l '.expand("$HOME/.elisp/").'verilog-mode.el %.emacsautotmp -f verilog-delete-auto' + let b:scrpt = 'silent !emacs -batch -l '.expand("$HOME/.elisp/").'verilog-mode.el %.emacsautotmp -f verilog-batch-delete-auto' exec b:scrpt else exec 'silent !emacs -batch -l ~/.elisp/verilog-mode.el %.emacsautotmp -f verilog-batch-delete-auto' From 770196fac2ffe674d3648cf9d84139d9ec66012a Mon Sep 17 00:00:00 2001 From: Harris Zhu Date: Sun, 24 Apr 2022 20:21:48 +0800 Subject: [PATCH 14/16] add three config variables for shortkey and the path of verilog-mode.el --- plugin/systemverilog_emacsauto.vim | 88 ++++++++++++++++++++---------- 1 file changed, 58 insertions(+), 30 deletions(-) diff --git a/plugin/systemverilog_emacsauto.vim b/plugin/systemverilog_emacsauto.vim index 2696b16..b5e6e84 100755 --- a/plugin/systemverilog_emacsauto.vim +++ b/plugin/systemverilog_emacsauto.vim @@ -6,33 +6,59 @@ " comment out these two lines " if you don't want folding or if you prefer other folding methods -setlocal foldmethod=expr -setlocal foldexpr=VerilogEmacsAutoFoldLevel(v:lnum) +"setlocal foldmethod=expr +"setlocal foldexpr=VerilogEmacsAutoFoldLevel(v:lnum) if exists("loaded_verilog_emacsauto") finish endif let loaded_verilog_emacsauto = 1 -let s:is_win = has('win32') +function! s:InitVar(var, value) + if !exists(a:var) + exec 'let '.a:var.'='.string(a:value) + endif +endfunction " map \a, \d pair to Add and Delete functions, assuming \ is the leader " alternatively, map C-A, C-D to Add and Delete functions -if !hasmapto('VerilogEmacsAutoAdd') - map a VerilogEmacsAutoAdd - "map VerilogEmacsAutoAdd -endif -if !hasmapto('VerilogEmacsAutoDelete') - map d VerilogEmacsAutoDelete - "map VerilogEmacsAutoDelete -endif + +let s_DefaultPath = expand("$HOME") . "/.elisp/verilog-mode.el" + +call s:InitVar('g:VerilogModeAddKey', 'a') +call s:InitVar('g:VerilogModeDeleteKey', 'd') +call s:InitVar('g:VerilogModeFile', s_DefaultPath) + +"if !hasmapto('VerilogEmacsAutoAdd') +"map a VerilogEmacsAutoAdd +"endif +try + if g:VerilogModeAddKey != "" + exec 'nnoremap ' g:VerilogModeAddKey 'VerilogEmacsAutoAdd' + endif +catch /^Vim\%((\a\+)\)\=:E227/ +endtry + +"if !hasmapto('VerilogEmacsAutoDelete') +" map d VerilogEmacsAutoDelete +"endif +try + if g:VerilogModeDeleteKey != "" + exec 'nnoremap ' g:VerilogModeDeleteKey 'VerilogEmacsAutoDelete' + endif +catch /^Vim\%((\a\+)\)\=:E227/ +endtry + + noremap