+
     i?  c                   sb   R t ^ RIt^ RIHtHtHtHt ^ RIHt ^ RI	H
t
HtHtHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHtHt ^ R
IHt ^ RIHt ^ RIHt ^ RI H!t! ]PD                  PG                  4        U u. uF  p ]$! V 4      ^8  g   K  V NK  	  up t%]%PM                  R4       ]]']3,          t(R R lt)Rt*Rt+R R lt,R R lt-R R lt.R R lt/ ! R R]P`                  4      t1 ! R R]Pd                  4      t3]Ph                  ! R]3]Pj                  Pl                  R. 4       R# u up i ) zAutocompletion for the editor.N)DictOptionalListTuple)EV_KEY)GdkGtkGLibGObject)keyboard_layoutDISABLE_NAMEMappingData)
CodeEditor)
Controller)MessageBrokerMessageTypeUInputsData)debounce)Parser)loggerZifeqc                D    V ^8  d   QhR\         P                  R\        /#    iter_returnr   TextIterstrformat   "E/usr/lib/python3.14/site-packages/inputremapper/gui/autocompletion.py__annotate__r"   0   s      #,, 3     c                 s    V P                  4       pVP                  VP                  4       V R 4      p\        P                  ! V4      pVP                  RR4      pVP                  4       # )T
 )
get_bufferget_textget_start_iterr   Zremove_commentsZreplacelower)r   bufferZresult   &  r!   _get_left_textr,   0   sW    F__V224eTBF##F+F^^D#&F<<>r#   z.*?[(,=+]\s*z.*?\)\s*\.\s*c                r   r   r   r   r    r!   r"   r"   =   s        r#   c                s    \        V 4      p\        P                  ! R\         R\         R2V4      p\
        P                  ! RW4       Vf   R# V^,          # )z2Get the word that is written left to the TextIter.(?:Z|	|^)(\w+)$z1get_incomplete_function_name text: "%s" match: %s )r,   rematchFUNCTION_CHAIN	PARAMETERr   debugr   Z	left_textr1   r+   r!   get_incomplete_function_namer6   =   sN    u%I HHN+1YKyA9ME
LLDiW}8Or#   c                sZ    V ^8  d   QhR\         P                  R\        \        ,          /# r   )r   r   r   r   r   r    r!   r"   r"   R   s"      CLL Xc] r#   c                s    \        V 4      p\        P                  ! R\         R2V4      p\        P
                  ! RW4       Vf   R# V^,          # )z7Get the parameter that is written left to the TextIter.r-   r.   z-get_incomplete_parameter text: "%s" match: %sN)r,   r0   r1   r3   r   r4   r5   r+   r!   get_incomplete_parameterr7   R   sG    u%I HHI;i0)<E
LL@)S}8Or#   c          	      s    V ^8  d   QhR\         P                  R\        \        ,          R\        \        \
        \
        3,          ,          /# )r   	text_itercodesr   )r   r   r   intr   r   r   r    r!   r"   r"   e   s7      s|| DI $uSRUXBW r#   c                sD   \        V 4      pVe   \        V4      ^8:  d   . # VP                  4       p\        \        P
                  ! VR7      4      \        .,           pV Uu. uF2  pW$P                  4       9   g   K  W$P                  4       8w  g   K/  WD3NK4  	  up# u upi )zNFind key names that match the input at the cursor and are mapped to the codes.)r9   )r7   lenr)   Zlistr	   Z
list_namesr
   )r8   r9   incomplete_nameZnamesnames   &&   r!   propose_symbolsr>   e   s    .y9O#o"6!";	%++-O++%89\NJE Djjl* 	/>**,/N 	  s   "B=BBc                s|    V ^8  d   QhR\         P                  R\        \        \        \        3,          ,          /# )r   r8   r   )r   r   r   r   r   r   r    r!   r"   r"   w   s+      cll tE#s(O7L r#   c           	     sz   \        V 4      pVe   \        V4      ^8:  d   . # VP                  4       p. p\         F}  pWP                  4       9   g   K  WP                  4       8w  g   K/  \        P
                  V,          pVP                  4       pVP                  W3 RRP                  V4       R234       K  	  V# )z7Find function names that match the input at the cursor.Z(z, Z))	r6   r;   r)   FUNCTION_NAMESr   TASK_CLASSESZget_macro_argument_namesZappendZjoin)r8   r<   Zfunction_namesr=   Z
