资讯专栏INFORMATION COLUMN

给ctags添加对Elixir的支持

nodejh / 1498人阅读

摘要:背景概述官方已经许久未更新了,截至本文写作时止,最后一次更新在,所以很多新出的语言都没能得到支持现在上有一个出来的项目叫,它拾起了对的更新,但是很遗憾,也暂未得到支持自己动手丰衣足食好在支持一个自定义的配置文件,名为,可以在这里书写规

背景概述

ctags 官方已经许久未更新了,截至本文写作时止,最后一次更新在 2009-07-09,所以很多新出的语言都没能得到支持

现在 Github 上有一个 fork 出来的项目叫 universal-ctags,它拾起了对 ctags 的更新,但是很遗憾,Elixir 也暂未得到支持

自己动手丰衣足食

好在 ctags 支持一个自定义的配置文件,名为 .ctags,可以在这里书写规则实现对未知编程语言的解析

下面是针对 Elixir 的配置

</>复制代码

  1. --langdef=Elixir
  2. --langmap=Elixir:.ex.exs
  3. --regex-Elixir=/^[
  4. ]*def(p?)[
  5. ]+([a-z_][a-zA-Z0-9_?!]*)/2/f,functions,functions (def ...)/
  6. --regex-Elixir=/^[
  7. ]*defcallback[
  8. ]+([a-z_][a-zA-Z0-9_?!]*)/1/c,callbacks,callbacks (defcallback ...)/
  9. --regex-Elixir=/^[
  10. ]*defdelegate[
  11. ]+([a-z_][a-zA-Z0-9_?!]*)/1/d,delegates,delegates (defdelegate ...)/
  12. --regex-Elixir=/^[
  13. ]*defexception[
  14. ]+([A-Z][a-zA-Z0-9_]*.)*([A-Z][a-zA-Z0-9_?!]*)/2/e,exceptions,exceptions (defexception ...)/
  15. --regex-Elixir=/^[
  16. ]*defimpl[
  17. ]+([A-Z][a-zA-Z0-9_]*.)*([A-Z][a-zA-Z0-9_?!]*)/2/i,implementations,implementations (defimpl ...)/
  18. --regex-Elixir=/^[
  19. ]*defmacro(p?)[
  20. ]+([a-z_][a-zA-Z0-9_?!]*)(/2/a,macros,macros (defmacro ...)/
  21. --regex-Elixir=/^[
  22. ]*defmacro(p?)[
  23. ]+([a-zA-Z0-9_?!]+)?[
  24. ]+([^
  25. A-Za-z0-9_]+)[
  26. ]*[a-zA-Z0-9_!?!]/3/o,operators,operators (e.g. "defmacro a <<< b")/
  27. --regex-Elixir=/^[
  28. ]*defmodule[
  29. ]+([A-Z][a-zA-Z0-9_]*.)*([A-Z][a-zA-Z0-9_?!]*)/2/m,modules,modules (defmodule ...)/
  30. --regex-Elixir=/^[
  31. ]*defprotocol[
  32. ]+([A-Z][a-zA-Z0-9_]*.)*([A-Z][a-zA-Z0-9_?!]*)/2/p,protocols,protocols (defprotocol...)/
  33. --regex-Elixir=/^[
  34. ]*Record.defrecord[
  35. ]+:([a-zA-Z0-9_]+)/1/r,records,records (defrecord...)/

把上述内容保存到文本文件,并命名为 .ctags,MacOSX 和 Linux 放置到自己的家目录下即可;Windows 下得先设置个名为 HOMEPATH 的环境变量,然后将 .ctags 放置到该环境变量所指路径下

打开命令行,执行 ctags --list-languages,在输出的信息中能找到 Elixir 则说明配置成功

怎么可能少得了Vim

在 Vim 里面即时浏览代码结构,首推 tagbar 插件,这里就不介绍怎么安装、怎么使用了,下面是添加对 Elixir 的支持,将其写在 .vimrc 中即可

</>复制代码

  1. let g:tagbar_type_elixir = {"ctagstype": "elixir", "kinds": ["f:functions:0:0", "c:callbacks:0:0", "d:delegates:0:0", "e:exceptions:0:0", "i:implementations:0:0", "a:macros:0:0", "o:operators:0:0", "m:modules:0:0", "p:protocols:0:0", "r:records:0:0"], "sro": ".", "kind2scope": {"m": "modules"}, "scope2kind": {"modules": "m"}}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24825.html

相关文章

  • 在 Laravel 项目中使用 Glup 之 Laravel-Elixir

    摘要:结果会被存放到拷贝文件目录你可以使用方法拷贝文件目录到新路径,所有操作都相对于项目根目录版本号缓存刷新很多开发者会给编译的前端资源添加时间戳或者唯一令牌后缀以强制浏览器加载最新版本而不是代码的缓存副本。 环境准备 1、安装 nodejs 和 npm  如果你使用的是 Laravel 的 Homestead 环境,可以不用安装了,已自带。  我们来查看下它们的版本: $ node -v ...

    ralap 评论0 收藏0
  • Vim插件简单介绍

    摘要:转换时支持模板文件,配合强大的模板文件,可以自己创建,或者是实现语法高亮,还支持数学公式编辑。标签文件允许这些项目能够被一个文本编辑器或其它工具简捷迅速的定位。 原文地址 Vim作为一个强大的编辑器,再配合强大的插件,就可以称得上为编辑神器了。 pathogen pathogen为管理插件的插件,类似的还有vundle。在 Pathogen 之前,安装插件就是把插件文件放在.vim目录...

    dackel 评论0 收藏0
  • Laravel学习笔记三-前端工作流

    摘要:本节将学习是如何利用形成一套完整的前端工作流模式的。你也可以使用下面命令来强制安装所有模块,不管该模块之前是否安装过由于国内墙的原因,使用安装会非常缓慢,慢到想切,不过还好,我们可以使用淘宝提供的国内镜像进行下载。 本节将学习 Laravel 是如何利用 Sass, NPM, Gulp形成一套完整的前端工作流模式的。 一、句法强大的样式表Sass Sass 是一种可用于编写CSS的语言...

    liuchengxu 评论0 收藏0
  • 如何优雅使用 Vim(二):插件介绍

    摘要:如何优雅的使用二插件介绍插件使用管理。文件管理器树形结构的文件管理器,目前使用。不同层次的括号颜色不一样,如下图另见然而这些彩虹括号插件,都免不了与冲突会使语法高亮失效,只好放弃了。 如何优雅的使用 Vim(二):插件介绍 插件使用 vim-plug 管理。很长一段时间,我都在用 Vundle,切换到 vim-plug 并非完全必要。 插件定义开始 call plug#begin(~...

    yeooo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<