摘要:背景概述官方已经许久未更新了,截至本文写作时止,最后一次更新在,所以很多新出的语言都没能得到支持现在上有一个出来的项目叫,它拾起了对的更新,但是很遗憾,也暂未得到支持自己动手丰衣足食好在支持一个自定义的配置文件,名为,可以在这里书写规
背景概述
ctags 官方已经许久未更新了,截至本文写作时止,最后一次更新在 2009-07-09,所以很多新出的语言都没能得到支持
现在 Github 上有一个 fork 出来的项目叫 universal-ctags,它拾起了对 ctags 的更新,但是很遗憾,Elixir 也暂未得到支持
自己动手丰衣足食好在 ctags 支持一个自定义的配置文件,名为 .ctags,可以在这里书写规则实现对未知编程语言的解析
下面是针对 Elixir 的配置
--langdef=Elixir --langmap=Elixir:.ex.exs --regex-Elixir=/^[ ]*def(p?)[ ]+([a-z_][a-zA-Z0-9_?!]*)/2/f,functions,functions (def ...)/ --regex-Elixir=/^[ ]*defcallback[ ]+([a-z_][a-zA-Z0-9_?!]*)/1/c,callbacks,callbacks (defcallback ...)/ --regex-Elixir=/^[ ]*defdelegate[ ]+([a-z_][a-zA-Z0-9_?!]*)/1/d,delegates,delegates (defdelegate ...)/ --regex-Elixir=/^[ ]*defexception[ ]+([A-Z][a-zA-Z0-9_]*.)*([A-Z][a-zA-Z0-9_?!]*)/2/e,exceptions,exceptions (defexception ...)/ --regex-Elixir=/^[ ]*defimpl[ ]+([A-Z][a-zA-Z0-9_]*.)*([A-Z][a-zA-Z0-9_?!]*)/2/i,implementations,implementations (defimpl ...)/ --regex-Elixir=/^[ ]*defmacro(p?)[ ]+([a-z_][a-zA-Z0-9_?!]*)(/2/a,macros,macros (defmacro ...)/ --regex-Elixir=/^[ ]*defmacro(p?)[ ]+([a-zA-Z0-9_?!]+)?[ ]+([^ A-Za-z0-9_]+)[ ]*[a-zA-Z0-9_!?!]/3/o,operators,operators (e.g. "defmacro a <<< b")/ --regex-Elixir=/^[ ]*defmodule[ ]+([A-Z][a-zA-Z0-9_]*.)*([A-Z][a-zA-Z0-9_?!]*)/2/m,modules,modules (defmodule ...)/ --regex-Elixir=/^[ ]*defprotocol[ ]+([A-Z][a-zA-Z0-9_]*.)*([A-Z][a-zA-Z0-9_?!]*)/2/p,protocols,protocols (defprotocol...)/ --regex-Elixir=/^[ ]*Record.defrecord[ ]+:([a-zA-Z0-9_]+)/1/r,records,records (defrecord...)/
把上述内容保存到文本文件,并命名为 .ctags,MacOSX 和 Linux 放置到自己的家目录下即可;Windows 下得先设置个名为 HOMEPATH 的环境变量,然后将 .ctags 放置到该环境变量所指路径下
打开命令行,执行 ctags --list-languages,在输出的信息中能找到 Elixir 则说明配置成功
怎么可能少得了Vim在 Vim 里面即时浏览代码结构,首推 tagbar 插件,这里就不介绍怎么安装、怎么使用了,下面是添加对 Elixir 的支持,将其写在 .vimrc 中即可
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
摘要:结果会被存放到拷贝文件目录你可以使用方法拷贝文件目录到新路径,所有操作都相对于项目根目录版本号缓存刷新很多开发者会给编译的前端资源添加时间戳或者唯一令牌后缀以强制浏览器加载最新版本而不是代码的缓存副本。 环境准备 1、安装 nodejs 和 npm 如果你使用的是 Laravel 的 Homestead 环境,可以不用安装了,已自带。 我们来查看下它们的版本: $ node -v ...
摘要:本节将学习是如何利用形成一套完整的前端工作流模式的。你也可以使用下面命令来强制安装所有模块,不管该模块之前是否安装过由于国内墙的原因,使用安装会非常缓慢,慢到想切,不过还好,我们可以使用淘宝提供的国内镜像进行下载。 本节将学习 Laravel 是如何利用 Sass, NPM, Gulp形成一套完整的前端工作流模式的。 一、句法强大的样式表Sass Sass 是一种可用于编写CSS的语言...
摘要:如何优雅的使用二插件介绍插件使用管理。文件管理器树形结构的文件管理器,目前使用。不同层次的括号颜色不一样,如下图另见然而这些彩虹括号插件,都免不了与冲突会使语法高亮失效,只好放弃了。 如何优雅的使用 Vim(二):插件介绍 插件使用 vim-plug 管理。很长一段时间,我都在用 Vundle,切换到 vim-plug 并非完全必要。 插件定义开始 call plug#begin(~...
阅读 2597·2021-11-11 16:55
阅读 1261·2021-09-22 15:25
阅读 1768·2019-08-29 16:26
阅读 867·2019-08-29 13:21
阅读 2288·2019-08-23 16:19
阅读 2782·2019-08-23 15:10
阅读 743·2019-08-23 14:24
阅读 1831·2019-08-23 13:48