monaco-editor - 如何限制摩纳哥编辑器中的光标(插入符号)移动?
问题描述
对于终端模拟,我想限制编辑器中的插入符号移动。使用箭头键处理按键事件非常简单,通过调用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();
插入符号时已经发生了移动,所以我无法阻止它。
我还能用什么来实现所需的行为?
解决方案
推荐阅读
- solr - Solr Master/Slave 同步文档在搜索中显示不同的结果
- oracle - oracle数据库中如何创建层次表结构
- mysql - 如何手动使密码过期 MariaDB 10.4.17
- jenkins - 条件时 Jenkins 中的整数
- javascript - 复选框不断自动检查
- javascript - 如何从 soundcloud 或 spotify 之类的地方获取随机的 .mp3 文件
- c++ - c++标准库容器没有实现吗?
- javascript - 如何根据主键 PUT 方法更新记录 Express node.js
- jenkins - jenkins-cli 插件版本
- python - 将 csv 值复制到另一个 csv