Package org.eclim.plugin.pydev

Source Code of org.eclim.plugin.pydev.PluginResources

/**
* Copyright (C) 2012 - 2013
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.eclim.plugin.pydev;

import java.util.ArrayList;
import java.util.List;

import org.eclim.Services;

import org.eclim.logging.Logger;

import org.eclim.plugin.AbstractPluginResources;

import org.eclim.plugin.core.preference.PreferenceFactory;
import org.eclim.plugin.core.preference.Preferences;
import org.eclim.plugin.core.preference.PreferencesOptionHandler;

import org.eclim.plugin.core.project.ProjectManagement;
import org.eclim.plugin.core.project.ProjectNatureFactory;

import org.eclim.plugin.pydev.project.PydevProjectManager;

import org.python.pydev.core.ICodeCompletionASTManager;
import org.python.pydev.core.ICompletionState;
import org.python.pydev.core.IPythonNature;
import org.python.pydev.core.IToken;

import org.python.pydev.editor.codecompletion.revisited.CompletionCache;
import org.python.pydev.editor.codecompletion.revisited.CompletionStateFactory;

import org.python.pydev.editor.preferences.PydevEditorPrefs;

import org.python.pydev.plugin.nature.PythonNature;

import com.python.pydev.analysis.AnalysisPreferenceInitializer;

/**
* Implementation of AbstractPluginResources.
*
* @author Eric Van Dewoestine
*/
public class PluginResources
  extends AbstractPluginResources
{
  private static final Logger logger = Logger.getLogger(PluginResources.class);

  /**
   * Name that can be used to lookup this PluginResources from
   * {@link Services#getPluginResources(String)}.
   */
  public static final String NAME = "org.eclim.pydev";

  @Override
  public void initialize(String name)
  {
    super.initialize(name);

    // add the nature alias
    ProjectNatureFactory.addNature("python", PythonNature.PYTHON_NATURE_ID);
    ProjectManagement.addProjectManager(
        PythonNature.PYTHON_NATURE_ID, new PydevProjectManager());

    PreferenceFactory.addPreferences(PythonNature.PYTHON_NATURE_ID,
    //  "PYDEV org.eclim.python.builtins {} JSON{}\n" +
      "PYDEV org.eclim.python.ignore.unresolved.imports [] JSON[]\n" +
      "PYDEV org.eclim.python.ignore.builtin.reserved [] JSON[]"
    );

    // Note: pydev doesn't currently support project level preferences
    PreferencesOptionHandler handler = new PreferencesOptionHandler(
        PythonNature.PYTHON_NATURE_ID, false);
    handler.addSupportedPreferences("org.python.pydev", new String[]{
      PydevEditorPrefs.TAB_WIDTH,
    });

    new AnalysisPreferenceInitializer().initializeDefaultPreferences();
    handler.addSupportedPreferences("com.python.pydev.analysis", new String[]{
      AnalysisPreferenceInitializer.NAMES_TO_IGNORE_UNUSED_VARIABLE,
      AnalysisPreferenceInitializer.NAMES_TO_IGNORE_UNUSED_IMPORT,
      AnalysisPreferenceInitializer.NAMES_TO_CONSIDER_GLOBALS,
    });
    Preferences.addOptionHandler(handler);
    PreferenceFactory.addOptions(PythonNature.PYTHON_NATURE_ID,
      "PYDEV org.python.pydev.TAB_WIDTH \\d+\n" +
      "PYDEV com.python.pydev.analysis.NAMES_TO_CONSIDER_GLOBALS\n" +
      "PYDEV com.python.pydev.analysis.NAMES_TO_IGNORE_UNUSED_VARIABLE\n" +
      "PYDEV com.python.pydev.analysis.NAMES_TO_IGNORE_UNUSED_IMPORT"
    );

    // pre-init the builtin completions for the python natures so that users
    // don't have to wait on this on the first save
    List<IPythonNature> natures = PythonNature.getAllPythonNatures();
    logger.debug("pre-loading python builtin completions...");
    for (IPythonNature nature : natures){
      ICompletionState completionState = CompletionStateFactory
        .getEmptyCompletionState(nature, new CompletionCache());
      ICodeCompletionASTManager manager = nature.getAstManager();
      if (manager != null){
        // this is the part that takes some time to complete
        manager.getBuiltinCompletions(completionState, new ArrayList<IToken>());
      }
    }
    logger.debug("finished loading python builtin completions.");
  }

  @Override
  protected String getBundleBaseName()
  {
    return "org/eclim/plugin/pydev/messages";
  }
}
TOP

Related Classes of org.eclim.plugin.pydev.PluginResources

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.