
    ue                         d dl Z d dlmZ d dlmZ d dlmZmZmZ  e j                  e
      Zed        Zed        Zd Zy)    N)libutils)Rename)_utilshookimplurisc                      ddddiiiS )Npluginsrope_renameenabledF r       ;/usr/lib/python3/dist-packages/pylsp/plugins/rope_rename.pypylsp_settingsr      s     	5'9:;;r   c                    | j                  |j                        j                  di       }|j                  |      }t	        |t        j                  ||j                        |j                  |            }t        j                  d|j                  |      |       |j                  |dd      }t        j                  d|j                         g }	|j                  D ]  }
t        j                  |
j                  j                        }|j!                  |      }|	j#                  ||r|j$                  nd dddd	t'        |
j                        dd	d
|
j(                  dgd        d|	iS )N)document_pathropezExecuting rename of %s to %sT)in_hierarchydocszFinished rename: %s)uriversionr   )line	character)startend)rangenewText)textDocumenteditsdocumentChanges)settingspathget_rope_project_builderr   r   path_to_resourceoffset_at_positionlogdebugword_at_positionget_changeschangesr   from_fs_pathresourceget_maybe_documentappendr   
_num_linesnew_contents)config	workspacedocumentpositionnew_namerope_configrope_projectrename	changesetr*   changer   docs                r   pylsp_renamer<      s[   ///>BB62NK22;?L!!,>##H-F II&(A(A((KX ""8$T"JIII#Y%6%67G## 
 4 45**3/(+sPT U /0a%@(26??(C-.$" $*#6#6		

( w''r   c                     | j                         }t        j                  |      rt        |j	                               S y)z/Count the number of lines in a `File` resource.r   )readr   get_eol_charslen
splitlines)r,   texts     r   r/   r/   <   s0    ==?DD!4??$%%r   )logging	rope.baser   rope.refactor.renamer   pylspr   r   r   	getLogger__name__r&   r   r<   r/   r   r   r   <module>rI      sV      ' ( (g! 
< 
<
 
$( 
$(Nr   