final int[] startOffsets = selectionModel.getBlockSelectionStarts();
final int[] endOffsets = selectionModel.getBlockSelectionEnds();
- List<TextBlockTransferableData> transferableDatas = new ArrayList<TextBlockTransferableData>();
+ final List<TextBlockTransferableData> transferableDatas = new ArrayList<TextBlockTransferableData>();
- DumbService.getInstance(project).setAlternativeResolveEnabled(true);
- try {
- for (CopyPastePostProcessor<? extends TextBlockTransferableData> processor : Extensions.getExtensions(CopyPastePostProcessor.EP_NAME)) {
- transferableDatas.addAll(processor.collectTransferableData(file, editor, startOffsets, endOffsets));
+ DumbService.getInstance(project).withAlternativeResolveEnabled(new Runnable() {
+ @Override
+ public void run() {
+ for (CopyPastePostProcessor<? extends TextBlockTransferableData> processor : Extensions.getExtensions(CopyPastePostProcessor.EP_NAME)) {
+ transferableDatas.addAll(processor.collectTransferableData(file, editor, startOffsets, endOffsets));
+ }
}
- }
- finally {
- DumbService.getInstance(project).setAlternativeResolveEnabled(false);
- }
+ });
String text = editor.getCaretModel().supportsMultipleCarets()
? EditorCopyPasteHelperImpl.getSelectedTextForClipboard(editor, transferableDatas)
final CodeInsightSettings settings = CodeInsightSettings.getInstance();
final Map<CopyPastePostProcessor, List<? extends TextBlockTransferableData>> extraData = new HashMap<CopyPastePostProcessor, List<? extends TextBlockTransferableData>>();
- Collection<TextBlockTransferableData> allValues = new ArrayList<TextBlockTransferableData>();
+ final Collection<TextBlockTransferableData> allValues = new ArrayList<TextBlockTransferableData>();
- DumbService.getInstance(project).setAlternativeResolveEnabled(true);
- try {
- for (CopyPastePostProcessor<? extends TextBlockTransferableData> processor : Extensions.getExtensions(CopyPastePostProcessor.EP_NAME)) {
- List<? extends TextBlockTransferableData> data = processor.extractTransferableData(content);
- if (!data.isEmpty()) {
- extraData.put(processor, data);
- allValues.addAll(data);
+ DumbService.getInstance(project).withAlternativeResolveEnabled(new Runnable() {
+ @Override
+ public void run() {
+ for (CopyPastePostProcessor<? extends TextBlockTransferableData> processor : Extensions.getExtensions(CopyPastePostProcessor.EP_NAME)) {
+ List<? extends TextBlockTransferableData> data = processor.extractTransferableData(content);
+ if (!data.isEmpty()) {
+ extraData.put(processor, data);
+ allValues.addAll(data);
+ }
}
}
- }
- finally {
- DumbService.getInstance(project).setAlternativeResolveEnabled(false);
- }
+ });
text = TextBlockTransferable.convertLineSeparators(editor, text, allValues);
final PsiFile file = getPsiFile();
if (file != null) {
CodeStyleManager style = CodeStyleManager.getInstance(myProject);
- DumbService.getInstance(myProject).setAlternativeResolveEnabled(true);
- try {
- for (TemplateOptionalProcessor optionalProcessor : Extensions.getExtensions(TemplateOptionalProcessor.EP_NAME)) {
- optionalProcessor.processText(myProject, myTemplate, myDocument, myTemplateRange, myEditor);
+ DumbService.getInstance(myProject).withAlternativeResolveEnabled(new Runnable() {
+ @Override
+ public void run() {
+ for (TemplateOptionalProcessor optionalProcessor : Extensions.getExtensions(TemplateOptionalProcessor.EP_NAME)) {
+ optionalProcessor.processText(myProject, myTemplate, myDocument, myTemplateRange, myEditor);
+ }
}
- }
- finally {
- DumbService.getInstance(myProject).setAlternativeResolveEnabled(false);
- }
+ });
PsiDocumentManager.getInstance(myProject).doPostponedOperationsAndUnblockDocument(myDocument);
// for Python, we need to indent the template even if reformatting is enabled, because otherwise indents would be broken
// and reformat wouldn't be able to fix them