向vim解释器添加和删除目录’;导入路径

向vim解释器添加和删除目录’;导入路径,vim,scheme,racket,Vim,Scheme,Racket,以下代码的mzscheme等价物是什么 python: python import sys, vim python sys.path.append(vim.eval("var")) <...> python sys.path.remove(vim.eval("var")) python导入系统,vim python sys.path.append(vim.eval(“var”)) python系统路径移除(vim.eval(“var”)) perl: perl push @IN

以下代码的mzscheme等价物是什么

  • python:

    python import sys, vim
    python sys.path.append(vim.eval("var"))
    <...>
    python sys.path.remove(vim.eval("var"))
    
    python导入系统,vim python sys.path.append(vim.eval(“var”)) python系统路径移除(vim.eval(“var”))
  • perl:

    perl push @INC, [VIM::Eval("var")]->[1];
    <...>
    perl @INC=(grep {$_ ne VIM::Eval("var")} @INC);
    
    perl-push@INC[VIM::Eval(“var”)]->[1];
    perl@INC=(grep{$\nevim::Eval(“var”)}@INC);
    
  • 卢阿:

    let str=';'.var.'/?.lua;'.var.'/?/init.lua'
    lua package.path=package.path..vim.eval("str")
    <...>
    let ppath=[]
    lua vim.eval("add(ppath,"..string.format("%q", package.path)..")")
    let importidx=stridx(ppath[0], str)
    let importendidx=importidx+len(str)
    let ppath[0]=((importidx>0)?(ppath[0][:(importidx-1)]):("")).
                \ppath[0][(importendidx+1):]
    lua package.path=vim.eval("ppath[0]")
    
    let str=';'。变量“/?.lua;”。变量“/?/init.lua”
    lua package.path=package.path..vim.eval(“str”)
    设ppath=[]
    luavim.eval(“add(ppath,“…string.format(“%q”,package.path)”))
    设importix=stridx(ppath[0],str)
    设importendidx=importidx+len(str)
    设ppath[0]=((importix>0)?(ppath[0][:(importix-1)]:(“”)。
    \ppath[0][(importendidx+1):]
    lua package.path=vim.eval(“ppath[0]”)
    
  • 红宝石:

    ruby $LOAD_PATH << VIM::evaluate("var")
    <...>
    ruby $LOAD_PATH.delete(VIM::evaluate("var"))
    

    ruby$LOAD\u路径这取决于您希望对脚本执行的操作。(它已经很久没有被称为“mzscheme”)与模块一起工作了,因此您很少使用“向动态加载路径添加路径”之类的工作流。相反,模块是使用
    require
    表单从库的核心集合或您安装的软件包导入的

    如果您真的需要动态加载东西,一个选项是设置参数,然后使用

    dynamic require
    将从所提供目录中的
    add.rkt
    文件中拉出
    add
    函数。注意:我还没有测试这段代码,因为我找不到一个版本的vim,其中编译了Racket支持


    您可以在Racket中找到vim接口的文档。Racket的一般文档。

    您是如何安装软件包的?我需要的是让frawor用户能够将目录添加到他们的插件中,这些插件将作为模块导入路径,而不需要他们自己添加这个路径。我从未见过lua、tcl或racket/mzscheme需要插件,因此它们的代码只是为了完整性。如果一个典型的racket用户希望将其使用vim接口的racket源代码包含在一个单独的文件中,并且只有几个从映射/命令中调用的函数,那么他会怎么做?如果您需要从另一个文件(位于同一目录中)中调用函数,您可以按名称引用它。像
    (需要“foo.rkt”)
    。这适用于任何相对路径。如果不能保证文件具有固定的相对路径,则可能需要使用
    dynamic require
    。谢谢,这意味着我不需要在frawor中执行任何操作。
    silent tcl lappend auto_path [::vim::expr "dir"]
    <...>
    silent tcl set auto_path
                \ [lreplace $auto_path
                \ {*}[lrepeat 2
                \ [lsearch -exact $auto_path
                \ [::vim::expr "a:fdict.imported"]]]]
    
    (require (prefix-in vim- vimext))
    (parameterize ([current-directory (vim-eval "var")])
      (define add (dynamic-require "add.rkt" 'add)))