mirror of
				https://github.com/chylex/IntelliJ-IdeaVim.git
				synced 2025-11-04 01:40:12 +01:00 
			
		
		
		
	Compare commits
	
		
			7 Commits
		
	
	
		
			8bcb0d116d
			...
			customized
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						1afd0d3c37
	
				 | 
					
					
						|||
| 
						
						
							
						
						547bd08c7e
	
				 | 
					
					
						|||
| 
						
						
							
						
						0c4154547f
	
				 | 
					
					
						|||
| 
						
						
							
						
						92d8be1ba4
	
				 | 
					
					
						|||
| 
						
						
							
						
						080dbe9c0e
	
				 | 
					
					
						|||
| 
						
						
							
						
						ff7e6bf053
	
				 | 
					
					
						|||
| 
						
						
							
						
						f19ce34311
	
				 | 
					
					
						
@@ -8,10 +8,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# suppress inspection "UnusedProperty" for whole file
 | 
					# suppress inspection "UnusedProperty" for whole file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ideaVersion=2023.2.1
 | 
					ideaVersion=2023.2
 | 
				
			||||||
downloadIdeaSources=true
 | 
					downloadIdeaSources=true
 | 
				
			||||||
instrumentPluginCode=true
 | 
					instrumentPluginCode=true
 | 
				
			||||||
version=chylex-16
 | 
					version=chylex-18
 | 
				
			||||||
javaVersion=17
 | 
					javaVersion=17
 | 
				
			||||||
remoteRobotVersion=0.11.17
 | 
					remoteRobotVersion=0.11.17
 | 
				
			||||||
antlrVersion=4.10.1
 | 
					antlrVersion=4.10.1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,10 +14,14 @@ import com.intellij.openapi.actionSystem.ActionUpdateThread
 | 
				
			|||||||
import com.intellij.openapi.actionSystem.AnAction
 | 
					import com.intellij.openapi.actionSystem.AnAction
 | 
				
			||||||
import com.intellij.openapi.actionSystem.AnActionEvent
 | 
					import com.intellij.openapi.actionSystem.AnActionEvent
 | 
				
			||||||
import com.intellij.openapi.actionSystem.AnActionWrapper
 | 
					import com.intellij.openapi.actionSystem.AnActionWrapper
 | 
				
			||||||
 | 
					import com.intellij.openapi.actionSystem.IdeActions
 | 
				
			||||||
 | 
					import com.intellij.openapi.actionSystem.KeyboardShortcut
 | 
				
			||||||
import com.intellij.openapi.actionSystem.PlatformDataKeys
 | 
					import com.intellij.openapi.actionSystem.PlatformDataKeys
 | 
				
			||||||
import com.intellij.openapi.application.invokeLater
 | 
					import com.intellij.openapi.application.invokeLater
 | 
				
			||||||
import com.intellij.openapi.diagnostic.logger
 | 
					import com.intellij.openapi.diagnostic.logger
 | 
				
			||||||
import com.intellij.openapi.editor.Editor
 | 
					import com.intellij.openapi.editor.Editor
 | 
				
			||||||
 | 
					import com.intellij.openapi.editor.actionSystem.EditorActionManager
 | 
				
			||||||
 | 
					import com.intellij.openapi.keymap.KeymapManager
 | 
				
			||||||
import com.intellij.openapi.progress.ProcessCanceledException
 | 
					import com.intellij.openapi.progress.ProcessCanceledException
 | 
				
			||||||
import com.intellij.openapi.project.DumbAware
 | 
					import com.intellij.openapi.project.DumbAware
 | 
				
			||||||
import com.intellij.openapi.util.Key
 | 
					import com.intellij.openapi.util.Key
 | 
				
			||||||
