2014-12-19 2 views
3

그래서 CodeMirror를 사용 중이므로 undo 상태에서 특정 편집을 생략하고 싶습니다. 특히, 나는 순진하게도 것을 의미 것 미러 텍스트의 부분 및 codemirror에서 실행 취소 상태 조작

  • 자동 들여 쓰기 이렇게 신선한 지역
  • 를 교체

    1. 하나의 키 입력을 원하는 상황을 가지고 키 입력을 사용하여 undo을 누르면 들여 쓰기가없는 새 텍스트가 포함 된 미러가 그대로 유지됩니다. 단일 문자 undo을 사용하면 대체 텍스트의 들여 쓰기되지 않은 버전으로 이동하는 대신 초기 텍스트를 복원하고 싶습니다.

      유일한 API 지원 방법

      즉시 나중에 .setHistory 호출 다음에 들여 쓰기 전에 .getHistory 호출을하고있는 것 같다,하지만 the docs이 나쁜 생각임을 의미한다. 특히 거울의 내용이 .getHistory.setHistory 호출 사이에서 변경된 경우이 영향은 정의되지 않습니다.이 상황에서이 점 전체가 해당됩니다.

      addToHistory 플래그가 text marking API에 있지만 들여 쓰기와 같은 임의의 수정이 아닌 표시 만 가능합니다.

      여기서 내가 찾고있는 것을 할 수있는 좋은 방법이 있습니까?

    답변

    3

    operation 한 개로 변경하면 단일 기록 이벤트 만 발생합니다. 하나의 동작에 배치하여 가능한 없으면

    은 (더 서두르 beforeChange 이벤트 핸들러를 등록하여 replaceRangereplaceSelection, 및 다른 경우에는 약간의 인수로 설정 가능)의 변화의 기점이 필드 유형을 결정 codeMirror가 수행하는 history-event-combination. 별표 (*) 문자로 시작하는 원점을 지정하면 같은 원점을 가진 후속 변경이 결합됩니다. 원점이 +으로 시작하면 options.historyEventDelay 밀리 초 내에 동일한 원점 변경이 발생하면 결합됩니다.

    +0

    'operation' 접근법은 내 유스 케이스에서 잘 작동한다. (DOM 변경뿐만 아니라 히스토리 상태도 클러스터링한다는 것을 몰랐다.) – Inaimathi