task_classZargument_namess   &     r!   propose_function_namesrA   w   s    29=O#o"6!";	%++-O -/Njjl***,/N,,T2J'@@BN!!46499^3L2MQ)O"PQ	  r#   c                   sF   a a ] tR t^t oRtR tV3R lV 3R lltRtVtV ;t	# )SuggestionLabelz-A label with some extra internal information.c                s&   < V ^8  d   QhRS[ RS[ /# )r   display_name
suggestion)r   r   __classdict__   "r!   r"   ZSuggestionLabel.__annotate__   s     % %S %c %r#   c                s4   < \         SV `  VR 7       W n        R# ))labelN)super__init__rD   )selfrC   rD   	__class__s   &&&r!   rJ   ZSuggestionLabel.__init__   s    |,$r#   )rD   )
__name__
__module____qualname____firstlineno____doc____gtype_name__rJ   __static_attributes____classdictcell____classcell__rL   rF      @@r!   rB   rB      s     7&N% % %r#   rB   c                   s   a a ] tR t^t oRtR tRtV3R lV 3R lltR tR t	V3R lR lt
V3R	 lR
 ltR tV 3R ltV 3R lt]! ^d4      R 4       tR tV3R lR ltV3R lR ltR tV3R ltRtVtV ;t# )AutocompletionzProvide keyboard-controllable beautiful autocompletions.

The one provided via source_view.get_completion() is not very appealing
Nc                s,   < V ^8  d   QhRS[ RS[RS[/# )r   message_broker
controllercode_editor)r   r   r   rE   rG   r!   r"   Autocompletion.__annotate__   s.     B B%B B  	Br#   c                s  < \         SV `  R\        P                  P                  R7       W0n        W n        Wn        RV n        . V n	        \        P                  ! ^^RRR7      V n        \        P                  ! 4       V n        V P                  P                  4       P                  R4       V P                  P!                  V P                  4       V P                  P#                  RV P$                  4       V P!                  V P                  4       V P                  4       P                  R4       V P'                  \        P(                  P*                  4       V P
                  P,                  P#                  R	V P.                  4       V P
                  P,                  P#                  R
V P0                  4       V P
                  P,                  P3                  4       P#                  RV P4                  4       V P'                  \        P(                  P*                  4       RV n        V P9                  4        V P;                  4        V P=                  4        R# )zCreate an autocompletion popover.

It will remain hidden until there is something to autocomplete.

Parameters
----------
code_editor
    The widget that contains the text that should be autocompleted
F)ZmodalZconstrain_toNT)Zmin_content_widthZmax_content_heightZpropagate_natural_widthZpropagate_natural_heightZtransparentrow-activatedZautocompletionzkey-press-eventzfocus-out-eventZchanged)rI   rJ   r   ZPopoverConstraintZNONEr[   rZ   rY   _uinputs_target_key_capabilitiesZScrolledWindowscrolled_windowZListBoxlist_boxZget_style_contextZ	add_classZaddZconnect_on_suggestion_clickedZset_positionZPositionTypeZBOTTOMguinavigateon_gtk_text_input_unfocusr&   updatevisibleattach_to_eventsshow_allpopdown)rK   rY   rZ   r[   rL   s   &&&&r!   rJ   ZAutocompletion.__init__   s    	 ..33 	 	
 '$,;?35%"11!"$(%)	 
 '')33MB  / 	''	

 	%%& **+;<#**112$$%6F 	$$%68V8VW'')11)T[[I#**112r#   c                s    V P                   P                  \        P                  V P                  4       V P                   P                  \        P
                  V P                  4       R # N)rY   Z	subscriber   mapping_on_mapping_changeduinputs_on_uinputs_changedrK      &r!   rh   ZAutocompletion.attach_to_events   sF    %%k&9&94;S;ST%%k&9&94;S;STr#   c                sH    \         P                  ! ^dV P                  4       R# )zThe code editor was unfocused.F)r   Ztimeout_addrj   )rK   _s   &*r!   re   Z(Autocompletion.on_gtk_text_input_unfocus   s    dll+ r#   c                4   < V ^8  d   QhRS[ P                  /# )r   event)r   ZEventKeyrE   rG   r!   r"   r\      s     ; ; ;r#   c                s   V P                   '       g   R# VP                  \        P                  8X  d   V P	                  4        R# V P
                  P                  4       pVP                  \        P                  \        P                  \        P                  39  d   V P
                  P                  R4       R# VP                  \        P                  8X  d3   Vf   R# V P
                  P                  RV4       \        P                  # \        V P
                  P                  4       4      pVf}   VP                  \        P                  8X  d   V P
                  P                  ^ 4      pVP                  \        P                  8X  d#   V P
                  P                  V^,
          4      pMVP!                  4       pTpVP                  \        P                  8X  d
   V^,          pVP                  \        P                  8X  d
   V^,          pV^ 8  d
   V^,
          pWt^,
          8  d   ^ pV P
                  P                  V4      pV P
                  P                  X4       V P#                  V4       \        P                  # )z:Using the keyboard to select an autocompletion suggestion.Nr]   )rg   Zkeyvalr   Z