@@ -164,6 +168,14 @@ internal class VimShortcutKeyAction : AnAction(), DumbAware/*, LightEditCompatib
 | 
				
			|||||||
        return ActionEnableStatus.no("Special keys", LogLevel.INFO)
 | 
					        return ActionEnableStatus.no("Special keys", LogLevel.INFO)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      val nextTemplateVariableShortcuts = KeymapManager.getInstance().activeKeymap.getShortcuts(IdeActions.ACTION_EDITOR_NEXT_TEMPLATE_VARIABLE)
 | 
				
			||||||
 | 
					      if (nextTemplateVariableShortcuts.any { it is KeyboardShortcut && it.firstKeyStroke == keyStroke }) {
 | 
				
			||||||
 | 
					        val handler = EditorActionManager.getInstance().getActionHandler(IdeActions.ACTION_EDITOR_NEXT_TEMPLATE_VARIABLE)
 | 
				
			||||||
 | 
					        if (handler.isEnabled(editor, null, e.dataContext)) {
 | 
				
			||||||
 | 
					          return ActionEnableStatus.no("Next template variable or finish in-place refactoring", LogLevel.INFO)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
      if (editor.inInsertMode) {
 | 
					      if (editor.inInsertMode) {
 | 
				
			||||||
        if (keyCode == KeyEvent.VK_TAB) {
 | 
					        if (keyCode == KeyEvent.VK_TAB) {
 | 
				
			||||||
          // TODO: This stops VimEditorTab seeing <Tab> in insert mode and correctly scrolling the view
 | 
					          // TODO: This stops VimEditorTab seeing <Tab> in insert mode and correctly scrolling the view
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -88,6 +88,8 @@ import com.maddyhome.idea.vim.listener.MouseEventsDataHolder.skipNDragEvents
 | 
				
			|||||||
import com.maddyhome.idea.vim.listener.VimListenerManager.EditorListeners.add
 | 
					import com.maddyhome.idea.vim.listener.VimListenerManager.EditorListeners.add
 | 
				
			||||||
import com.maddyhome.idea.vim.newapi.IjVimEditor
 | 
					import com.maddyhome.idea.vim.newapi.IjVimEditor
 | 
				
			||||||
import com.maddyhome.idea.vim.newapi.vim
 | 
					import com.maddyhome.idea.vim.newapi.vim
 | 
				
			||||||
 | 
					import com.maddyhome.idea.vim.state.VimStateMachine
 | 
				
			||||||
 | 
					import com.maddyhome.idea.vim.state.mode.Mode
 | 
				
			||||||
import com.maddyhome.idea.vim.state.mode.inSelectMode
 | 
					import com.maddyhome.idea.vim.state.mode.inSelectMode
 | 
				
			||||||
import com.maddyhome.idea.vim.state.mode.mode
 | 
					import com.maddyhome.idea.vim.state.mode.mode
 | 
				
			||||||
import com.maddyhome.idea.vim.state.mode.selectionType
 | 
					import com.maddyhome.idea.vim.state.mode.selectionType
 | 
				
			||||||
@@ -265,6 +267,16 @@ internal object VimListenerManager {
 | 
				
			|||||||
  class VimFileEditorManagerListener : FileEditorManagerListener {
 | 
					  class VimFileEditorManagerListener : FileEditorManagerListener {
 | 
				
			||||||
    override fun selectionChanged(event: FileEditorManagerEvent) {
 | 
					    override fun selectionChanged(event: FileEditorManagerEvent) {
 | 
				
			||||||
      if (!VimPlugin.isEnabled()) return
 | 
					      if (!VimPlugin.isEnabled()) return
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      val newEditor = event.newEditor
 | 
				
			||||||
 | 
					      if (newEditor is TextEditor) {
 | 
				
			||||||
 | 
					        val editor = newEditor.editor
 | 
				
			||||||
 | 
					        if (editor.isInsertMode) {
 | 
				
			||||||
 | 
					          VimStateMachine.getInstance(editor).mode = Mode.NORMAL()
 | 
				
			||||||
 | 
					          KeyHandler.getInstance().reset(editor.vim)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
      MotionGroup.fileEditorManagerSelectionChangedCallback(event)
 | 
					      MotionGroup.fileEditorManagerSelectionChangedCallback(event)
 | 
				
			||||||
      FileGroup.fileEditorManagerSelectionChangedCallback(event)
 | 
					      FileGroup.fileEditorManagerSelectionChangedCallback(event)
 | 
				
			||||||
      SearchGroup.fileEditorManagerSelectionChangedCallback(event)
 | 
					      SearchGroup.fileEditorManagerSelectionChangedCallback(event)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,6 +8,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package com.maddyhome.idea.vim.vimscript.model.functions.handlers
 | 
					package com.maddyhome.idea.vim.vimscript.model.functions.handlers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.intellij.openapi.util.SystemInfoRt
 | 
				
			||||||
 | 
					import com.intellij.util.system.CpuArch
 | 
				
			||||||
import com.intellij.vim.annotations.VimscriptFunction
 | 
					import com.intellij.vim.annotations.VimscriptFunction
 | 
				
			||||||
import com.maddyhome.idea.vim.api.ExecutionContext
 | 
					import com.maddyhome.idea.vim.api.ExecutionContext
 | 
				
			||||||
import com.maddyhome.idea.vim.api.VimEditor
 | 
					import com.maddyhome.idea.vim.api.VimEditor
 | 
				
			||||||
@@ -23,7 +25,7 @@ internal class HasFunctionHandler : FunctionHandler() {
 | 
				
			|||||||
  override val minimumNumberOfArguments = 1
 | 
					  override val minimumNumberOfArguments = 1
 | 
				
			||||||
  override val maximumNumberOfArguments = 2
 | 
					  override val maximumNumberOfArguments = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private val supportedFeatures = setOf("ide")
 | 
					  private val supportedFeatures = Features.discover()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  override fun doFunction(
 | 
					  override fun doFunction(
 | 
				
			||||||
    argumentValues: List<Expression>,
 | 
					    argumentValues: List<Expression>,
 | 
				
			||||||
@@ -41,4 +43,40 @@ internal class HasFunctionHandler : FunctionHandler() {
 | 
				
			|||||||
      VimInt.ZERO
 | 
					      VimInt.ZERO
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  private object Features {
 | 
				
			||||||
 | 
					    fun discover(): Set<String> {
 | 
				
			||||||
 | 
					      val features = mutableSetOf("ide")
 | 
				
			||||||
 | 
					      collectOperatingSystemType(features)
 | 
				
			||||||
 | 
					      return features
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private fun collectOperatingSystemType(target: MutableSet<String>) {
 | 
				
			||||||
 | 
					      if (SystemInfoRt.isWindows) {
 | 
				
			||||||
 | 
					        target.add("win32")
 | 
				
			||||||
 | 
					        if (CpuArch.CURRENT.width == 64) {
 | 
				
			||||||
 | 
					          target.add("win64")
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else if (SystemInfoRt.isLinux) {
 | 
				
			||||||
 | 
					        target.add("linux")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else if (SystemInfoRt.isMac) {
 | 
				
			||||||
 | 
					        target.add("mac")
 | 
				
			||||||
 | 
					        target.add("macunix")
 | 
				
			||||||
 | 
					        target.add("osx")
 | 
				
			||||||
 | 
					        target.add("osxdarwin")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else if (SystemInfoRt.isFreeBSD) {
 | 
				
			||||||
 | 
					        target.add("bsd")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else if (SystemInfoRt.isSolaris) {
 | 
				
			||||||
 | 
					        target.add("sun")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      if (SystemInfoRt.isUnix) {
 | 
				
			||||||
 | 
					        target.add("unix")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,49 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 * IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
 | 
					 | 
				
			||||||
 * Copyright (C) 2003-2021 The IdeaVim authors
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
 * it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
					 | 
				
			||||||
 * (at your option) any later version.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This program is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | 
					 | 
				
			||||||
 * GNU General Public License for more details.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package com.maddyhome.idea.vim.vimscript.model.functions.handlers
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.intellij.refactoring.rename.inplace.InplaceRefactoring
 | 
					 | 
				
			||||||
import com.intellij.vim.annotations.VimscriptFunction
 | 
					 | 
				
			||||||
import com.maddyhome.idea.vim.api.ExecutionContext
 | 
					 | 
				
			||||||
import com.maddyhome.idea.vim.api.VimEditor
 | 
					 | 
				
			||||||
import com.maddyhome.idea.vim.newapi.ij
 | 
					 | 
				
			||||||
import com.maddyhome.idea.vim.vimscript.model.VimLContext
 | 
					 | 
				
			||||||
import com.maddyhome.idea.vim.vimscript.model.datatypes.VimDataType
 | 
					 | 
				
			||||||
import com.maddyhome.idea.vim.vimscript.model.datatypes.VimInt
 | 
					 | 
				
			||||||
import com.maddyhome.idea.vim.vimscript.model.expressions.Expression
 | 
					 | 
				
			||||||
import com.maddyhome.idea.vim.vimscript.model.functions.FunctionHandler
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@VimscriptFunction(name = "renaming")
 | 
					 | 
				
			||||||
internal class RenamingFunctionHandler : FunctionHandler() {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  override val minimumNumberOfArguments = 0
 | 
					 | 
				
			||||||
  override val maximumNumberOfArguments = 0
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  override fun doFunction(
 | 
					 | 
				
			||||||
    argumentValues: List<Expression>,
 | 
					 | 
				
			||||||
    editor: VimEditor,
 | 
					 | 
				
			||||||
    context: ExecutionContext,
 | 
					 | 
				
			||||||
    vimContext: VimLContext,
 | 
					 | 
				
			||||||
  ): VimDataType {
 | 
					 | 
				
			||||||
    return if (InplaceRefactoring.getActiveInplaceRenamer(editor.ij) == null)
 | 
					 | 
				
			||||||
      VimInt.ZERO
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
      VimInt.ONE
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -24,6 +24,5 @@
 | 
				
			|||||||
    <vimLibraryFunction implementation="com.maddyhome.idea.vim.vimscript.model.functions.handlers.JoinFunctionHandler" name="join"/>
 | 
					    <vimLibraryFunction implementation="com.maddyhome.idea.vim.vimscript.model.functions.handlers.JoinFunctionHandler" name="join"/>
 | 
				
			||||||
    <vimLibraryFunction implementation="com.maddyhome.idea.vim.vimscript.model.functions.handlers.SplitFunctionHandler" name="split"/>
 | 
					    <vimLibraryFunction implementation="com.maddyhome.idea.vim.vimscript.model.functions.handlers.SplitFunctionHandler" name="split"/>
 | 
				
			||||||
    <vimLibraryFunction implementation="com.maddyhome.idea.vim.vimscript.model.functions.handlers.GetFunctionHandler" name="get"/>
 | 
					    <vimLibraryFunction implementation="com.maddyhome.idea.vim.vimscript.model.functions.handlers.GetFunctionHandler" name="get"/>
 | 
				
			||||||
    <vimLibraryFunction implementation="com.maddyhome.idea.vim.vimscript.model.functions.handlers.RenamingFunctionHandler" name="renaming"/>
 | 
					 | 
				
			||||||
  </extensions>
 | 
					  </extensions>
 | 
				
			||||||
</idea-plugin>
 | 
					</idea-plugin>
 | 
				
			||||||
@@ -19,7 +19,7 @@
 | 
				
			|||||||
  <!-- Please search for "[VERSION UPDATE]" in project in case you update the since-build version -->
 | 
					  <!-- Please search for "[VERSION UPDATE]" in project in case you update the since-build version -->
 | 
				
			||||||
  <!-- Check for [Version Update] tag in YouTrack as well -->
 | 
					  <!-- Check for [Version Update] tag in YouTrack as well -->
 | 
				
			||||||
  <!-- Also, please update the value in build.gradle.kts file-->
 | 
					  <!-- Also, please update the value in build.gradle.kts file-->
 | 
				
			||||||
  <idea-version since-build="231.7515.13"/>
 | 
					  <idea-version since-build="232"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <!-- Mark the plugin as compatible with RubyMine and other products based on the IntelliJ platform (including CWM) -->
 | 
					  <!-- Mark the plugin as compatible with RubyMine and other products based on the IntelliJ platform (including CWM) -->
 | 
				
			||||||
  <depends>com.intellij.modules.platform</depends>
 | 
					  <depends>com.intellij.modules.platform</depends>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user