|
629 | 629 | return true; |
630 | 630 | } |
631 | 631 | } |
632 | | - function handleExternalSelection() { |
633 | | - // Enter visual mode when the mouse selects text. |
634 | | - if (!vim.visualMode && !vim.insertMode && |
635 | | - !cursorEqual(cm.getCursor('head'), cm.getCursor('anchor'))) { |
636 | | - vim.visualMode = true; |
637 | | - vim.visualLine = false; |
638 | | - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual"}); |
639 | | - cm.on('mousedown', exitVisualMode); |
640 | | - } |
641 | | - } |
642 | 632 | function doKeyToKey(keys) { |
643 | 633 | // TODO: prevent infinite recursion. |
644 | 634 | var match; |
|
689 | 679 |
|
690 | 680 | function handleKeyNonInsertMode() { |
691 | 681 | if (handleMacroRecording() || handleEsc()) { return true; }; |
692 | | - handleExternalSelection(); |
693 | 682 |
|
694 | 683 | var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key; |
695 | 684 | if (/^[1-9]\d*$/.test(keys)) { return true; } |
|
4738 | 4727 | } else if (cm.doc.history.lastSelOrigin == '*mouse') { |
4739 | 4728 | // Reset lastHPos if mouse click was done in normal mode. |
4740 | 4729 | vim.lastHPos = cm.doc.getCursor().ch; |
4741 | | - if (cm.somethingSelected()) { |
4742 | | - // If something is still selected, enter visual mode. |
4743 | | - vim.visualMode = true; |
4744 | | - } |
| 4730 | + handleExternalSelection(cm, vim); |
4745 | 4731 | } |
4746 | 4732 | if (vim.visualMode) { |
4747 | 4733 | var from, head; |
|
4760 | 4746 | } |
4761 | 4747 | } |
4762 | 4748 |
|
| 4749 | + function handleExternalSelection(cm, vim) { |
| 4750 | + var anchor = cm.getCursor('anchor'); |
| 4751 | + var head = cm.getCursor('head'); |
| 4752 | + // Enter visual mode when the mouse selects text. |
| 4753 | + if (!vim.visualMode && !vim.insertMode && cm.somethingSelected()) { |
| 4754 | + vim.visualMode = true; |
| 4755 | + vim.visualLine = false; |
| 4756 | + CodeMirror.signal(cm, "vim-mode-change", {mode: "visual"}); |
| 4757 | + cm.on('mousedown', exitVisualMode); |
| 4758 | + } |
| 4759 | + if (vim.visualMode) { |
| 4760 | + updateMark(cm, vim, '<', cursorMin(head, anchor)); |
| 4761 | + updateMark(cm, vim, '>', cursorMax(head, anchor)); |
| 4762 | + } |
| 4763 | + } |
| 4764 | + |
4763 | 4765 | /** Wrapper for special keys pressed in insert mode */ |
4764 | 4766 | function InsertModeKey(keyName) { |
4765 | 4767 | this.keyName = keyName; |
|
0 commit comments