KEY_Escaperj   ra   Zget_selected_rowZKEY_DownZKEY_UpZ
KEY_ReturnZ
select_rowemitZ
EVENT_STOPr;   get_childrenZget_row_at_indexZ	get_index_scroll_to_row)rK   rr   rt   selected_rowZnum_rowsZnew_selected_rowZselected_indexZ	new_indexs   &&&     r!   rd   ZAutocompletion.navigate   s   |||<<3>>)LLN}}557<<cjj#..II MM$$T*<<3>>)# MM=>>!t}}1134||s||+#'==#A#A!#D ||szz)#'==#A#A(Q,#O  *335N&I||s||+Q	||szz)Q	1}$qL	a<'	#}}==iH  !12,- ~~r#   c                rs   )r   row)r   Z
ListBoxRowrE   rG   r!   r"   r\   /  s     ,6 ,6#.. ,6r#   c                sV   VP                  4       P                  pV P                  P                  4       pV'       d   VP	                  V P                  ^ ^ 4      ^,          pWB8  d   ^ pWCVR,          ,
          8  d   TpV P
                  P                  4       pV P
                  P                  4       P                  4       pV P
                  P                  4       pWFWR,
          ,           8  d!   WEV,
          ,
          pVP                  V4       WF8  d   VP                  V4       R# R# R# )z-Scroll up or down so that the row is visible.g      ?N)
Zget_allocationheightra   Zget_allocated_heightZtranslate_coordinatesr`   Zget_max_content_heightZget_vadjustmentZ	get_valueZ	set_value)	rK   ry   Z
row_heightZlist_box_heightZrow_y_positionrz   Zcurrent_y_scrollZvadjustmentZvalues	   &&       r!   rw   ZAutocompletion._scroll_to_row/  s    '')00
--<<> !66t}}aKANN *!" *s2B BB!0 ))@@BF#33CCEOOQ..>>@K
 F4G HH&:*=>%%e,0%%n5 1A r#   c                s    V P                   P                  P                  4       ^ ,          pV P                   P                  P                  VP                  VP
                  4      ^,          # )z5Get Gtk.TextIter at the current text cursor location.)r[   rc   get_cursor_locationsZget_iter_at_locationxy)rK   cursors   & r!   _get_text_iter_at_cursorZ'Autocompletion._get_text_iter_at_cursor]  sM    !!%%::<Q?##88688LQOOr#   c                2   < R V n         \        SV `	  4        R# )TN)rg   rI   popuprK   rL      &r!   r   ZAutocompletion.popupb  s    r#   c                r   )FN)rg   rI   rj   r   r   r!   rj   ZAutocompletion.popdownf  s    r#   c                s   \        V P                  4      ^ 8X  d   \        P                  ! R4       R# V P                  P
                  P                  4       '       g   V P                  4        R# V P                  P                  V P                  P                  4       V P                  P
                  P                  4       ^ ,          pV P                  P
                  P                  \        P                  P                  VP                   VP"                  4      pVP$                  Vn        VP&                  Vn        V;P"                  ^,          un        V P                  P
                  P)                  4       '       d   V;P                   ^0,          un        V P+                  V4       V P-                  4       p\/        V4      pV\1        W@P                  4      ,          p\        V4      ^ 8X  d   V P                  4        R# V P3                  4        V F<  w  rg\5        Wv4      pV P                  P7                  VR4       VP9                  4        K>  	  R# )zCFind new autocompletion suggestions and display them. Hide if none.z No target capabilities availableNi)r;   r_   r   Zerrorr[   rc   Zis_focusrj   ra   Zforallremover{   Zbuffer_to_window_coordsr   ZTextWindowTypeZTEXTr|   r}   Zwindow_xZwindow_yZget_show_line_numbersZset_pointing_tor   rA   r>   r   rB   Zinsertri   )	rK   rr   r~   Zwindow_coordsr8   Zsuggested_namesrD   rC   rH   s	   &*       r!   rf   ZAutocompletion.updatej  s    t,,-2LL;<##,,..LLNT]]112 !!%%::<Q? ((,,DD##VXXvxx
 !)) ))B5577HHNHV$113	0;?96S6STT1$LLN

 )8$J#L=EMM  +NN )8r#   c                s    V P                   '       dD   V P                  '       d0   V P                  V P                   ,          \        ,          V n        R # R # R # rk   )_target_uinputr^   r   r_   rp   rq   r!   _update_capabilitiesZ#Autocompletion._update_capabilities  s:    4===,0MM$:M:M,Nv,VD) $1r#   c                    < V ^8  d   QhRS[ /# )r   rl   r   rE   rG   r!   r"   r\     s     $ $; $r#   c                H    VP                   V n        V P                  4        R # rk   )Ztarget_uinputr   r   )rK   rl      &&r!   rm   Z"Autocompletion._on_mapping_changed  s    %33!!#r#   c                r   )r   datar   rE   rG   r!   r"   r\     s     $ $ $r#   c                r   rk   )rn   r^   r   )rK   r   r   r!   ro   Z"Autocompletion._on_uinputs_changed  s    !!#r#   c                s   VP                  4       ^ ,          pVP                  pV P                  P                  P	                  4       pV P                  4       pVP                  WeP                  4       R4      p\        P                  ! RV4      pV'       d
   V^,          MRp\        P                  P                  V P                  P                  \        P                  P                  \        V4      4       V P                  4       pVP                  VP!                  4       VR4      p	\        P                  ! R\        P"                  ! RRV	4      4      pV'       d
   V^,          MRp	\        P                  P                  V P                  P                  \        P                  P                  \        V	4      ) 4       \        P                  P%                  V P                  P                  V4       V P'                  R4       R# )	zAAn autocompletion suggestion was selected and should be inserted.Tz^(\w+)r/   z	.*?(\w+)$r$   r%   suggestion-insertedN)rv   rD   r[   rc   r&   r   r'   Zget_end_iterr0   r1   r   ZTextViewZdo_delete_from_cursorZ
