zoukankan      html  css  js  c++  java
  • codemirror TAB 缩进问题记录

    codemirror 默认 TAB 键是支持缩进的, 但在没有选择文本时, 缩进是一个 Tab 键而不是 indexUnit 对应的空格数. 默认也不支持 Shift - Tab 往回缩进, 这个在排版文本是非常麻烦的.
    为了解决这两个问题我们需要重新定义这两个快捷键的实现, 具体伪代码如下:

    { // 此对象为 codemirror 配置选项对象, 下面仅对选项的快捷键相关部分做说明
        extraKeys: {
            Tab: (cm) => {
                if (cm.somethingSelected()) {      // 存在文本选择
                    cm.indentSelection('add');    // 正向缩进文本
                } else {                    // 无文本选择  
                    //cm.indentLine(cm.getCursor().line, "add");  // 整行缩进 不符合预期
                    cm.replaceSelection(Array(cm.getOption("indentUnit") + 1).join(" "), "end", "+input");  // 光标处插入 indentUnit 个空格
                }   
            },  
            "Shift-Tab": (cm) => {              // 反向缩进   
                if (cm.somethingSelected()) {
                    cm.indentSelection('subtract');  // 反向缩进
                } else {
                    // cm.indentLine(cm.getCursor().line, "subtract");  // 直接缩进整行
                    const cursor = cm.getCursor();
                    cm.setCursor({line: cursor.line, ch: cursor.ch - 4});  // 光标回退 indexUnit 字符
                }   
                return ;
            },  
        }
    }
    

    原文链接 https://wxaxiaoyao.cn/article/53

  • 相关阅读:
    [bzoj1263]整数划分
    [bzoj3171]循环格
    [bzoj3551]Peaks加强版
    [bzoj3307]雨天的尾巴
    [bzoj2756]奇怪的游戏
    [bzoj4025]二分图
    人比人该死啊
    数据挖掘十大经典算法[0]-K-Means算法
    ISODATA算法
    CodeForces Round 197 Div2
  • 原文地址:https://www.cnblogs.com/--xiaoyao--/p/11277494.html
Copyright © 2011-2022 走看看