neovim-elixir

Neovim 主机插件 Elixir
授权协议 未知
开发语言
所属分类 应用工具、 文档/文本编辑
软件类型 开源软件
地区 不详
投 递 者 马庆
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Neovim 主机插件 Elixir 。

示例代码;

defmodule AutoComplete do
  use NVim.Plugin

  deffunc elixir_complete("1",_,cursor,line,state), eval: "col('.')", eval: "getline('.')" do
    cursor = cursor - 1 # because we are in insert mode
    [tomatch] = Regex.run(~r"[\w\.:]*$",String.slice(line,0..cursor-1))
    cursor - String.length(tomatch)  end
  deffunc elixir_complete(_,base,_,_,state), eval: "col('.')", eval: "getline('.')" do
    case (base |> to_char_list |> Enum.reverse |> IEx.Autocomplete.expand) do
      {:no,_,_}-> [base] # no expand
      {:yes,comp,[]}->["#{base}#{comp}"] #simple expand, no choices
      {:yes,_,alts}-> # multiple choices
        Enum.map(alts,fn comp->
          {base,comp} = {String.replace(base,~r"[^.]*$",""), to_string(comp)}          case Regex.run(~r"^(.*)/([0-9]+)$",comp) do # first see if these choices are module or function
            [_,function,arity]-> # it is a function completion
              replace = base<>function
              module = if String.last(base) == ".", do: Module.concat([String.slice(base,0..-2)]), else: Kernel
              if (docs=Code.get_docs(module,:docs)) && (doc=List.keyfind(docs,{:"#{function}",elem(Integer.parse(arity),0)},0)) && (docmd=elem(doc,4)) do
                 %{"word"=>replace,"kind"=> if(elem(doc,2)==:def, do: "f", else: "m"), "abbr"=>comp,"info"=>docmd}              else
                %{"word"=>replace,"abbr"=>comp}              end
            nil-> # it is a module completion
              module = base<>comp              case Code.get_docs(Module.concat([module]),:moduledoc) do
                {_,moduledoc} -> %{"word"=>module,"info"=>moduledoc}                _ -> %{"word"=>module}              end
          end
        end)    end
  end

  defautocmd file_type(state), pattern: "elixir", async: true do
    {:ok,nil} = NVim.vim_command("filetype plugin on")
    {:ok,nil} = NVim.vim_command("set omnifunc=ElixirComplete")
    state  endend


 相关资料
  • 我是新来的Docker和试图了解什么是最好的方式插入docker父主机IP到容器主机文件。 我在我的Dockerfile中使用以下命令

  • 虽然 gitbook 默认的主题已经非常不错,但是,还有一些非常值得推荐的主题,用户可以通过在 NPM 上搜索 gitbook-theme 来查找主题插件。 这里将分别介绍几种主题插件的使用方法,抛砖引玉!

  • Neovim 是 Vim 的一个雄心勃勃的重构。主要目标是: 重构代码以改善维护 实施新的高级功能 展示一个更好、更强大的插件系统 开放的开发模式,随时接受贡献,接受的标准也很明确。 特性: 现代图形用户界面 从任何语言访问API,包括C/C++, C#, Clojure, D, Elixir, Go, Haskell, Java, JavaScript/Node.js, Julia, Lisp,

  • VSCode Neovim 是将 Neovim 集成到 VSCode 的插件,该插件将 Neovim 实例完全嵌入到 VSCode,而非半成品的 VIM 模拟。此外 VSCode 原生功能被用于插入模式和编辑器命令。 主要特性 通过使用 Neovim 作为后端,几乎完全集成了功能完整的 VIM 支持自定义init.vim和许多 VIM 插件 “一等公民”支持且无延迟的插入模式,让 VSCode 做

  • 黑客新闻在 Neovim

  • neovim-qt 是 Neovim 客户端的 GUI,使用 QT5。 安装 您可以使用CMake和您选择的构建系统进行构建。它应该在Qt5和Msgpack可以构建的任何系统中构建。 对于Unix调用 $ mkdir build$ cd build$ cmake -DCMAKE_BUILD_TYPE=Release ..$ make 对于Windows,MSVC和Mingw均受支持。使用以下 $