diff --git a/autoload/emmet/lang/html.vim b/autoload/emmet/lang/html.vim
index b691667..4274bca 100644
--- a/autoload/emmet/lang/html.vim
+++ b/autoload/emmet/lang/html.vim
@@ -810,11 +810,7 @@ endfunction
function! emmet#lang#html#balanceTag(flag) range abort
let vblock = emmet#util#getVisualBlock()
- if a:flag == -2 || a:flag == 2
- let curpos = [0, line("'<"), col("'<"), 0]
- else
- let curpos = emmet#util#getcurpos()
- endif
+ let curpos = emmet#util#getcurpos()
let settings = emmet#getSettings()
if a:flag > 0
@@ -846,8 +842,8 @@ function! emmet#lang#html#balanceTag(flag) range abort
let mx = '<\([a-zA-Z][a-zA-Z0-9:_\-]*\)[^>]*>'
while 1
let pos1 = searchpos(mx, 'W')
- if pos1 == curpos[1:2]
- let pos1 = searchpos(mx . '\zs', 'W')
+ if pos1 == [0, 0] || pos1 == curpos[1:2]
+ let pos1 = searchpos('>\zs', 'W')
let pos2 = searchpos('.\ze<', 'W')
let block = [pos1, pos2]
if emmet#util#regionIsValid(block)
@@ -872,11 +868,7 @@ function! emmet#lang#html#balanceTag(flag) range abort
endif
endwhile
endif
- if a:flag == -2 || a:flag == 2
- silent! exe 'normal! gv'
- else
- call setpos('.', curpos)
- endif
+ call setpos('.', curpos)
endfunction
function! emmet#lang#html#moveNextPrevItem(flag) abort
diff --git a/plugin/emmet.vim b/plugin/emmet.vim
index 927a467..bb8d8e0 100644
--- a/plugin/emmet.vim
+++ b/plugin/emmet.vim
@@ -106,10 +106,10 @@ function! s:install_plugin(mode, buffer)
\ {'mode': 'n', 'var': 'user_emmet_update_tag', 'key': 'u', 'plug': 'emmet-update-tag', 'func': ':call emmet#updateTag()'},
\ {'mode': 'i', 'var': 'user_emmet_balancetaginward_key', 'key': 'd', 'plug': 'emmet-balance-tag-inward', 'func': ':call emmet#balanceTag(1)'},
\ {'mode': 'n', 'var': 'user_emmet_balancetaginward_key', 'key': 'd', 'plug': 'emmet-balance-tag-inward', 'func': ':call emmet#balanceTag(1)'},
- \ {'mode': 'v', 'var': 'user_emmet_balancetaginward_key', 'key': 'd', 'plug': 'emmet-balance-tag-inward', 'func': ':call emmet#balanceTag(2)'},
+ \ {'mode': 'v', 'var': 'user_emmet_balancetaginward_key', 'key': 'd', 'plug': 'emmet-balance-tag-inward', 'func': ':call emmet#balanceTag(1)'},
\ {'mode': 'i', 'var': 'user_emmet_balancetagoutward_key', 'key': 'D', 'plug': 'emmet-balance-tag-outword', 'func': ':call emmet#balanceTag(-1)'},
\ {'mode': 'n', 'var': 'user_emmet_balancetagoutward_key', 'key': 'D', 'plug': 'emmet-balance-tag-outword', 'func': ':call emmet#balanceTag(-1)'},
- \ {'mode': 'v', 'var': 'user_emmet_balancetagoutward_key', 'key': 'D', 'plug': 'emmet-balance-tag-outword', 'func': ':call emmet#balanceTag(-2)'},
+ \ {'mode': 'v', 'var': 'user_emmet_balancetagoutward_key', 'key': 'D', 'plug': 'emmet-balance-tag-outword', 'func': ':call emmet#balanceTag(-1)'},
\ {'mode': 'i', 'var': 'user_emmet_next_key', 'key': 'n', 'plug': 'emmet-move-next', 'func': ':call emmet#moveNextPrev(0)'},
\ {'mode': 'n', 'var': 'user_emmet_next_key', 'key': 'n', 'plug': 'emmet-move-next', 'func': ':call emmet#moveNextPrev(0)'},
\ {'mode': 'i', 'var': 'user_emmet_prev_key', 'key': 'N', 'plug': 'emmet-move-prev', 'func': ':call emmet#moveNextPrev(1)'},