Raimondi / delimitMate

Vim plugin, provides insert mode auto-completion for quotes, parens, brackets, etc.
http://www.vim.org/scripts/script.php?script_id=2754
1.98k stars 117 forks source link

Backspace on beginning of line might remove quote (first char) #194

Closed blueyed closed 9 years ago

blueyed commented 9 years ago

Pressing backspace at the beginning of the second line of the following snippet:

foo
|"

Results in:

foo|

But should result in:

foo|"

:DelimitMateTest

delimitMate Report
==================

* Options: ( ) default, (g) global, (b) buffer

( ) delimitMate_apostrophes = ''
( ) delimitMate_autoclose = 1
( ) delimitMate_balance_matchpairs = 0
( ) delimitMate_eol_marker = ''
( ) delimitMate_excluded_ft = ''
( ) delimitMate_excluded_regions = 'Comment'
(g) delimitMate_expand_cr = 0
( ) delimitMate_expand_space = 0
( ) delimitMate_jump_expansion = 0
( ) delimitMate_matchpairs = '(:),{:},[:]'
( ) delimitMate_nesting_quotes = []
( ) delimitMate_quotes = '" '' `'
( ) delimitMate_smart_matchpairs = '^\%(\w\|\!\|£\|\$\|_\|["'']\s*\S\)'
( ) delimitMate_smart_quotes = 1
--------------------

* Mappings:

i  )            @<Plug>delimitMate)
  Last set from ~/.dotfiles/vim/neobundles/delimitMate/plugin/delimitMate.vim
i  }            @<Plug>delimitMate}
  Last set from ~/.dotfiles/vim/neobundles/delimitMate/plugin/delimitMate.vim
i  ]            @<Plug>delimitMate]
  Last set from ~/.dotfiles/vim/neobundles/delimitMate/plugin/delimitMate.vim
