@@ -283,7 +283,17 @@ public PhpModule getPhpModule() {
283283 //~ Inner class
284284 private class LookupListenerImpl implements LookupListener {
285285
286+ private final FileChangeAdapter fileChangeAdapter ;
287+
286288 public LookupListenerImpl () {
289+ fileChangeAdapter = new FileChangeAdapter () {
290+ @ Override
291+ public void fileChanged (FileEvent fe ) {
292+ String level = getDebugLevel (fe .getFile ());
293+ setLevel (level );
294+ setDebugLevelLabel (level );
295+ }
296+ };
287297 }
288298
289299 @ Override
@@ -313,6 +323,10 @@ public void resultChanged(LookupEvent lookupEvent) {
313323 setDebugLevelLabel (getLevel ());
314324 return ;
315325 } else {
326+ if (pm != null ) {
327+ // remove file change listener
328+ removeFileChangeListenerForConfig (pm );
329+ }
316330 pm = pmTemp ;
317331 setPhpModule (pm );
318332 }
@@ -322,19 +336,21 @@ public void resultChanged(LookupEvent lookupEvent) {
322336 if (config == null ) {
323337 return ;
324338 }
325- config .addFileChangeListener (new FileChangeAdapter () {
326- @ Override
327- public void fileChanged (FileEvent fe ) {
328- String level = getDebugLevel (fe .getFile ());
329- setLevel (level );
330- setDebugLevelLabel (level );
331- }
332- });
339+
340+ // add file change listener
341+ config .addFileChangeListener (fileChangeAdapter );
333342
334343 String level = getDebugLevel (config );
335344 setLevel (level );
336345 setDebugLevelLabel (level );
337346 }
347+
348+ private void removeFileChangeListenerForConfig (PhpModule pm ) {
349+ FileObject config = WPFileUtils .getDirectory (pm , WP_CONFIG_PHP );
350+ if (config != null ) {
351+ config .removeFileChangeListener (fileChangeAdapter );
352+ }
353+ }
338354 }
339355
340356 private static class JSeparatorImpl extends JSeparator {
0 commit comments