Browse Source

Fix shift + tab in sv mode (#1630)

ryan lin 1 year ago
parent
commit
8574de4cee
1 changed files with 9 additions and 2 deletions
  1. 9 2
      src/ts/sv/processKeydown.ts

+ 9 - 2
src/ts/sv/processKeydown.ts

@@ -95,8 +95,15 @@ export const processKeydown = (vditor: IVditor, event: KeyboardEvent) => {
             }
             // 第一个 marker 后 tab 进行缩进
             if (event.key === "Tab") {
-                listFirstMarkerElement.insertAdjacentHTML("beforebegin",
-                    `<span data-type="padding">${listFirstMarkerElement.textContent.replace(/\S/g, " ")}</span>`);
+                if(event.shiftKey){
+                    if(listFirstMarkerElement.previousElementSibling.getAttribute("data-type") === "padding"){
+                        listFirstMarkerElement.previousElementSibling.remove();
+                    }
+                }
+                else{
+                    listFirstMarkerElement.insertAdjacentHTML("beforebegin",
+                        `<span data-type="padding">${listFirstMarkerElement.textContent.replace(/\S/g, " ")}</span>`);
+                }
                 if (/^\d/.test(listFirstMarkerElement.textContent)) {
                     listFirstMarkerElement.textContent = listFirstMarkerElement.textContent.replace(/^\d{1,}/, "1");
                     range.selectNodeContents(listLastMarkerElement.firstChild);