
    6{g)                         d dl Z  e j                  dd       d dlmZmZmZ ddddd	d
ZddddZddiddiddiddiddiddidZ G d dej                  ej                        Zy)    NPeasz1.0)GObjectGdkXed)]}"')([{r
   r   r   r   r   )r   r   r	   <>|`)	changeloghtmlrubyshxmlphpc                       e Zd ZdZ ej
                  ej                        Zd Z	d Z
d Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zy)BracketCompletionPluginBracketCompletion)typec                 B    t         j                  j                  |        y N)r   Object__init__selfs    K/usr/lib/x86_64-linux-gnu/xed/plugins/bracket-complete/bracketcompletion.pyr    z BracketCompletionPlugin.__init__7   s    %    c                 B   | j                   j                         | _        d | _        g | _        d| _        | j                          | j                  j                  | j                  j                               }| j                  j                  d |d      | _
        | j                  j                  d |d      | _        d d | j                   j                  d| j                        | j                  j                  d| j                        d g| _        | j!                          y )NTFznotify::editableznotify::language)view
get_buffer_doc
_last_iter_stack_relocate_marksupdate_languageget_iter_at_mark
get_insertcreate_mark_mark_begin	_mark_endconnecton_notify_editableon_notify_language	_handlersupdate_active)r"   inserts     r#   do_activatez#BracketCompletionPlugin.do_activate:   s    II((*	# ++DII,@,@,BC9900vtD..tVUC II0$2I2IJII0$2I2IJ
 	r$   c                 F   | j                   d   rx| j                  j                  | j                   d          | j                  j                  | j                   d          | j                  j                  | j                   d          | j                  j                  | j                   d          | j                  j                  | j                   d          | j                  j	                  | j
                         | j                  j	                  | j                         y )Nr               )r5   r&   
disconnectr(   delete_markr0   r1   r!   s    r#   do_deactivatez%BracketCompletionPlugin.do_deactivateO   s    >>!II  !23II  !23II  !23		T^^A./		T^^A./		d../		dnn-r$   c                    | j                   j                         xr | j                  d u}|r| j                  d   | j                   j	                  d| j
                        | j                  d<   | j                   j	                  d| j                        | j                  d<   | j                  j	                  d| j                        | j                  d<   y |s| j                  d   | j                   j                  | j                  d          d | j                  d<   | j                   j                  | j                  d          d | j                  d<   | j                  j                  | j                  d          d | j                  d<   y y y )Nr   zevent-afterzkey-press-eventr:   zdelete-ranger;   )
r&   get_editable	_bracketsr5   r2   on_event_afteron_key_press_eventr(   on_delete_ranger>   )r"   actives     r#   r6   z%BracketCompletionPlugin.update_activeY   sL    '') ,t+ 	 dnnQ'/ $		 1 1-373F3F!HDNN1 $		 1 12C373J3J!LDNN1 $		 1 1.262F2F!HDNN1DNN1-9II  !23 $DNN1II  !23 $DNN1II  !23 $DNN1 :r$   c                 @   | j                   j                         }|d | _        y |j                         }|t        v r.t        |   | _        | j                  j                  t               nt        | _        t               | _        | j                  D ]A  }t        j                  t        |d               }|s'| j                  j                  |       C t        D ]A  }t        j                  t        |d               }|s'| j                  j                  |       C y )N)r(   get_languagerC   get_idlanguage_bracketsupdatecommon_bracketsset_bracket_keyvalsr   unicode_to_keyvalordaddclose_brackets)r"   langlang_idbkvs        r#   r,   z'BracketCompletionPlugin.update_languagen   s    yy%%'<!DN++-''.w7DNNN!!/2,DN !$ 	.A&&s1R5z2B%%))"-	.   	.A&&s1R5z2B%%))"-	.r$   c                    | j                   j                  | j                   j                               }|j                         }d }|j	                         s |j                         r<|j                         s,|j                          | j                   j                  ||      }|s2|j                         r"|j                         }|j                         rd }|r|||fS yN)NNN)r(   r-   r.   copy	ends_wordinside_wordstarts_wordbackward_word_startget_textbackward_charget_charisspace)r"   endstartwords       r#   get_current_tokenz)BracketCompletionPlugin.get_current_token   s    ii(()=)=)?@
==?s09J%%'99%%eS1D++->>#D||~###r$   c                    | j                   j                  | j                   j                               }|j                         }d }|j	                         s |j                         r<|j                         s,|j                          | j                   j                  ||      }|s"|j                         }|j                         rd }|r|||fS yrZ   )r(   r-   r.   r[   r\   r]   r^   forward_word_endr`   rb   rc   )r"   re   rd   rf   s       r#   get_next_tokenz&BracketCompletionPlugin.get_next_token   s    		**499+?+?+ABjjl??!2!2!4U=N=N=P  "99%%eS1D>>#D||~###r$   c                    | j                   j                  |j                               }|j                         }|j	                         }|j                         rb|dvr^|j                  |      dk  rJ|j                         sn9|j	                         }|j                         r|dvr|j                  |      dk  rJ|j                  |      ry|j                  |      S )zw
        Compute indentation at the given iterator line
        view : gtk.TextView
        cur : gtk.TextIter
        )
