
    Je2                         d Z ddlZddlmZmZmZmZmZmZ ddl	m
Z
 ddl	mZ ddlmZ dZ ej                  e      Z G d d	e      Zy)
z
Text snippets completion actor.

This plugin takes a set of user-defined custom text snippets to insert on a
given source file.
    N)QObjectQThreadQMutexQMutexLockerSignalSlot)CompletionItemKind)CompletionRequestTypes)TrieSnippetsc                       e Zd Z e       Z eee      Z ee      Z ee      Z	d Z
d Zd Zd Z ee      d        Z ee      d        Zy)SnippetsActorc                    t        j                  |        d| _        d| _        t	               | _        i | _        t        d       | _        | j                  | j                         | j                  j                  j                  | j                         | j                  j                  | j                         | j                  j                  | j                         y )NFT)r   __init__stoppeddaemonr   mutexlanguage_snippetsr   threadmoveToThreadstartedconnectsig_mailbox
handle_msgsig_update_snippetsupdate_snippets)selfparents     T/usr/lib/python3/dist-packages/spyder/plugins/completion/providers/snippets/actor.pyr   zSnippetsActor.__init__'   s    X
!#dm$++&##DLL1  1  (()=)=>    c                     t        | j                        5  t        j                  d       | j                  j                          | j                  j                          ddd       y# 1 sw Y   yxY w)zStop actor.zSnippets plugin stopping...N)r   r   loggerdebugr   quitwaitr   s    r   stopzSnippetsActor.stop4   sP    $**% 	LL67KKKK	 	 	s   A
A))A2c                 8    | j                   j                          y)zStart thread.N)r   startr&   s    r   r)   zSnippetsActor.start;   s    r    c                 b    t         j                  d       | j                  j                          y)zThread started.zSnippets plugin starting...N)r"   r#   sig_snippets_readyemitr&   s    r   r   zSnippetsActor.started?   s!    23$$&r    c                     t         j                  d       |D ]3  }||   }t               }|D ]  }||   }||f||<    || j                  |<   5 y)zUpdate available snippets.zUpdating snippets...N)r"   r#   r   r   )r   snippetslanguagelang_snippets	lang_trietriggertrigger_descriptionss          r   r   zSnippetsActor.update_snippetsD   so     	+,  	9H$X.MI( E'4W'=$&-/C%D	'"E 09D""8,	9r    c                 Z   dD cg c]  }||   	 c}\  }}}}t         j                  dj                  ||             |t        j                  k(  r|d   }|d   }g }	|!d|	i}	| j
                  j                  ||	       y|| j                  v rx| j                  |   }
|
|   rd|
|   D ]\  }|j                  \  }}|D ]F  }||   }|d   }|d   }|	j                  t        j                  || d	| d
d| |dt        |d       H ^ d|	i}	| j
                  j                  ||	       yyc c}w )zHandle one message)typeidfilemsgzPerform request {0} with id {1}r/   current_wordNparamstextremove_triggerz ()zzz )kind
insertTextlabelsortText
filterTextdocumentationproviderr<   )r"   r#   formatr
   DOCUMENT_COMPLETIONsig_snippets_responser,   r   valueappendr	   SNIPPETSNIPPETS_COMPLETION)r   messagekmsg_type_idr7   r8   r/   r9   r.   r   noder2   infodescriptiondescription_snippetr;   r<   s                     r   r   zSnippetsActor.handle_msgP   sy    !>$?GAJ$? #tS7>>xMN-AAA:H~.LH#$h/**//X>4111$($:$:8$D!$\2 1, ? (,

+/ K26{2C/#6v#>D-@ 0.2N$OO(:(B(B.2,39B{m1)E.1'O.513,?2@	- 	$ !(+H&&++C:A B$?s   D(N)__name__
__module____qualname__r   r+   intdictrI   r   r   r   r'   r)   r   r   r   r    r    r   r   r       sn    "3- ,,K?'
 
$Z	9 	9 
$Z%; %;r    r   )__doc__loggingqtpy.QtCorer   r   r   r   r   r   spyder.plugins.completion.apir	   r
   1spyder.plugins.completion.providers.snippets.trier   rM   	getLoggerrV   r"   r   r[   r    r   <module>rb      sK     M L = @ B ! 			8	$V;G V;r    