boolean (Editor editor, TemplateSegments segments, int currentSegmentNumber, String commandName) { if (editor != null && currentSegmentNumber >= 0) { final int offset = editor.getCaretModel().getOffset(); boolean hasSelection = editor.getSelectionModel().hasSelection(); final int segmentStart = segments.getSegmentStart(currentSegmentNumber); if (offset < segmentStart || !hasSelection && offset == segmentStart && ActionsBundle.actionText(IdeActions.ACTION_EDITOR_BACKSPACE).equals(commandName)) return true; final int segmentEnd = segments.getSegmentEnd(currentSegmentNumber); if (offset > segmentEnd || !hasSelection && offset == segmentEnd && ActionsBundle.actionText(IdeActions.ACTION_EDITOR_DELETE).equals(commandName)) return true; } return false; }