2014-12-24 6 views
0

루아에 Ctags를 사용하고 싶습니다.Exuberant Ctags는 OSX에서 제대로 작동하지 않습니다

Ctags는 루아를 지원하지 않는, 그래서 나는 명령을 발견 :

ctags --langdef=MYLUA --langmap=MYLUA:.lua --regex-MYLUA="/^.*\s*function\s*(\w+):(\w+).*$/\2/f/" --regex-MYLUA="/^\s*(\w+)\s*=\s*[0-9]+.*$/\1/e/" --regex-MYLUA="/^.*\s*function\s*(\w+)\.(\w+).*$/\2/f/" --regex-MYLUA="/^.*\s*function\s*(\w+)\s*\(.*$/\1/f/" --regex-MYLUA="/^\s*(\w+)\s*=\s*\{.*$/\1/e/" --regex-MYLUA="/^\s*module\s+\"(\w+)\".*$/\1/m,module/" --regex-MYLUA="/^\s*module\s+\"[a-zA-Z0-9._]+\.(\w+)\".*$/\1/m,module/" --languages=MYLUA --excmd=number -R . 

그것은 너무 오래, 또는 당신은 단지 루아 기능에 대한 짧은 샘플을 볼 수 있습니다.

ctags --langdef=MYLUA --langmap=MYLUA:.lua --regex-MYLUA="/^.*\s*function\s*(\w+)\s*\(.*$/\1/f/" --languages=MYLUA --excmd=number -R . 

두 가지 모두 Windows에서 정상적으로 작동합니다.

OSX에서 오류는 없었지만 태그 파일은 비어 있습니다.

추 신 : OS X에서 기본 ctags가 아닌 Exuberant Ctags v5.8을 사용했습니다.

다음은 ctags에 대한 테스트 루아 코드입니다. 당신이 https://github.com/fishman/ctags에서 찾을 수 있습니다

function f1() 
end 

function c.f2() 
end 

function c:f3() 
end 

답변

1

무성한 ctags를 버전은 기본 루아 지원을 보인다. 그 대신에 해봤 니?

0

마지막으로 수정했습니다.

  1. '\ w'는이 정규 표현식에서 사용할 수 없습니다 ('\ w'도 유효하지 않음), 이유를 모르겠습니다. '\ w'대신 '[^ \ s :>]'을 사용합니다.
  2. '\ 1'또는 '\ 2'는 '\\ 1'또는 '\\ 2'로 이스케이프해야하지만 '\ s'는 정상입니다. 이유도 모르겠다.

이제 명령

ctags --langdef=MYLUA --langmap=MYLUA:.lua --regex-MYLUA="/^.*\s*function\s*([^\s:.]+):([^\s:.]+).*$/\\2/f/" --regex-MYLUA="/^\s*([^\s:.]+)\s*=\s*[0-9]+.*$/\\1/e/" --regex-MYLUA="/^.*\s*function\s*([^\s:.]+)\.([^\s:.]+).*$/\\2/f/" --regex-MYLUA="/^.*\s*function\s*([^\s:.]+)\s*\(.*$/\\1/f/" --regex-MYLUA="/^\s*([^\s:.]+)\s*=\s*\{.*$/\\1/e/" --regex-MYLUA="/^\s*module\s+\"([^\s:.]+)\".*$/\\1/m,module/" --regex-MYLUA="/^\s*module\s+\"[a-zA-Z0-9._]+\.([^\s:.]+)\".*$/\\1/m,module/" --languages=MYLUA --excmd=number -R . 

로 변경하고이 OK입니다.