Action

Smart Parentheses

Posted by agiletortoise, Last update 7 months ago

If a selection is present, wrap the text in parentheses. If no selection, scan text for last parenthesis and close it if last one was an open parenthesis, or insert open parenthesis if not.

Steps

  • script

    // Smart parentheses key
    //
    // If a selection is present, wrap the text in parentheses
    //
    // If no selection, scan text for last parenthesis and
    // close it if last one was an open parenthesis, or
    // insert open parenthesis if not.
    
    const open = "(";
    const close = ")";
    
    const range = editor.getSelectedRange();
    const priorText = editor.getTextInRange(0, range[0]);
    
    if (range[1] > 0) { 
     //text selected, wrap it!
     editor.setSelectedText(open + editor.getSelectedText() + close);
     editor.setSelectedRange(range[0] + range[1] + open.length + close.length, 0);
    }
    else {
     // no selection, find last 
     const lastOpen = priorText.lastIndexOf(open);
     const lastClose = priorText.lastIndexOf(close);
     
     if (lastOpen == -1 || lastClose > lastOpen) { // no close, use open
       editor.setSelectedText(open);
       editor.setSelectedRange(range[0]+open.length, 0);
     }
     else { // close last open
       editor.setSelectedText(close);
       editor.setSelectedRange(range[0]+close.length, 0);
     }
    }
    

Options

  • After Success Nothing
    Notification Error
    Log Level Error
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.