首页 > 解决方案 > 如何限制摩纳哥编辑器中的光标(插入符号)移动?

问题描述

对于终端模拟,我想限制编辑器中的插入符号移动。使用箭头键处理按键事件非常简单,通过调用event.stopPropagation()我可以控制行为。

但是,对于鼠标单击,情况有所不同,因为在调用鼠标按下事件处理程序之前,插入符号已经设置为新位置。为了完整起见,我的代码的基本部分:

this.disposables.push(editor.onMouseDown(this.handleMouseDown));

注册事件处理程序和

    /**
     * Used to limit caret movement in single command mode.
     *
     * @param e The event sent by Monaco.
     */
    private handleMouseDown = (e: Monaco.IEditorMouseEvent): void => {
        const backend = this.backend;
        const model = this.model;
        if (model && backend) {
            const position = backend.getPosition();
            const context = model.executionContexts.contextFromPosition(position);

            // Check if the new mouse position would be outside the current context.
            // If so, don't allow it to happen.
            if (context && e.target.position && e.target.position.lineNumber < context.startLine
                && e.target.position.lineNumber > context.endLine) {
                e.event.preventDefault();
                e.event.stopPropagation();
            }
        }
    };

来处理事件。不幸的是,当调用const position = backend.getPosition();插入符号时已经发生了移动,所以我无法阻止它。

我还能用什么来实现所需的行为?

标签: monaco-editor

解决方案


推荐阅读