2013-10-28 3 views
0

동일한 질문을 Google 그룹스에 올렸습니다. 아무 소용이 없습니다. 여기에있는 경우 답변을 동기화합니다.CodeMirror에서 토큰의 상위 요소 찾기

사이드 노트 : Google 그룹스를 경멸하는 이유를 다시 상기시켜줍니다. 형식과 유용성은 끔찍합니다. 마우스 오른쪽 버튼으로 클릭하거나 마우스 오버 (또는 다른 사용자 시작에,

<div data-id="parent"><span data-id="test"></span></div> 

내가 수 있어요 : 어쨌든

...

내가 XML 모드에서 CodeMirror에 다음 HTML을 상상해 이벤트, 정말로), 마우스가 끝난 토큰을 가져옵니다. 이름과 유형입니다.

내 질문 - "상위"토큰 및 해당 속성을 가져올 수 있습니까?

는 설명하기 :

  1. 내가 test를 클릭하면, 나는 그것이 속성 data-id의 값이 span '에서'하다고 말할 수 있도록하고 싶습니다. 내가 span를 클릭하면

  2. , 나는 그 data-id을받을 수 있도록하고 싶습니다,하지만 또한 div 토큰 "에서"입니다 알고.

이것은 물론 언어가 "parent"또는 "under"의 개념을 제공한다고 가정합니다 ... XML/HTML이하는 것처럼 생각합니다.

아이디어가 있으십니까? CM 또는 XML/HTML 해당 모드에 대한 API가 있습니까?

나는 "현재"토큰 주위에 물건을 얻는 파싱 경로를 시도했지만 아주 추악하고 올바르게 작동하지 않습니다.

감사합니다.

+0

API가 없습니다. 얼마 전에 "토큰"주위에 코드를 작성하여 부모 요소에 전달하려고 시도했지만 코드가 추악하고 일부 경우 느려서 현재 요소와 그 속성을 반환하도록 코드를 제한했습니다. – aljordan82

답변

2
var cur = cm.getCursor() 
var token = cm.getTokenAt(cur); 
var inner = CodeMirror.innerMode(cm.getMode(), token.state); 
var cx = inner.state.context 
var tagName = cx.tagName