- C/C++ *
- C# *
- Java *
- Kotlin *
- Javascript/Typescript *
- PHP *
- Python
- V
- Rust
- Groovy
- Go
*: those what I have more experience with
Intellij plugin that adds many actions which are missing in the IDE!
Home Page: https://mohammadmd1383.github.io/Actionable/
License: MIT License
Similar to #37, this is something I do all the time, but never think twice that there should be a better way of doing it. Basically it sums down to this-- As developers, sometimes the fastest way to add new functionality is to paste or duplicate other code and tweak variable names. So you might have this piece of code:
var decrement = this.props.shouldDecrementValue();
And say you now want to add a new method called shouldIncrementValue
. Naturally you will duplicate that line above and replace "de" with "in" like so:
var decrement = this.props.shouldDecrementValue();
var increment = this.props.shouldIncrementValue();
But as you'll notice that the first change was all lowercase "in" and in the method, it's camelcased "In". This is a simple problem with 2 locations where you will want to change casing, but if you're refactoring a complex method and changing a variable name in dozens of locations, this will take a lot more work.
Solution: it would be faster to update all carets by only typing your changes once instead of for x times you need replaced.
var decrement = this.props.shouldDecrementValue();
var decrementVariationA = "variation a";
var decrementVariationB = "variation b";
var decrementVariationC = "variation c";
var decrementVariationD = "variation d";
function shouldDecrementValue(etc) {
var thisDecrement = "";
var thisDecrementArray = [];
}
1.) Before: Key: [] = selection range, | is cursor
var [decrement]| = this.props.should[Decrement]|Value();
var [decrement]|VariationA = "variation a";
var [decrement]|VariationB = "variation b";
var [decrement]|VariationC = "variation c";
var [decrement]|VariationD = "variation d";
function should[Decrement]|Value(etc) {
var this[Decrement]| = "";
var this[Decrement]|Array = [];
}
2.) Execute action, a single line input dialog box comes up, you enter in your new word in all lowercase: "increment"
3.) After action: Key: [] = selection range, | is cursor
var increment| = this.props.shouldIncrement|Value();
var increment|VariationA = "variation a";
var increment|VariationB = "variation b";
var increment|VariationC = "variation c";
var increment|VariationD = "variation d";
function shouldIncrement|Value(etc) {
var thisIncrement| = "";
var thisIncrement|Array = [];
}
Note: The result caret placement isn't even important if it makes it easier.
It will predict which casing you are replacing and fill it in accordingly. Again, this is essentially #37 but instead of using the clipboard, you are typing your replacement into a dialog box.
Here is a sample of how to document actions.
The @documentation annotation must be used exactly like above
some tips about it:
In the end you should execute docgen.py
in project root
Hi i have an idea for a useful tool that if you right click in a var name or method name etc it will be copied automatically.. This is very useful when i have a long name for my variable and it will save a lot of my time😁
Another GREAT feature of Missing in Actions. Reference links at bottom.
So there would be a toggle you could check/uncheck similar to your match case select next occurrence functionality. It would guess the casing of what you're pasting over, and if it doesn't match the current line casing, it converts it into it.
This would be a cool feature and would also be great for multiple caret replace. Also would be cool to have work with the Duplicate and Paste action when this is toggled on.
Key:
Clipboard:
APascalCaseString
aCamelCaseString
ALLUPPERCASESTRING
Code:
[lowertextfunction]|();
[UPPERCASEFUNCTION]|();
[PascalCaseFunction]|();
Execute Action Results:
apascalcasestring();
ACAMELCASESTRING();
Alluppercasestring(); <- if you want to try to guess words, then this might be AllUppercaseString();
Case #2: One clipboard on top of multiple selections:
Clipboard:
ALLUPPERCASESTRING
Code:
[lowertextfunction]|();
[UPPERCASEFUNCTION]|();
[PascalCaseFunction]|();
Execute Action Results:
alluppercasestring();
ALLUPPERCASESTRING();
Alluppercasestring(); <- if you want to try to guess words, then this might be AllUppercaseString();
References:
I noticed a discrepancy between the default "Add Selection to next occurrence" and yours... yours doesn't scroll down when it selects new ones. It selects things out of view. I suspect the add previous selection also doesn't scroll up when it finds matches.
Add Selection to next occurrence doesn't work with "Move to Next Occurence". (Basically skipping over the currently selected occurrence.) Basically if you match an occurrence but don't want to select it, you can't easily skip over it.
Will this have sublime text macro capabilities where it can write text based on regex expressions or # of characters written? Example:
|
-
a|
-
--
ad|
--
<snippet>
<content><![CDATA[
${1/./-/g}
${1:}
${1/./-/g}
]]></content>
<tabTrigger>aaa</tabTrigger>
</snippet>
Currently there is a way to select text between different quote characters, however each way requires it's own keybind and could be re-made to just use one bind and intelligently look up which quote character to select between.
This would need to work with both syntaxes and plain text quotes; here are some following use cases to test against: (Key: | is cursor and [] is selection bounds)
let ssingle = '|SELECTED';
let ssingle2 = 'SELECTED|';
let ssingle3 = 'SELE|CTED';
let sdouble = "|SELECTED";
let sdouble2 = "SELECTED|";
let sdouble3 = "SELE|CTED";
let stemplate = `|SELECTED`;
let stemplate2 = `SELECTED|`;
let stemplate3 = `SELE|CTED`;
let ssep = '|SELECTED' + '|SELECTED2';
After:
let ssingle = '[SELECTED]|';
let ssingle2 = '[SELECTED]|';
let ssingle3 = '[SELECTED]|';
let sdouble = "[SELECTED]|";
let sdouble2 = "[SELECTED]|";
let sdouble3 = "[SELECTED]|";
let stemplate = `[SELECTED]|`;
let stemplate2 = `[SELECTED]|`;
let stemplate3 = `[SELECTED]|`;
let ssep = '[SELECTED]|' + '[SELECTED2]|';
this "|is" a normal '|sentence'
this 'is expected| to's not be right'
After:
this "[is]|" a normal '[sentence]|'
this '[is expected to]|'s not be right'
Opened the new macro settings on a fresh install:
java.lang.NullPointerException: Cannot invoke "String.isEmpty()" because "segment" is null at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:224) at java.base/java.nio.file.Path.of(Path.java:147) at java.base/java.nio.file.Paths.get(Paths.java:69) at ir.mmd.intellijDev.Actionable.text.macro.settings.UI$1.documentChanged(UI.java:63) at com.intellij.openapi.editor.impl.DocumentImpl.lambda$changedUpdate$2(DocumentImpl.java:922) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeNonCancelableSection$3(CoreProgressManager.java:224) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:664) at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:620) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$computeInNonCancelableSection$4(CoreProgressManager.java:232) at com.intellij.openapi.progress.Cancellation.computeInNonCancelableSection(Cancellation.java:99) at com.intellij.openapi.progress.impl.CoreProgressManager.computeInNonCancelableSection(CoreProgressManager.java:232) at com.intellij.openapi.progress.impl.CoreProgressManager.executeNonCancelableSection(CoreProgressManager.java:223) at com.intellij.openapi.editor.impl.DocumentImpl.changedUpdate(DocumentImpl.java:919) at com.intellij.openapi.editor.impl.DocumentImpl.updateText(DocumentImpl.java:823) at com.intellij.openapi.editor.impl.DocumentImpl.insertString(DocumentImpl.java:555) at com.intellij.openapi.editor.EditorModificationUtilEx.insertStringAtCaretNoScrolling(EditorModificationUtilEx.java:79) at com.intellij.openapi.editor.EditorModificationUtilEx.insertStringAtCaret(EditorModificationUtilEx.java:55) at com.intellij.openapi.editor.EditorModificationUtilEx.insertStringAtCaret(EditorModificationUtilEx.java:47) at com.intellij.openapi.editor.impl.EditorCopyPasteHelperImpl.insertStringAtCaret(EditorCopyPasteHelperImpl.java:213) at com.intellij.openapi.editor.impl.EditorCopyPasteHelperImpl.lambda$pasteTransferable$1(EditorCopyPasteHelperImpl.java:143) at com.intellij.openapi.editor.impl.CaretModelImpl.lambda$runForEachCaret$3(CaretModelImpl.java:310) at com.intellij.openapi.editor.impl.CaretModelImpl.doWithCaretMerging(CaretModelImpl.java:419) at com.intellij.openapi.editor.impl.CaretModelImpl.runForEachCaret(CaretModelImpl.java:319) at com.intellij.openapi.editor.impl.CaretModelImpl.runForEachCaret(CaretModelImpl.java:296) at com.intellij.openapi.editor.impl.EditorCopyPasteHelperImpl.pasteTransferable(EditorCopyPasteHelperImpl.java:141) at com.intellij.openapi.editor.actions.PasteAction$Handler.executeWriteAction(PasteAction.java:28) at com.intellij.openapi.editor.actionSystem.EditorWriteActionHandler$1.run(EditorWriteActionHandler.java:56) at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:955) at com.intellij.openapi.editor.actionSystem.EditorWriteActionHandler.doExecute(EditorWriteActionHandler.java:70) at com.intellij.openapi.editor.actions.BasePasteHandler.doExecute(BasePasteHandler.java:44) at com.intellij.openapi.editor.actionSystem.EditorActionHandler.lambda$execute$4(EditorActionHandler.java:199) at com.intellij.openapi.editor.actionSystem.EditorActionHandler.doIfEnabled(EditorActionHandler.java:89) at com.intellij.openapi.editor.actionSystem.EditorActionHandler.execute(EditorActionHandler.java:198) at com.intellij.codeInsight.editorActions.PasteHandler.execute(PasteHandler.java:86) at com.intellij.codeInsight.editorActions.PasteHandler.doExecute(PasteHandler.java:57) at com.intellij.openapi.editor.actionSystem.EditorActionHandler.lambda$execute$4(EditorActionHandler.java:199) at com.intellij.openapi.editor.actionSystem.EditorActionHandler.doIfEnabled(EditorActionHandler.java:89) at com.intellij.openapi.editor.actionSystem.EditorActionHandler.execute(EditorActionHandler.java:198) at com.intellij.codeInsight.editorActions.LanguageConsolePasteHandler.doExecute(LanguageConsolePasteHandler.kt:24) at com.intellij.openapi.editor.actionSystem.DynamicEditorActionHandler.doExecute(DynamicEditorActionHandler.java:63) at com.intellij.openapi.editor.actionSystem.EditorActionHandler.lambda$execute$4(EditorActionHandler.java:199) at com.intellij.openapi.editor.actionSystem.EditorActionHandler.doIfEnabled(EditorActionHandler.java:89) at com.intellij.openapi.editor.actionSystem.EditorActionHandler.execute(EditorActionHandler.java:198) at com.intellij.openapi.editor.actionSystem.EditorAction.lambda$actionPerformed$0(EditorAction.java:93) at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:219) at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:174) at com.intellij.openapi.editor.actionSystem.EditorAction.actionPerformed(EditorAction.java:102) at com.intellij.openapi.editor.impl.EditorImpl$MyEditable.executeAction(EditorImpl.java:3353) at com.intellij.openapi.editor.impl.EditorImpl$MyEditable.performPaste(EditorImpl.java:3326) at com.intellij.ide.actions.PasteAction.actionPerformed(PasteAction.java:35) at com.intellij.openapi.actionSystem.ex.ActionUtil.doPerformActionOrShowPopup(ActionUtil.java:323) at com.intellij.openapi.actionSystem.ex.ActionUtil.lambda$performActionDumbAwareWithCallbacks$4(ActionUtil.java:302) at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:346) at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:302) at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$performAction$5(ActionMenuItem.java:296) at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:226) at com.intellij.openapi.actionSystem.impl.ActionMenuItem.performAction(ActionMenuItem.java:289) at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$new$0(ActionMenuItem.java:64) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$4(ActionMenuItem.java:111) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105) at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94) at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:111) at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:526) at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:558) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6648) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3392) at java.desktop/java.awt.Component.processEvent(Component.java:6413) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5022) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2802) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:781) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:730) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:724) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:754) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:752) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:751) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:909) at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:831) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:753) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$5(IdeEventQueue.java:437) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:772) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:436) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105) at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:615) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:434) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:813) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:480) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:121) at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191) at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236) at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234) at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234) at java.desktop/java.awt.Dialog.show(Dialog.java:1080) at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:743) at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:467) at com.intellij.openapi.ui.DialogWrapper.doShow(DialogWrapper.java:1676) at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1634) at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:90) at com.intellij.ide.actions.ShowSettingsAction.perform(ShowSettingsAction.java:60) at com.intellij.ide.actions.ShowSettingsAction.actionPerformed(ShowSettingsAction.java:47) at com.intellij.openapi.actionSystem.ex.ActionUtil.doPerformActionOrShowPopup(ActionUtil.java:323) at com.intellij.openapi.keymap.impl.ActionProcessor.performAction(ActionProcessor.java:47) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher$1.performAction(IdeKeyEventDispatcher.java:584) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.lambda$doPerformActionInner$9(IdeKeyEventDispatcher.java:706) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105) at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.lambda$doPerformActionInner$10(IdeKeyEventDispatcher.java:706) at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:346) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.doPerformActionInner(IdeKeyEventDispatcher.java:703) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.java:647) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.java:595) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processActionOrWaitSecondStroke(IdeKeyEventDispatcher.java:478) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.inInitState(IdeKeyEventDispatcher.java:467) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.java:225) at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.java:815) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:750) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$5(IdeEventQueue.java:437) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:772) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:436) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113) at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:615) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:434) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:813) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:480) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
| = caret:
A|
B|
C|
|
D|
After executing keybindable action:
A|
B|
C|
D|
https://github.com/vsch/MissingInActions/blob/4f2f9c1264144ed9e2db082614c57cb48eb8328b/src/com/vladsch/MissingInActions/actions/ActionUtils.java#L78 boolean wantNonBlankLines
null
java.lang.Throwable at com.intellij.diagnostic.LoadingState.logStateError(LoadingState.java:53) at com.intellij.diagnostic.LoadingState.checkOccurred(LoadingState.java:49) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.(ActionManagerImpl.java:139) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:47) at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClassWithConstructorInjection(ComponentManagerImpl.kt:877) at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:48) at com.intellij.serviceContainer.ServiceComponentAdapter.access$createAndInitialize(ServiceComponentAdapter.kt:12) at com.intellij.serviceContainer.ServiceComponentAdapter$doCreateInstance$1.run(ServiceComponentAdapter.kt:42) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:705) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:647) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:63) at com.intellij.openapi.progress.impl.CoreProgressManager.executeNonCancelableSection(CoreProgressManager.java:223) at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:41) at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:113) at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:67) at com.intellij.serviceContainer.BaseComponentAdapter.getInstance$default(BaseComponentAdapter.kt:60) at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:590) at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:573) at com.intellij.openapi.client.ClientAwareComponentManager.getFromSelfOrCurrentSession(ClientAwareComponentManager.kt:37) at com.intellij.openapi.client.ClientAwareComponentManager.getService(ClientAwareComponentManager.kt:22) at com.intellij.openapi.actionSystem.ActionManager.getInstance(ActionManager.java:30) at ir.mmd.intellijDev.Actionable.app.Startup.initComponent(Unknown Source) at com.intellij.serviceContainer.MyComponentAdapter.doCreateInstance(MyComponentAdapter.kt:44) at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:113) at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:67) at com.intellij.serviceContainer.BaseComponentAdapter.getInstance$default(BaseComponentAdapter.kt:60) at com.intellij.serviceContainer.ComponentManagerImpl.createComponents(ComponentManagerImpl.kt:407) at com.intellij.openapi.application.impl.ApplicationImpl.lambda$loadComponents$5(ApplicationImpl.java:369) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:183) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:705) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:647) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:63) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:170) at com.intellij.openapi.application.impl.ApplicationImpl.loadComponents(ApplicationImpl.java:369) at com.intellij.idea.ApplicationLoader$startApp$loadComponentInEdtFuture$1.run(ApplicationLoader.kt:136) at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1736) at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:214) at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21) at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:196) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794) at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:350) at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:84) at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:133) at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46) at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:189) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:407) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
I tried this on alot of places but it doesn't work for me
using C++ version 23
Clion 2022.2
Actionable version 3.11.0
idk if this helps even
I would love an action that selects the content of the line, without the whitespace.
Basically what the Perfect Line VSCode extension does. A bonus would be a separate action that works the same but copies the content instead of selecting it.
got idea from #37
for instance when you are in an xml document by moving up the tree you will actually move the caret to parent tag
Say I have this: Key | is caret
const obj = {
'|': '',
'': '',
'': '',
'': '',
'': '',
}
And I want to quickly fill out each string between ''. Currently there is no efficient way to move the cursor onto the next string element.
const obj = {
'': '|',
'': '',
'': '',
'': '',
'': '',
}
const obj = {
'': '',
'|': '',
'': '',
'': '',
'': '',
}
const obj = {
'': '',
'': '|',
'': '',
'': '',
'': '',
}
(and so forth)
So if your cursor is on PsiElement(JS:STRING_LITERAL) and you execute the command, your cursor will jump to the next PsiElement(JS:STRING_LITERAL).
In theory, this will jump the cursor between each empty ''. Right?
In addition, it would be cool to select next matching psi element as well.
const obj = {
'|text': 'more',
'text': 'more'
Execute Move Cursor to Next Matching PSI Element With Selection:
const obj = {
'[text]|': 'more',
'text': 'more'
Execute Move Cursor to Next Matching PSI Element With Selection:
const obj = {
'[text]': '[more]|',
'text': 'more'
Execute Move Cursor to Next Matching PSI Element With Selection:
const obj = {
'[text]': '[more]',
'[text]|': 'more'
Note: I notice that your cursor's PSI element is set to the new element when the cursor has changed position, so it would have to remember what was previously selected or else it will keep re-sampling new PSI elements each time it's selected something. You might need to have one command that "sets" the PSI element, then the Action would move/select based on what was "set".
If this is too complex, you could always just implement a "Move to next empty edit location" function.
Also I noticed that your version of "Add Selection to next occurrence" doesn't work properly with native "Unselect Occurrence". It deselects from top down instead of a soft "undo". I wonder if there is a way to remedy this without having to basically write your own versions of native functionality?
It will be very useful
Often times I have strings that are not the same length that I need to select until a certain character per line. Using IntelliJ's default tools, and even with some plugins, it's not always achievable.
Say you have this multi-caret in your text editor, where | is the multi caret:
|test-test.test
|test-test-test.test
|test-test-test-test-test.test
|test-test-test-test-test-test.test
How do you achieve this selection where [] are the selection boundaries?
[test-test].test
[test-test-test].test
[test-test-test-test-test].test
[test-test-test-test-test-test].test
This is a VERY simple use case, the ones I deal with are far more complex.
Rules:
1.) Must only work with the carets already existing.
2.) You can't cheat this by going to the end of each line and working backwards because the end of each line has the same number of words/characters.
3.) Can't select all instances of period and work back.
Also, yes you can also use a regex search within selection, but I am looking for push button solution that requires minimal if not zero setup or complexity.
One solution would be a multi character supported "select until" function or popup where you type in the character after executing the command and it looks forwards or backwards for your query.
Sublime text has an addon that does just this:
https://github.com/xavi-/sublime-selectuntil
I get this when I launch a project in intellij and immediately bring up the search anywhere bar:
com.intellij.diagnostic.PluginException: ir.mmd.intellijDev.Actionable.selection.UnselectFirstSelectionAction PluginClassLoader(plugin=PluginDescriptor(name=Actionable, id=ir.mmd.intellijDev.Actionable, descriptorPath=plugin.xml, path=~\AppData\Roaming\JetBrains\IntelliJIdea2022.1\plugins\Actionable, version=3.10.1, package=null, isBundled=false), packagePrefix=null, instanceId=153, state=active) at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:909) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.instantiate(ActionManagerImpl.java:201) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.convertStub(ActionManagerImpl.java:186) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getActionImpl(ActionManagerImpl.java:523) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getAction(ActionManagerImpl.java:512) at com.intellij.openapi.actionSystem.DefaultActionGroup.unStub(DefaultActionGroup.java:409) at com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(DefaultActionGroup.java:365) at com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(DefaultActionGroup.java:343) at com.intellij.openapi.actionSystem.impl.ActionUpdater.doGetChildren(ActionUpdater.java:663) at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$new$1(ActionUpdater.java:113) at com.intellij.openapi.actionSystem.impl.ActionUpdater.callAction(ActionUpdater.java:176) at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$new$2(ActionUpdater.java:113) at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$getGroupChildren$21(ActionUpdater.java:464) at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705) at com.intellij.openapi.actionSystem.impl.ActionUpdater.getGroupChildren(ActionUpdater.java:463) at com.intellij.openapi.actionSystem.impl.ActionUpdater$UpdateSessionImpl.children(ActionUpdater.java:746) at com.intellij.ide.util.gotoByName.GotoActionModel.lambda$collectActions$1(GotoActionModel.java:368) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:536) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$3(NonBlockingReadActionImpl.java:501) at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1152) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:75) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:158) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:115) at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:58) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:189) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683) at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:176) at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:58) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:112) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:75) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:501) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.executeSynchronously(NonBlockingReadActionImpl.java:428) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl.executeSynchronously(NonBlockingReadActionImpl.java:186) at com.intellij.ide.util.gotoByName.GotoActionModel.collectActions(GotoActionModel.java:375) at com.intellij.ide.util.gotoByName.GotoActionModel.collectActions(GotoActionModel.java:387) at com.intellij.ide.util.gotoByName.GotoActionModel.collectActions(GotoActionModel.java:387) at com.intellij.ide.util.gotoByName.GotoActionModel.collectActions(GotoActionModel.java:387) at com.intellij.ide.util.gotoByName.GotoActionModel.buildGroupMappings(GotoActionModel.java:108) at com.intellij.ide.util.gotoByName.GotoActionItemProvider.filterElements(GotoActionItemProvider.java:91) at com.intellij.ide.actions.searcheverywhere.ActionSearchEverywhereContributor.fetchWeightedElements(ActionSearchEverywhereContributor.java:97) at com.intellij.ide.actions.searcheverywhere.MixedResultsSearcher$ContributorSearchTask.run(MixedResultsSearcher.java:178) at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:212) at com.intellij.util.ConcurrencyUtil.lambda$underThreadNameRunnable$3(ConcurrencyUtil.java:200) at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:295) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: java.lang.ClassNotFoundException: ir.mmd.intellijDev.Actionable.selection.UnselectFirstSelectionAction PluginClassLoader(plugin=PluginDescriptor(name=Actionable, id=ir.mmd.intellijDev.Actionable, descriptorPath=plugin.xml, path=~\AppData\Roaming\JetBrains\IntelliJIdea2022.1\plugins\Actionable, version=3.10.1, package=null, isBundled=false), packagePrefix=null, instanceId=153, state=active) at com.intellij.serviceContainer.ComponentManagerImplKt.doLoadClass(ComponentManagerImpl.kt:1469) at com.intellij.serviceContainer.ComponentManagerImplKt.access$doLoadClass(ComponentManagerImpl.kt:1) at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:901) ... 56 more
Current behavior:
Before:
<tab><tab>Hi!|
After:
|
New action:
Before:
<tab><tab>Hi!|
After:
<tab><tab>|
https://github.com/vsch/MissingInActions/blob/4f2f9c1264144ed9e2db082614c57cb48eb8328b/src/com/vladsch/MissingInActions/actions/line/DeleteToLineStartIndentAction.java DeleteToLineStartIndentAction
null
com.intellij.diagnostic.PluginException: ir.mmd.intellijDev.Actionable.selection.UnselectFirstSelectionAction PluginClassLoader(plugin=PluginDescriptor(name=Actionable, id=ir.mmd.intellijDev.Actionable, descriptorPath=plugin.xml, path=~/Library/Application Support/JetBrains/GoLand2022.1/plugins/Actionable, version=3.10.1, package=null, isBundled=false), packagePrefix=null, instanceId=103, state=active) at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:909) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.instantiate(ActionManagerImpl.java:201) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.convertStub(ActionManagerImpl.java:186) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getActionImpl(ActionManagerImpl.java:523) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getAction(ActionManagerImpl.java:512) at com.intellij.openapi.actionSystem.DefaultActionGroup.unStub(DefaultActionGroup.java:409) at com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(DefaultActionGroup.java:365) at com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(DefaultActionGroup.java:343) at com.intellij.openapi.actionSystem.impl.ActionUpdater.doGetChildren(ActionUpdater.java:663) at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$new$1(ActionUpdater.java:113) at com.intellij.openapi.actionSystem.impl.ActionUpdater.callAction(ActionUpdater.java:176) at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$new$2(ActionUpdater.java:113) at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$getGroupChildren$21(ActionUpdater.java:464) at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705) at com.intellij.openapi.actionSystem.impl.ActionUpdater.getGroupChildren(ActionUpdater.java:463) at com.intellij.openapi.actionSystem.impl.ActionUpdater.iterateGroupChildren(ActionUpdater.java:608) at com.intellij.openapi.actionSystem.impl.ActionUpdater.expandGroupChild(ActionUpdater.java:496) at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$doExpandActionGroup$20(ActionUpdater.java:457) at com.intellij.util.containers.ContainerUtil.concat(ContainerUtil.java:1400) at com.intellij.openapi.actionSystem.impl.ActionUpdater.doExpandActionGroup(ActionUpdater.java:457) at com.intellij.openapi.actionSystem.impl.ActionUpdater.expandActionGroup(ActionUpdater.java:260) at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$expandActionGroupAsync$12(ActionUpdater.java:321) at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$expandActionGroupAsync$13(ActionUpdater.java:339) at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1152) at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$tryRunReadActionAndCancelBeforeWrite$17(ActionUpdater.java:371) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:158) at com.intellij.openapi.actionSystem.impl.ActionUpdater.tryRunReadActionAndCancelBeforeWrite(ActionUpdater.java:367) at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$expandActionGroupAsync$14(ActionUpdater.java:339) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:189) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683) at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:176) at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:365) at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$expandActionGroupAsync$15(ActionUpdater.java:338) at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:241) at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:31) at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:214) at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:212) at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:203) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: java.lang.ClassNotFoundException: ir.mmd.intellijDev.Actionable.selection.UnselectFirstSelectionAction PluginClassLoader(plugin=PluginDescriptor(name=Actionable, id=ir.mmd.intellijDev.Actionable, descriptorPath=plugin.xml, path=~/Library/Application Support/JetBrains/GoLand2022.1/plugins/Actionable, version=3.10.1, package=null, isBundled=false), packagePrefix=null, instanceId=103, state=active) at com.intellij.serviceContainer.ComponentManagerImplKt.doLoadClass(ComponentManagerImpl.kt:1469) at com.intellij.serviceContainer.ComponentManagerImplKt.access$doLoadClass(ComponentManagerImpl.kt:1) at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:901) ... 48 more
Is it possible to combine all of this into the one keybind "Select enclosing typing pairs"?
So the rules would be:
This would get rid of the 3 extra key binds. Or we can keep the new keybinds in there for people who need separate keybinds. However personally I'd rather just have one keybind that does all of this based on the conditions listed above.
Select literal element under cursor selects quote characters on first keypress, then on second press selects contents within the quotes.
It would be nice to first select the content between the quotes on first keypress, then include quotes on second keypress.
Thanks!
The source code for MIA is super complex, with a dialog box for options. Since this (I imagine) would be a huge undertaking, a simplified action would literally just duplicate the lines for x lines in clipboard and paste/retain caret position.
As of the latest version, IntelliJ has stealth removed the ability to bind to the keymap configuration screen. You can keybind to the keybind selector context menu, but not to the settings page. It would be nice to restore this functionality.
Here's a link to the settings window: jetbrains://idea/settings?name=Keymap
some parts of the project are messed up. I need to refactor/clean up the project.
especially I should write a cleaner script for build.gradle.kts
and some other code generation stuff...
Potentially helpful links:
Instead of using Clipboard on action, open up a multi line text box for direct input and using the content of the popup box as the reference.
It's convenient to pop up an input box popup because of how people's minds work. They usually want to execute the action before typing and copying their content into the clipboard first.
Say you have this:
<Route path='/products' component={Products} />
Key: [] selection bounds | caret.
<Route path='/[products]|' component={[Products]|} />
Execute action, multiline input box comes up with OK and Cancel button.
Type in:
home
products
about
careers
Press OK
Results: Key: | caret.
<Route path='/home|' component={Home|} />
<Route path='/products|' component={Products|} />
<Route path='/about|' component={About|} />
<Route path='/careers|' component={Careers|} />
Note: #37 implements a settings toggle (that can be bound to keybind and toolbar) that will decide if this will paste normally or preserve case for all Actionable commands. Preserving case won't be enabled by default.
Without preserving case toggled ON, the result would be:
home
PRODUCTS
about
Careers
<Route path='/home|' component={home|} />
<Route path='/PRODUCTS|' component={PRODUCTS|} />
<Route path='/about|' component={about|} />
<Route path='/Careers|' component={Careers|} />
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.