forked from VimPlug/jedi-vim
Merge pull request #1097 from jamescherti/rename-that-do-not-delete-word
Add a keyboard mapping to rename variables/functions/classes without deleting the word under the cursor
This commit is contained in:
@@ -207,6 +207,7 @@ get more information. If you set them to ``""``, they are not assigned.
|
|||||||
let g:jedi#usages_command = "<leader>n"
|
let g:jedi#usages_command = "<leader>n"
|
||||||
let g:jedi#completions_command = "<C-Space>"
|
let g:jedi#completions_command = "<C-Space>"
|
||||||
let g:jedi#rename_command = "<leader>r"
|
let g:jedi#rename_command = "<leader>r"
|
||||||
|
let g:jedi#rename_command_keep_name = "<leader>R"
|
||||||
|
|
||||||
An example for setting up your project:
|
An example for setting up your project:
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ let s:default_settings = {
|
|||||||
\ 'call_signatures_command': "'<leader>n'",
|
\ 'call_signatures_command': "'<leader>n'",
|
||||||
\ 'usages_command': "'<leader>n'",
|
\ 'usages_command': "'<leader>n'",
|
||||||
\ 'rename_command': "'<leader>r'",
|
\ 'rename_command': "'<leader>r'",
|
||||||
|
\ 'rename_command_keep_name': "'<leader>R'",
|
||||||
\ 'completions_enabled': 1,
|
\ 'completions_enabled': 1,
|
||||||
\ 'popup_on_dot': 'g:jedi#completions_enabled',
|
\ 'popup_on_dot': 'g:jedi#completions_enabled',
|
||||||
\ 'documentation_command': "'K'",
|
\ 'documentation_command': "'K'",
|
||||||
@@ -370,6 +371,14 @@ function! jedi#rename_visual(...) abort
|
|||||||
python3 jedi_vim.rename_visual()
|
python3 jedi_vim.rename_visual()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! jedi#rename_keep_name(...) abort
|
||||||
|
python3 jedi_vim.rename(delete_word=False)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! jedi#rename_visual_keep_name(...) abort
|
||||||
|
python3 jedi_vim.rename_visual(use_selected_text_as_prompt_answer=True)
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! jedi#completions(findstart, base) abort
|
function! jedi#completions(findstart, base) abort
|
||||||
python3 jedi_vim.completions()
|
python3 jedi_vim.completions()
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -27,8 +27,9 @@ Contents *jedi-vim-contents*
|
|||||||
5.4 Go to stub |g:jedi#goto_stubs_command|
|
5.4 Go to stub |g:jedi#goto_stubs_command|
|
||||||
5.5. Show documentation |g:jedi#documentation_command|
|
5.5. Show documentation |g:jedi#documentation_command|
|
||||||
5.6. Rename variables |g:jedi#rename_command|
|
5.6. Rename variables |g:jedi#rename_command|
|
||||||
5.7. Show name usages |g:jedi#usages_command|
|
5.7. Rename variables (Reuse name) |g:jedi#rename_command_keep_name|
|
||||||
5.8. Open module by name |:Pyimport|
|
5.8. Show name usages |g:jedi#usages_command|
|
||||||
|
5.9. Open module by name |:Pyimport|
|
||||||
6. Configuration |jedi-vim-configuration|
|
6. Configuration |jedi-vim-configuration|
|
||||||
6.1. auto_initialization |g:jedi#auto_initialization|
|
6.1. auto_initialization |g:jedi#auto_initialization|
|
||||||
6.2. auto_vim_configuration |g:jedi#auto_vim_configuration|
|
6.2. auto_vim_configuration |g:jedi#auto_vim_configuration|
|
||||||
@@ -307,7 +308,19 @@ with the new one. The number of performed renames is displayed in the command
|
|||||||
line.
|
line.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
5.7. `g:jedi#usages_command` *g:jedi#usages_command*
|
5.7. `g:jedi#rename_command_keep_name` *g:jedi#rename_command_keep_name*
|
||||||
|
Function: `jedi#rename()`
|
||||||
|
Default: <leader>R Rename variables
|
||||||
|
(This key mapping does not delete the word under the cursor)
|
||||||
|
|
||||||
|
Jedi-vim keeps the word currently under the cursor, moves the cursor to the end
|
||||||
|
of the word, and puts Vim in insert mode, where the user is expected to enter
|
||||||
|
the new variable name. Upon leaving insert mode, Jedi-vim then renames all
|
||||||
|
occurrences of the old variable name with the new one. The number of performed
|
||||||
|
renames is displayed in the command line.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
5.8. `g:jedi#usages_command` *g:jedi#usages_command*
|
||||||
Function: `jedi#usages()`
|
Function: `jedi#usages()`
|
||||||
Default: <leader>n Show usages of a name.
|
Default: <leader>n Show usages of a name.
|
||||||
|
|
||||||
@@ -315,7 +328,7 @@ The quickfix window is populated with a list of all names which point to the
|
|||||||
definition of the name under the cursor.
|
definition of the name under the cursor.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
5.8. Open module by name *:Pyimport*
|
5.9. Open module by name *:Pyimport*
|
||||||
Function: `jedi#py_import(args)`
|
Function: `jedi#py_import(args)`
|
||||||
Default: :Pyimport e.g. `:Pyimport os` shows os.py in VIM.
|
Default: :Pyimport e.g. `:Pyimport os` shows os.py in VIM.
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,10 @@ if g:jedi#auto_initialization
|
|||||||
execute 'nnoremap <buffer> '.g:jedi#rename_command.' :call jedi#rename()<CR>'
|
execute 'nnoremap <buffer> '.g:jedi#rename_command.' :call jedi#rename()<CR>'
|
||||||
execute 'vnoremap <buffer> '.g:jedi#rename_command.' :call jedi#rename_visual()<CR>'
|
execute 'vnoremap <buffer> '.g:jedi#rename_command.' :call jedi#rename_visual()<CR>'
|
||||||
endif
|
endif
|
||||||
|
if len(g:jedi#rename_command_keep_name)
|
||||||
|
execute 'nnoremap <buffer> '.g:jedi#rename_command_keep_name.' :call jedi#rename_keep_name()<CR>'
|
||||||
|
execute 'vnoremap <buffer> '.g:jedi#rename_command_keep_name.' :call jedi#rename_visual_keep_name()<CR>'
|
||||||
|
endif
|
||||||
" documentation/pydoc
|
" documentation/pydoc
|
||||||
if len(g:jedi#documentation_command)
|
if len(g:jedi#documentation_command)
|
||||||
execute 'nnoremap <silent> <buffer>'.g:jedi#documentation_command.' :call jedi#show_documentation()<CR>'
|
execute 'nnoremap <silent> <buffer>'.g:jedi#documentation_command.' :call jedi#show_documentation()<CR>'
|
||||||
|
|||||||
@@ -998,7 +998,7 @@ def cmdline_call_signatures(signatures):
|
|||||||
|
|
||||||
@_check_jedi_availability(show_error=True)
|
@_check_jedi_availability(show_error=True)
|
||||||
@catch_and_print_exceptions
|
@catch_and_print_exceptions
|
||||||
def rename():
|
def rename(delete_word=True):
|
||||||
if not int(vim.eval('a:0')):
|
if not int(vim.eval('a:0')):
|
||||||
# Need to save the cursor position before insert mode
|
# Need to save the cursor position before insert mode
|
||||||
cursor = vim.current.window.cursor
|
cursor = vim.current.window.cursor
|
||||||
@@ -1010,7 +1010,12 @@ def rename():
|
|||||||
|
|
||||||
vim_command("let s:jedi_replace_orig = expand('<cword>')")
|
vim_command("let s:jedi_replace_orig = expand('<cword>')")
|
||||||
line = vim_eval('getline(".")')
|
line = vim_eval('getline(".")')
|
||||||
|
|
||||||
|
if delete_word:
|
||||||
vim_command('normal! diw')
|
vim_command('normal! diw')
|
||||||
|
else:
|
||||||
|
vim_command('normal! yiwel')
|
||||||
|
|
||||||
if re.match(r'\w+$', line[cursor[1]:]):
|
if re.match(r'\w+$', line[cursor[1]:]):
|
||||||
# In case the deleted word is at the end of the line we need to
|
# In case the deleted word is at the end of the line we need to
|
||||||
# move the cursor to the end.
|
# move the cursor to the end.
|
||||||
@@ -1042,9 +1047,17 @@ def rename():
|
|||||||
return do_rename(replace)
|
return do_rename(replace)
|
||||||
|
|
||||||
|
|
||||||
def rename_visual():
|
def rename_visual(use_selected_text_as_prompt_answer=False):
|
||||||
replace = vim.eval('input("Rename to: ")')
|
orig = vim.eval('getline(".")[(getpos("\'<")[2]-1):getpos("\'>")[2]'
|
||||||
orig = vim.eval('getline(".")[(getpos("\'<")[2]-1):getpos("\'>")[2]]')
|
'-((&selection ==# "exclusive") ? 2 : 1)]')
|
||||||
|
|
||||||
|
input_text = ""
|
||||||
|
if use_selected_text_as_prompt_answer:
|
||||||
|
input_text = orig
|
||||||
|
|
||||||
|
replace = vim.eval(
|
||||||
|
'input("Rename to:", "{}")'.format(PythonToVimStr(input_text))
|
||||||
|
)
|
||||||
do_rename(replace, orig)
|
do_rename(replace, orig)
|
||||||
|
|
||||||
|
|
||||||
@@ -1056,6 +1069,10 @@ def do_rename(replace, orig=None):
|
|||||||
if orig is None:
|
if orig is None:
|
||||||
orig = vim_eval('s:jedi_replace_orig')
|
orig = vim_eval('s:jedi_replace_orig')
|
||||||
|
|
||||||
|
if orig == replace:
|
||||||
|
echo_highlight('Jedi did 0 renames.')
|
||||||
|
return
|
||||||
|
|
||||||
# Save original window / tab.
|
# Save original window / tab.
|
||||||
saved_tab = int(vim_eval('tabpagenr()'))
|
saved_tab = int(vim_eval('tabpagenr()'))
|
||||||
saved_win = int(vim_eval('winnr()'))
|
saved_win = int(vim_eval('winnr()'))
|
||||||
|
|||||||
Reference in New Issue
Block a user