Завершение JS-кода библиотеки RSTALanguageSupport - PullRequest
0 голосов
/ 21 февраля 2019

Я использую библиотеку RSTALanguageSupport , чтобы получить автозаполнение для JavaScript в моем редакторе, часть редактора сделана с библиотекой RSyntaxTextArea , обабиблиотеки работают вместе.

Мне бы хотелось, чтобы LanguageSupportFactory для JavaScript работал бы также для классов и переменных, которые связаны с помощью метода put () движка при оценке JavaScript с использованием сценариев Java, например:

engine = new ScriptEngineManager().getEngineByName("JavaScript");
engine.put("obj", new MyClass());

Итак, когда я набираю obj.в редакторе он предложил бы методы MyClass.

Эта проблема из gitHub объясняет то же самое, что я хочу сделать:

https://github.com/bobbylight/RSyntaxTextArea

Я пытался реализоватьРешение, данное в этом вопросе, не принесло успеха:

public Example() {
        expTextArea = new RSyntaxTextArea(20, 60);
        expTextArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT);
        sp1 = new RTextScrollPane(expTextArea);

        factory = new ScriptEngineManager();
        engine = factory.getEngineByName("JavaScript");


        JavaScriptLanguageSupport languageSupport = new JavaScriptLanguageSupport();


        initMainPanel();
        initFrame();        


        JavaScriptCompletionProvider jsProvider = new JavaScriptCompletionProvider(languageSupport.getJarManager(),
                languageSupport);

        TypeDeclaration type = JavaScriptHelper.findOrMakeTypeDeclaration(User.class.getName(),
                jsProvider.getProvider());

        JavaScriptVariableDeclaration subject = new JavaScriptVariableDeclaration("s", Integer.MAX_VALUE,
                jsProvider.getProvider(), null);

        subject.setTypeDeclaration(type);
        jsProvider.getProvider().getVariableResolver().addPreProcessingVariable(subject);

        languageSupport.install(expTextArea);

    }

public void initFrame() {
        frame = new JFrame();
        frame.getContentPane();
        frame.setTitle("Example");
        frame.setSize(500, 500);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(mainPanel);
    }

    public void initMainPanel() {
        mainPanel = new JPanel(new MigLayout("", "[]", "[]"));
        mainPanel.add(sp1, "cell 0 0");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...