5353import java .util .Set ;
5454import java .util .logging .Level ;
5555import java .util .logging .Logger ;
56- import javax .swing .text .AbstractDocument ;
5756import javax .swing .text .Document ;
5857import javax .swing .text .JTextComponent ;
5958import org .netbeans .api .editor .mimelookup .MimeRegistration ;
6059import org .netbeans .api .lexer .Token ;
61- import org .netbeans .api .lexer .TokenHierarchy ;
6260import org .netbeans .api .lexer .TokenSequence ;
6361import org .netbeans .modules .parsing .spi .indexing .support .QuerySupport ;
6462import org .netbeans .modules .php .api .phpmodule .PhpModule ;
7068import org .netbeans .modules .php .editor .api .elements .FunctionElement ;
7169import org .netbeans .modules .php .editor .lexer .PHPTokenId ;
7270import org .netbeans .modules .php .wordpress .util .Charset ;
71+ import org .netbeans .modules .php .wordpress .util .DocUtils ;
7372import org .netbeans .spi .editor .completion .CompletionProvider ;
7473import org .netbeans .spi .editor .completion .CompletionResultSet ;
7574import org .netbeans .spi .editor .completion .CompletionTask ;
8786 *
8887 * @author junichi11
8988 */
90- @ MimeRegistration (mimeType = "text/x-php5" , service = CompletionProvider .class )
89+ @ MimeRegistration (mimeType = FileUtils . PHP_MIME_TYPE , service = CompletionProvider .class )
9190public final class FilterAndActionCompletion extends WordPressCompletionProvider {
9291
9392 private static final Logger LOGGER = Logger .getLogger (FilterAndActionCompletion .class .getName ());
@@ -112,16 +111,15 @@ public CompletionTask createTask(int queryType, JTextComponent component, final
112111 return new AsyncCompletionTask (new AsyncCompletionQuery () {
113112 @ Override
114113 protected void query (CompletionResultSet completionResultSet , Document doc , int caretOffset ) {
115- AbstractDocument ad = (AbstractDocument ) doc ;
116- ad .readLock ();
117- TokenHierarchy hierarchy = TokenHierarchy .get (doc );
118114 try {
119- TokenSequence <PHPTokenId > ts = (TokenSequence <PHPTokenId >) hierarchy .tokenSequence (PHPTokenId .language ());
115+ TokenSequence <PHPTokenId > ts = DocUtils .getTokenSequence (doc );
116+ if (ts == null ) {
117+ return ;
118+ }
120119 ts .move (caretOffset );
121120 ts .moveNext ();
122121 Token <PHPTokenId > token = ts .token ();
123122 if (token .id () != PHPTokenId .PHP_CONSTANT_ENCAPSED_STRING ) {
124- completionResultSet .finish ();
125123 return ;
126124 }
127125 String caretInput = ts .token ().text ().toString ();
@@ -135,7 +133,6 @@ protected void query(CompletionResultSet completionResultSet, Document doc, int
135133
136134 // check whether funciton is add_filter
137135 if (!isValidCompletion (ts ) || length < 2 ) {
138- completionResultSet .finish ();
139136 return ;
140137 }
141138
@@ -161,10 +158,8 @@ protected void query(CompletionResultSet completionResultSet, Document doc, int
161158 }
162159 }
163160 } finally {
164- ad . readUnlock ();
161+ completionResultSet . finish ();
165162 }
166-
167- completionResultSet .finish ();
168163 }
169164 }, component );
170165 }
@@ -267,10 +262,8 @@ public void refresh() {
267262 // use custom file
268263 if (phpModule != null ) {
269264 FileObject projectDirectory = phpModule .getProjectDirectory ();
270- if (projectDirectory != null ) {
271- filterXml = projectDirectory .getFileObject (CUSTOM_FILTER_CODE_COMPLETION_XML );
272- actionXml = projectDirectory .getFileObject (CUSTOM_ACTION_CODE_COMPLETION_XML );
273- }
265+ filterXml = projectDirectory .getFileObject (CUSTOM_FILTER_CODE_COMPLETION_XML );
266+ actionXml = projectDirectory .getFileObject (CUSTOM_ACTION_CODE_COMPLETION_XML );
274267 }
275268 // TODO improve loop
276269 InputStream filterInputStream = null ;
0 commit comments