/* * Vim.java * * Copyright (C) 2009-16 by RStudio, Inc. * * Unless you have received this program directly from RStudio pursuant * to the terms of a commercial license agreement with RStudio, then * this program is licensed to you under the terms of version 3 of the * GNU Affero General Public License. This program is distributed WITHOUT * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details. * */ package org.rstudio.studio.client.workbench.views.source.editors.text; import org.rstudio.studio.client.workbench.views.source.editors.text.ace.AceEditorNative; public class Vim { public Vim(AceEditor editor) { editor_ = editor.getWidget().getEditor(); vim_ = VimAPI.get(); } public boolean isActive() { return isActive(editor_); } private final native boolean isActive(AceEditorNative editor) /*-{ return editor.$vimModeHandler != null; }-*/; public void exitVisualMode() { exitVisualMode(editor_, vim_); } private final native void exitVisualMode(AceEditorNative editor, VimAPI vim) /*-{ var vimState = editor.state.cm.state.vim; if (vimState.visualMode) vim.exitVisualMode(editor.state.cm); }-*/; public void exitInsertMode() { exitInsertMode(editor_, vim_); } private final native void exitInsertMode(AceEditorNative editor, VimAPI vim) /*-{ var vimState = editor.state.cm.state.vim; if (vimState.insertMode) vim.exitInsertMode(editor.state.cm); }-*/; private final AceEditorNative editor_; private final VimAPI vim_; }