r    )
r(   get_iter_at_lineget_liner[   rb   rc   compareforward_charequal	get_slice)r"   curre   rd   cs        r#   compute_indentationz+BracketCompletionPlugin.compute_indentation   s     		**3<<>:jjlLLNiika|3C8H18L##%A iika|3C8H18L
 ;;ss##r$   c                 D    | j                          | j                          y r   )r,   r6   r"   r&   pspecs      r#   r4   z*BracketCompletionPlugin.on_notify_language   s    r$   c                 $    | j                          y r   )r6   ry   s      r#   r3   z*BracketCompletionPlugin.on_notify_editable   s    r$   c                 j   |j                   t        j                  j                  t        j                  j                  z  z  ry|j
                  t        j                  t        j                  fv rg | _        |j
                  t        j                  k(  rg | _        | j                  d k(  ry| j                  j                  | j                  j                               }|j                          | j                  j                          | j                  j!                  || j                         | j                  j#                          d | _
        y|j
                  t        j$                  t        j&                  fv r0|j)                         r| j                  d k7  r| j                  j                         }| j                  j                  |      }| j+                  |      }d|z   }| j                  j                          | j                  j-                  ||       | j                  j-                  ||       | j                  j#                          |j/                  t1        |             | j                  j3                  |       | j4                  j7                  |       d | _
        yd | _
        y)NFTrl   )stater   ModifierTypeCONTROL_MASK	MOD1_MASKkeyvalKEY_Left	KEY_Rightr*   KEY_BackSpacer)   r(   r-   r.   ra   begin_user_actiondeleteend_user_action
KEY_ReturnKEY_KP_Enterget_auto_indentrw   r7   backward_charslenplace_cursorr&   scroll_mark_onscreen)r"   r&   eventiter1markindents         r#   rE   z*BracketCompletionPlugin.on_key_press_event   s   ;;#**77#:J:J:T:TTU<<CLL#--88DK<<3,,,DK$&II..tyy/C/C/EFE!II'')IIUDOO4II%%'"DO<<CNNC,<,<==!doo&= 99'')DII..t4E--e4FF]F II'')IIUF+IIUF+II%%'   V-II""5)II**40"DOr$   c                    |j                   t        j                  j                  k7  sZ|j                  t        j
                  j                  t        j
                  j                  z  z  s|j                  | j                  vry | j                  j                         }| j                  j                  | j                        }| j                  j                  | j                        }| j                  j                  |      }|j                  |      s |j!                  ||      sg | _        d| _        | j'                         \  }}}	|| j(                  vr	|t*        vry | j$                  dk(  rn| j                  j                  |      }| j                  j-                  | j                  |       | j                  j-                  | j                  |       d| _        d }
d }|t*        vr+| j"                  j/                  |       | j(                  |   }
n	t*        |   }| j1                         \  }}}||k(  r|d k7  r| j"                  g k7  r| j"                  t3        | j"                        dz
     |k(  r| j"                  j5                          | j                  j7                  | j8                  d          | j                  j;                  ||	       | j                  j=                  | j8                  d          |	j?                          | j                  jA                  |	       y |
d k7  r| j                  jC                          | j                  jE                  |	|
       | j                  jG                          |	jI                         | _%        |	jM                  t3        |
             | j                  jA                  |	       y y )NTFr:   r;   )'r   r   	EventType	KEY_PRESSr}   r~   r   r   r   rP   r(   r.   r-   r0   r1   rs   in_ranger*   r+   rg   rC   rT   	move_markappendrj   r   pophandler_blockr5   r   handler_unblockrr   r   r   r7   r   r[   r)   r   )r"   r&   r   r7   
iter_beginiter_endinsert_iterrf   re   rd   bracketbracket2word2_s                 r#   rD   z&BracketCompletionPlugin.on_event_after   s   ::000;;#**77#:J:J:T:TTU<<t444 %%'YY//0@0@A
99--dnn=ii008)''
H= '+$  113eSt~~%$n*D 4'))44V<KII 0 0+>II<#(D  ~%KKt$nnT*G%d+H))+q! 5=4DKK2$5kk#dkk*Q./8;!		''q(9:		  ,		))$..*;<  "		&&s+ d?II'')IIS'*II%%' "hhjDOs7|,II""3' r$   c                     g | _         y r   )r*   )r"   docre   rd   s       r#   rF   z'BracketCompletionPlugin.on_delete_range;  s	    r$   N)__name__
__module____qualname____gtype_name__r   Propertyr   Viewr&   r    r8   r@   r6   r,   rg   rj   rw   r4   r3   rE   rD   rF    r$   r#   r   r   2   sa    (N7*D&*.%*.2$&$&$&/bA(Fr$   r   )girequire_versiongi.repositoryr   r   r   rN   rT   rL   r   ViewActivatabler   r   r$   r#   <module>r      s   * 
   65 ! + + 



 

 CMCM#-3=3= Jgnnc.A.A Jr$   