Search in sources :

Example 1 with Tokenizer

use of org.rstudio.studio.client.workbench.views.source.editors.text.ace.Tokenizer in project rstudio by rstudio.

the class TextEditingTargetReformatHelper method insertPrettyNewlines.

void insertPrettyNewlines() {
    AceEditor editor = (AceEditor) docDisplay_;
    if (editor != null) {
        String selectionText = docDisplay_.getSelectionValue();
        // Tokenize the selection and walk through and replace
        // TODO: Enable for other modes?
        Tokenizer tokenizer = Tokenizer.createRTokenizer();
        List<Token> tokens = tokenizer.tokenize(selectionText);
        SimpleTokenCursor cursor = new SimpleTokenCursor(tokens);
        // Set the initial state -- we recurse every time we encounter
        // an opening paren, so check for that initially.
        String lhs = "";
        String rhs = "";
        if (cursor.isLeftBrace()) {
            lhs = cursor.currentValue();
            rhs = cursor.getComplement(lhs);
        }
        // TODO: Figure out current nesting level for the
        // active selection.
        doInsertPrettyNewlines(cursor, lhs, rhs, 0, 0, true);
        // Build the replacement from the modified token set
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < tokens.size(); i++) builder.append(tokens.get(i).getValue());
        String replacement = builder.toString();
        // Trim off trailing whitespace
        replacement = replacement.replaceAll("[ \\t]*\\n", "\n");
        replacement = replacement.replaceAll("\\n+$", "\n");
        docDisplay_.replaceSelection(replacement);
        docDisplay_.reindent(docDisplay_.getSelectionRange());
    }
}
Also used : Token(org.rstudio.studio.client.workbench.views.source.editors.text.ace.Token) Tokenizer(org.rstudio.studio.client.workbench.views.source.editors.text.ace.Tokenizer)

Aggregations

Token (org.rstudio.studio.client.workbench.views.source.editors.text.ace.Token)1 Tokenizer (org.rstudio.studio.client.workbench.views.source.editors.text.ace.Tokenizer)1