나는 vim을 사용하고 있으며 여러 Elm 프로젝트에 퍼져있는 함수와 타입 정의를 탐색 할 수 있기를 바랍니다. 내 이해는 이것에 대해 갈 수있는 가장 쉬운 방법은 ctags를 사용하는 것입니다.여러 Elm 프로젝트에서 ctags를 사용하려면 어떻게해야합니까?
$ ctags -R --languages=-all,+Elm
: 당신이
~/.ctags
이를 설치하는 경우, 귀하의 모든 소스를 검색 할 수 있습니다
--langdef=Elm
--langmap=Elm:.elm
--regex-Elm=/^ *([[:lower:]][[:alnum:]_]+)[[:blank:]]*:[^:].*->.*/\1/f,function,functions/
--regex-Elm=/^ *([[:lower:]][[:alnum:]_]+)[[:blank:]]*:[^:][^-]+$/\1/c,constant,constants/
--regex-Elm=/^port +([[:lower:]][[:alnum:]_]+)[[:blank:]]*:[^:]/\1/p,port,ports/
--regex-Elm=/^type +([[:upper:]][[:alnum:]_]+)/\1/t,type,types/
--regex-Elm=/^type[[:blank:]]+alias[[:blank:]]+([[:upper:]][[:alnum:]_]+)/\1/a,type-alias,type-aliases/
: 제공 ctags-elm에 대한 링크를 포함하여 다양한 제안과 2016년 1월에서 기존의 열린 issue 있습니다
이 접근법은 여전히 문제가있다 :
- 은 자격을 갖춘 이름을 무시, 그래서
List.map
의 정의로 이동하려는 시도는Dict.map
의 모든 정의,Set.map
등Random.map
는 - 그것은 내 모든 디렉토리에있는 모든
*.elm
파일을 포함하여 테스트를 스캔을 제공합니다 및 오래된 종속성.- 자신의 정의에 자격을 갖춘 names☨를 수행하십시오 :
는 기본적으로 나는 해결책을 원하는
- 는 무시 각 프로젝트의
tests
디렉토리에있는 모든 것을 무시 모든 내장*.js
파일 - 스캔 모든
*.elm
파일은 - 선택적으로 각 프로젝트의
elm-stuff/packages
디렉토리에 라이브러리 소스의 최신 버전 ☨를 검색
List.map
로 이동하는 것은
List.elm
라는 이름의 파일에
map
의 정의를 선호한다. 각 프로젝트의
source-directories
ctags
또는 cta 각 프로젝트의 elm-packages.json
파일을 구문 분석하는 gs 래퍼? 자격을 갖춘 이름에 관한
[☨] : 나는 어떤 사람들이 같은 규정을 축약 것을 알고 있어요 :
import Math.Vector3 as V3
와 나는 ctags를 정규식이 Math/Vector3
에 V3.add
을 찾기 위해 기대하지 않을 것이다 . 장기간의 솔루션은 Hersell을 위해 hasktags
과 같은 Elm 모듈과 가져 오기를 이해하는 도구입니다. 지금은 생략 된 한정어를 이해하지 못하는 ctags로 살 수 있습니다.최신 버전에 대해서는
[☨] : 종속성 소스가 elm-stuff/packages/GITHUB-USERNAME/GITHUB-PROJECTNAME/VERSION-TAG
로 다운로드하고, 시간이 지남에 따라이 여러 버전을 축적 할 수 있으며, 예를 들면 :
elm-stuff/packages/kfish/elm-gamepad/3.0.0
elm-stuff/packages/kfish/elm-gamepad/3.1.0
elm-stuff/packages/kfish/elm-gamepad/3.2.0
elm-stuff/packages/kfish/elm-gamepad/3.4.0
감사합니다. 종속성 버전이 저장되는 방법을 명확히하기 위해 질문을 편집했습니다. –