@@ -169,14 +169,7 @@ def completions():
169169    # Clear call signatures in the buffer so they aren't seen by the completer. 
170170    # Call signatures in the command line can stay. 
171171    if  int (vim_eval ("g:jedi#show_call_signatures" )) ==  1 :
172-         restore_signatures  =  False 
173-         for  linenr , line  in  vim_eval ('get(b:, "_jedi_callsig_orig", {})' ).items ():
174-             # Check that the line would be reset, helps with keeping a single 
175-             # undochain. 
176-             if  line  !=  vim .current .buffer [int (linenr )- 1 ]:
177-                 vim_command ('silent! undojoin' )
178-                 vim .current .buffer [int (linenr )- 1 ] =  line 
179-                 restore_signatures  =  True 
172+         restore_signatures  =  clear_call_signatures (True )
180173
181174    base  =  vim .eval ('a:base' )
182175    source  =  '' 
@@ -213,9 +206,7 @@ def completions():
213206        completions  =  []
214207
215208    if  restore_signatures :
216-         cursor  =  vim .current .window .cursor 
217-         vim_command ('undo' )
218-         vim .current .window .cursor  =  cursor 
209+         show_call_signatures ()
219210    vim .command ('return '  +  strout )
220211
221212
@@ -334,22 +325,30 @@ def show_documentation():
334325
335326
336327@catch_and_print_exceptions  
337- def  clear_call_signatures ():
328+ def  clear_call_signatures (temporary = False ):
338329    # Check if using command line call signatures 
339330    if  int (vim_eval ("g:jedi#show_call_signatures" )) ==  2 :
340331        vim_command ('echo ""' )
341332        return 
342-     cursor  =  vim .current .window .cursor 
343333
344-     if  not  int (vim_eval ("exists('b:_jedi_callsig_orig')" )):
345-         return 
346-     for  linenr , line  in  vim_eval ('b:_jedi_callsig_orig' ).items ():
347-         # Check that the line would be reset, helps with keeping a single 
348-         # undochain. 
349-         if  line  !=  vim .current .buffer [int (linenr )- 1 ]:
350-             vim_command ('silent! undojoin' )
351-             vim .current .buffer [int (linenr )- 1 ] =  line 
352-     vim_command ('unlet b:_jedi_callsig_orig' )
334+     r  =  False 
335+     orig_lines  =  vim_eval ("get(b:, '_jedi_callsig_orig', {})" )
336+     if  orig_lines :
337+         orig_modified  =  int (vim_eval ("&modified" ))
338+ 
339+         for  linenr , line  in  orig_lines .items ():
340+             # Check that the line would be reset, helps with keeping a single 
341+             # undochain. 
342+             # assert line != vim.current.buffer[int(linenr)-1] 
343+             if  line  !=  vim .current .buffer [int (linenr )- 1 ]:
344+                 vim .current .buffer [int (linenr )- 1 ] =  line 
345+                 vim_command ('let b:_jedi_changing_text = changenr()' )
346+                 r  =  True 
347+         if  not  orig_modified :
348+             vim_command ('set nomodified' )
349+         if  not  temporary :
350+             vim_command ('unlet b:_jedi_callsig_orig' )
351+     return  r 
353352
354353
355354@_check_jedi_availability (show_error = False ) 
@@ -427,12 +426,15 @@ def show_call_signatures(signatures=()):
427426    if  not  set_lines :
428427        return 
429428
429+     orig_modified  =  int (vim_eval ("&modified" ))
430430    orig_lines  =  {}
431431    for  linenr , line  in  set_lines :
432432        orig_lines [linenr ] =  vim .current .buffer [linenr - 1 ]
433433        vim_command ('silent! undojoin' )
434434        vim .current .buffer [int (linenr )- 1 ] =  line 
435435    vim_command ("let b:_jedi_callsig_orig = {!r}" .format (orig_lines ))
436+     if  not  orig_modified :
437+         vim_command ('set nomodified' )
436438
437439
438440@catch_and_print_exceptions  
0 commit comments