i  (            @<Plug>delimitMate(
  Last set from ~/.dotfiles/vim/neobundles/delimitMate/plugin/delimitMate.vim
i  {            @<Plug>delimitMate{
  Last set from ~/.dotfiles/vim/neobundles/delimitMate/plugin/delimitMate.vim
i  [            @<Plug>delimitMate[
  Last set from ~/.dotfiles/vim/neobundles/delimitMate/plugin/delimitMate.vim
i  "            @<Plug>delimitMate"
  Last set from ~/.dotfiles/vim/neobundles/delimitMate/plugin/delimitMate.vim
i  '            @<Plug>delimitMate'
  Last set from ~/.dotfiles/vim/neobundles/delimitMate/plugin/delimitMate.vim
i  `            @<Plug>delimitMate`
  Last set from ~/.dotfiles/vim/neobundles/delimitMate/plugin/delimitMate.vim
i  <BS>          My_BS_map()
  Last set from ~/.vimrc
i  <S-BS>       @<Plug>delimitMateS-BS
  Last set from ~/.dotfiles/vim/neobundles/delimitMate/plugin/delimitMate.vim
i  <S-Tab>       <Plug>SuperTabBackward
  Last set from ~/.dotfiles/vim/neobundles/supertab/plugin/supertab.vim
No mapping found
i  <C-G>g       @<Plug>delimitMateJumpMany
  Last set from ~/.dotfiles/vim/neobundles/delimitMate/plugin/delimitMate.vim
--------------------

* Showcase:

Open: (|)
Delete: |
Exit: ()|

Open: {|}
Delete: |
Exit: {}|

Open: [|]
Delete: |
Exit: []|

Open: "|"
Delete: |
Exit: ""|

Open: '|'
Delete: |
Exit: ''|

Open: `|`
Delete: |
Exit: ``|

--- Options ---
  autoindent          foldlevelstart=2    mouse=a             showmatch           title
  background=dark     foldmethod=marker   mousemodel=popup  noshowmode            ttimeoutlen=10
  backup              helplang=en         number              showtabline=2       ttyfast
  backupcopy=yes      hidden              numberwidth=1       sidescroll=1        ttymouse=xterm2
  ballooneval         history=1000        pastetoggle=,sp     sidescrolloff=10    undofile
  breakindent         ignorecase          relativenumber      smartcase           updatetime=1000
  colorcolumn=78      incsearch           ruler               smarttab            wildmenu
  confirm             laststatus=2        scroll=13           splitbelow        nowrap
  cpoptions=aAceFsB   lazyredraw          scrolloff=3       nostartofline       nowrapscan
  cursorline          linebreak           shiftwidth=2        synmaxcol=1000      t_SI=^[[3 q
  expandtab           matchtime=3         showbreak=↪       tabstop=2           t_EI=^[[1 q
  foldlevel=2         modified            showcmd             timeoutlen=2000
  backspace=indent,eol,start
  backupdir=~/.local/share/vim/backups
  balloonexpr=eclim#util#Balloon(eclim#util#GetLineError(line('.')))
  breakindentopt=min:20,shift:0,sbr
  clipboard=exclude:cons\|linux,autoselectml
  commentstring=# %s
  completefunc=SuperTabCodeComplete
  completeopt=menuone
  diffopt=filler,vertical,context:1000000
  directory=~/tmp/vim/swapfiles
  fileencodings=ucs-bom,utf-8,default,latin1
  fillchars=vert: ,fold: ,stl: ,stlnc: ,diff:⣿
  formatoptions=roclqtnj
  grepprg=grep -nH $* /dev/null
  guioptions=girLtTA
  guitablabel=%{GuiTabLabel()}
  includeexpr=SmartIncludeExpr(v:fname)
  isfname=@,48-57,/,.,-,_,+,,,#,$,%,~
  iskeyword=@,48-57,_,192-255,-
  listchars=tab:»·,trail:·,eol:¬,nbsp:_,extends:»,precedes:«
  omnifunc=syntaxcomplete#Complete
  runtimepath=~/.vim,~/.vim/neobundles/YouCompleteMe/,~/.vim/neobundles/command-t/,~/.vim/neobundles/abolish/,~/.vim/neobundles/ack/,~/.vim/neobundles/afterimage/,~/.vim/neobundles/ag/,~/.vim/neobundles/airline/,~/.vim/neobundles/better-whitespace/,~/.vim/neobundles/bufexplorer/,~/.vim/neobundles/bufkill/,~/.vim/neobundles/cmdline-completion/,~/.vim/neobundles/coffee-script/,~/.vim/neobundles/colorizer/,~/.vim/neobundles/command-t/,~/.vim/neobundles/css/,~/.vim/neobundles/ctrlp/,~/.vim/neobundles/cursorcross/,~/.vim/neobundles/cyclecolor/,~/.vim/neobundles/detectindent/,~/.vim/neobundles/dispatch/,~/.vim/neobundles/django-pony/,~/.vim/neobundles/django-template-textobjects/,~/.vim/neobundles/easytags/,~/.vim/neobundles/eunuch/,~/.vim/neobundles/exchange/,~/.vim/neobundles/extradite/,~/.vim/neobundles/fatrat/,~/.vim/neobundles/file-line/,~/.vim/neobundles/fontzoom/,~/.vim/neobundles/fugitive/,~/.vim/neobundles/gf-python/,~/.vim/neobundles/gist/,~/.vim/neobundles/github-issues/,~/.vim/neobundles/gitv/,~/.vim/neobundles/gnupg/,~/.vim/neobundles/GoldenView/,~/.vim/neobundles/maktaba/,~/.vim/neobundles/grep/,~/.vim/neobundles/gundo/,~/.vim/neobundles/haml/,~/.vim/neobundles/indent-guides/,~/.vim/neobundles/keepcase/,~/.vim/neobundles/LargeFile/,~/.vim/neobundles/less/,~/.vim/neobundles/localvimrc/,~/.vim/neobundles/lua-ftplugin/,~/.vim/neobundles/luarefvim/,~/.vim/neobundles/lusty/,~/.vim/neobundles/mail_tgz/,~/.vim/neobundles/markdown/,~/.vim/neobundles/markdown-folding/,~/.vim/neobundles/neomru/,~/.vim/neobundles/nerdtree/,~/.vim/neobundles/nginx/,~/.vim/neobundles/open-browser/,~/.vim/neobundles/operator-replace/,~/.vim/neobundles/operator-user/,~/.vim/neobundles/pac/,~/.vim/neobundles/parameter-text-objects/,~/.vim/neobundles/pastebin/,~/.vim/neobundles/pathogen/,~/.vim/neobundles/phpcomplete/,~/.vim/neobundles/php-indent/,~/.vim/neobundles/preview/,~/.vim/neobundles/projectionist/,~/.vim/neobundles/projectroot/,~/.vim/neobundles/pydoc/,~/.vim/neobundles/pytest/,~/.vim/neobundles/pytest-vim-compiler/,~/.vim/neobundles/python-pep8-indent/,~/.vim/neobundles/quickfixsigns/,~/.vim/neobundles/quickhl/,~/.vim/neobundles/quicktask/,~/.vim/neobundles/ragtag/,~/.vim/neobundles/rails/,~/.vim/neobundles/Rainbow-Parenthsis-Bundle/,~/.vim/neobundles/ref/,~/.vim/neobundles/repeat/,~/.vim/neobundles/runVimTests/,~/.vim/neobundles/scriptease/,~/.vim/neobundles/session/,~/.vim/neobundles/smarty/,~/.vim/neobundles/sneak/,~/.vim/neobundles/snippets/,~/.vim/neobundles/sparkup/,~/.vim/neobundles/speeddating/,~/.vim/neobundles/splitjoin/,~/.vim/neobundles/startify/,~/.vim/neobundles/sudoedit/,~/.vim/neobundles/supertab/,~/.vim/neobundles/surround/,~/.vim/neobundles/swap/,~/.vim/neobundles/syntastic/,~/.vim/neobundles/syntaxattr/,~/.vim/neobundles/syntax-tmux/,~/.vim/neobundles/tabular/,~/.vim/neobundles/tagbar/,~/.vim/neobundles/tbone/,~/.vim/neobundles/tcomment/,~/.vim/neobundles/textobj-function/,~/.vim/neobundles/textobj-indent/,~/.vim/neobundles/textobj-user/,~/.vim/neobundles/textobj-url/,~/.vim/neobundles/tinykeymap/,~/.vim/neobundles/tmarks/,~/.vim/neobundles/tlib/,~/.vim/neobundles/tmru/,~/.vim/neobundles/tmux-navigator/,~/.vim/neobundles/tplugin/,~/.vim/neobundles/tracwiki/,~/.vim/neobundles/ttagecho/,~/.vim/neobundles/ultisnips/,~/.vim/neobundles/unimpaired/,~/.vim/neobundles/unite-outline/,~/.vim/neobundles/unite/,~/.vim/neobundles/vcscommand/,~/.vim/neobundles/viewoutput/,~/.vim/neobundles/vimfiler/,~/.vim/neobundles/vim-misc/,~/.vim/neobundles/capslock/,~/.vim/neobundles/splice.vim/,~/.vim/neobundles/vimomni/,~/.vim/neobundles/vimproc/,~/.vim/neobundles/VimTAP/,~/.vim/neobundles/virtualenv/,~/.vim/neobundles/visualctrlg/,~/.vim/neobundles/visual-star-search/,~/.vim/neobundles/webapi/,~/.vim/neobundles/wildfire/,~/.vim/neobundles/xmledit/,~/.vim/neobundles/xterm-color-table/,~/.vim/neobundles/yankstack/,~/.vim/neobundles/python-mode/,~/.vim/neobundles/colorscheme-atom/,~/.vim/neobundles/colorscheme-base16/,~/.vim/neobundles/colorscheme-detailed/,~/.vim/neobundles/colorscheme-jellybeans/,~/.vim/neobundles/colorscheme-vividchalk/,~/.vim/neobundle
  sessionoptions=blank,buffers,curdir,folds,help,options,tabpages,winsize,unix,slash
  shortmess=filnxtToOc
  spelllang=de,en_us
  statusline=%!airline#statusline(1)
  suffixes=.bak,~,.o,.h,.info,.swp,.obj,.tmp,.pyc
  tabline=%!airline#extensions#tabline#get()
  tags=./tags;/,~/src/tags.global,~/.vimtags
  titlestring=✐%( %<%{ShortenFilenameWithSuffix('%', 15)}%) - vim
  undodir=~/.local/share/vim/undo
  viminfo='100,<50,s10,h,%,!,n~/debug-viminfo/viminfo
  wildignore=*.o,*.obj,.git,.svn,*.png,*.jpg,*.jpeg,*.gif,*.mp3,*.sw?,*.pyc,__pycache__
  wildmode=list:longest,list:full
filetype detection:ON  plugin:ON  indent:ON

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 12 2014 01:23:35)
Included patches: 1-507
Compiled by daniel@lenny.thequod.de
Huge version with GTK2 GUI.  Features included (+) or not (-):
+acl             +dialog_con_gui  +insert_expand   +mouse_sgr       +ruby/dyn        +vertsplit
+arabic          +diff            +jumplist        -mouse_sysmouse  +scrollbind      +virtualedit
+autocmd         +digraphs        +keymap          +mouse_urxvt     +signs           +visual
+balloon_eval    +dnd             +langmap         +mouse_xterm     +smartindent     +visualextra
+browse          -ebcdic          +libcall         +multi_byte      -sniff           +viminfo
++builtin_terms  +emacs_tags      +linebreak       +multi_lang      +startuptime     +vreplace
+byte_offset     +eval            +lispindent      -mzscheme        +statusline      +wildignore
+cindent         +ex_extra        +listcmds        +netbeans_intg   -sun_workshop    +wildmenu
+clientserver    +extra_search    +localmap        +path_extra      +syntax          +windows
+clipboard       +farsi           +lua/dyn         -perl            +tag_binary      +writebackup
+cmdline_compl   +file_in_path    +menu            +persistent_undo +tag_old_static  +X11
+cmdline_hist    +find_in_path    +mksession       +postscript      -tag_any_white   -xfontset
+cmdline_info    +float           +modify_fname    +printer         -tcl             +xim
+comments        +folding         +mouse           +profile         +terminfo        +xsmp_interact
+conceal         -footer          +mouseshape      +python          +termresponse    +xterm_clipboard
+cryptv          +fork()          +mouse_dec       -python3         +textobjects     -xterm_save
+cscope          +gettext         +mouse_gpm       +quickfix        +title           +xpm
+cursorbind      -hangul_input    -mouse_jsbterm   +reltime         +toolbar
+cursorshape     +iconv           +mouse_netterm   +rightleft       +user_commands
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  system gvimrc file: "$VIM/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
2nd user gvimrc file: "~/.vim/gvimrc"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/usr/local/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/harfbuzz     -O2 -fno-strength-reduce -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: gcc   -L. -Wl,-Bsymbolic-functions -Wl,-z,relro -L/build/buildd/ruby1.9.1-1.9.3.484/debian/lib -rdynamic -Wl,-export-dynamic  -L/usr/local/lib -Wl,--as-needed -o vim   -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lglib-2.0 -lfreetype   -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo -lnsl  -lselinux  -lacl -lattr -lgpm -ldl    -L/home/daniel/.pyenv/versions/2.7.8/lib/python2.7/config -lpython2.7 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic
--------------------

My_BS_map() is a wrapper:

fun! My_BS_map()
  " "<BS>" via delimitMateBS
  if len(maparg('<Plug>delimitMateBS', 'i'))
    let r = "\<Plug>delimitMateBS"
  else
    let r = "\<BS>"
  endif
  if len(maparg('<Plug>CursorCrossBS', 'i'))
    " requires vim 704
    let r .= "\<Plug>CursorCrossBS"
  endif
  return r
endfun
imap <expr> <BS> My_BS_map()
blueyed commented 9 years ago

Fixed in https://github.com/Raimondi/delimitMate/commit/c678061b793e3fa58095cfb2279470bcab58f7d3.

Thanks!