DeleteTypeZCHARSr;   r(   ZsubZdo_insert_at_cursorru   )
rK   rr   rx   Zselected_labelrD   r*   Zcursor_iterZrightr1   Zlefts
   &&&       r!   rb   Z%Autocompletion._on_suggestion_clicked  sl   %224Q7#..
!!%%002 335-@-@-BDIE*!ar**  #.."6"6E
	

 335v446TJrvvdC'>? uQxb**  #.."6"6T
	

 	(()9)9)=)=zJ		'(r#   c                s6   < V ^8  d   Qh/ S[ S[,          ;R&   # )r   r   )r   r   rE   rG   r!   r"   r\      s      SM( r#   )	r_   r   r^   r[   rZ   ra   rY   r`   rg   )rM   rN   rO   rP   rQ   rR   r   rJ   rh   re   rd   rw   r   r   rj   r   rf   r   rm   ro   rb   Z__annotate_func__rS   rT   rU   rV   rW   r!   rX   rX      s     
 &N$(NB BHU; ;z,6 ,6\P
 c]+ +ZW$ $$ $)W  r#   rX   r   )7rQ   r0   Ztypingr    r   r   r   Zevdev.ecodesr   Zgi.repositoryr   r   r   r   Z%inputremapper.configs.keyboard_layoutr	   r
   Zinputremapper.configs.mappingr   Z#inputremapper.gui.components.editorr   Zinputremapper.gui.controllerr   Z)inputremapper.gui.messages.message_brokerr   r   Z'inputremapper.gui.messages.message_datar   Zinputremapper.gui.utilsr   Z$inputremapper.injection.macros.parser   Zinputremapper.logging.loggerr   r@   Zkeysr;   r?   r   r:   ZCapabilitiesr,   r3   r2   r6   r7   r>   rA   ZLabelrB   ZPopoverrX   Z
signal_newZSignalFlagsZ	RUN_FIRST)r=   s   0r!   <module>r      s  * % 
 . .  1 1 O 5 : 3 P ? , 7 / $*#6#6#;#;#=O#=4TQ$$#=O   f CI 	!*&$0%cii %g)S[[ g)T	   !!u Ps   ;D,D,