/usr/share/vim/vim80/doc
NameSizeModeActions
arabic.txt119360644editdlrm
autocmd.txt654020644editdlrm
change.txt748770644editdlrm
channel.txt308190644editdlrm
cmdline.txt472830644editdlrm
debug.txt71820644editdlrm
debugger.txt57440644editdlrm
develop.txt223440644editdlrm
diff.txt165250644editdlrm
digraph.txt621230644editdlrm
editing.txt731760644editdlrm
eval.txt4444620644editdlrm
farsi.txt97030644editdlrm
filetype.txt266470644editdlrm
fold.txt236940644editdlrm
ft_ada.txt182470644editdlrm
ft_rust.txt95260644editdlrm
ft_sql.txt306940644editdlrm
gui.txt455920644editdlrm
gui_w32.txt189160644editdlrm
gui_x11.txt294800644editdlrm
hangulin.txt32910644editdlrm
hebrew.txt57140644editdlrm
help.txt85780644editdlrm
helphelp.txt143380644editdlrm
howto.txt29110644editdlrm
if_cscop.txt193610644editdlrm
if_lua.txt146420644editdlrm
if_mzsch.txt118230644editdlrm
if_ole.txt74050644editdlrm
if_perl.txt111490644editdlrm
if_pyth.txt379440644editdlrm
if_ruby.txt80140644editdlrm
if_sniff.txt2660644editdlrm
if_tcl.txt230260644editdlrm
indent.txt394270644editdlrm
index.txt764430644editdlrm
insert.txt831560644editdlrm
intro.txt392260644editdlrm
map.txt646680644editdlrm
mbyte.txt593060644editdlrm
message.txt312300644editdlrm
mlang.txt78500644editdlrm
motion.txt516020644editdlrm
netbeans.txt369980644editdlrm
options.txt3891160644editdlrm
os_390.txt47530644editdlrm
os_amiga.txt54610644editdlrm
os_beos.txt109830644editdlrm
os_dos.txt120210644editdlrm
os_mac.txt68510644editdlrm
os_mint.txt14020644editdlrm
os_msdos.txt5180644editdlrm
os_os2.txt2940644editdlrm
os_qnx.txt40710644editdlrm
os_risc.txt3230644editdlrm
os_unix.txt25950644editdlrm
os_vms.txt321000644editdlrm
os_win32.txt133480644editdlrm
pattern.txt593210644editdlrm
pi_getscript.txt210780644editdlrm
pi_gzip.txt13210644editdlrm
pi_logipat.txt41860644editdlrm
pi_netrw.txt1755500644editdlrm
pi_paren.txt22690644editdlrm
pi_spec.txt41220644editdlrm
pi_tar.txt62230644editdlrm
pi_vimball.txt118530644editdlrm
pi_zip.txt72290644editdlrm
print.txt311580644editdlrm
quickfix.txt690210644editdlrm
quickref.txt712560644editdlrm
quotes.txt127430644editdlrm
recover.txt106940644editdlrm
remote.txt84200644editdlrm
repeat.txt395730644editdlrm
rileft.txt49760644editdlrm
russian.txt30900644editdlrm
scroll.txt140710644editdlrm
sign.txt68910644editdlrm
spell.txt627810644editdlrm
sponsor.txt71980644editdlrm
starting.txt736220644editdlrm
syntax.txt2174710644editdlrm
tabpage.txt167200644editdlrm
tags3288320644editdlrm
tagsrch.txt366360644editdlrm
term.txt454160644editdlrm
terminal.txt335670644editdlrm
tips.txt205560644editdlrm
todo.txt2962680644editdlrm
uganda.txt140240644editdlrm
undo.txt165390644editdlrm
usr_01.txt70900644editdlrm
usr_02.txt243390644editdlrm
usr_03.txt236050644editdlrm
usr_04.txt190820644editdlrm
usr_05.txt238240644editdlrm
usr_06.txt95870644editdlrm
usr_07.txt159840644editdlrm
usr_08.txt193740644editdlrm
usr_09.txt114500644editdlrm
usr_10.txt291800644editdlrm
usr_11.txt126110644editdlrm
usr_12.txt134240644editdlrm
usr_20.txt137030644editdlrm
usr_21.txt183730644editdlrm
usr_22.txt142970644editdlrm
usr_23.txt125880644editdlrm
usr_24.txt208690644editdlrm
usr_25.txt191140644editdlrm
usr_26.txt82540644editdlrm
usr_27.txt177230644editdlrm
usr_28.txt160150644editdlrm
usr_29.txt201160644editdlrm
usr_30.txt226560644editdlrm
usr_31.txt103940644editdlrm
usr_32.txt53730644editdlrm
usr_40.txt231840644editdlrm
usr_41.txt893010644editdlrm
usr_42.txt137980644editdlrm
usr_43.txt74040644editdlrm
usr_44.txt292110644editdlrm
usr_45.txt179120644editdlrm
usr_90.txt176610644editdlrm
usr_toc.txt92180644editdlrm
various.txt288520644editdlrm
version4.txt139060644editdlrm
version5.txt3085430644editdlrm
version6.txt5770520644editdlrm
version7.txt6747660644editdlrm
version8.txt6842520644editdlrm
visual.txt218430644editdlrm
vi_diff.txt428120644editdlrm
windows.txt530300644editdlrm
workshop.txt46310644editdlrm
Edit: /usr/share/vim/vim80/doc/if_mzsch.txt (11823B)
*if_mzsch.txt* For Vim version 8.0. Last change: 2017 Oct 08 VIM REFERENCE MANUAL by Sergey Khorev The MzScheme Interface to Vim *mzscheme* *MzScheme* 1. Commands |mzscheme-commands| 2. Examples |mzscheme-examples| 3. Threads |mzscheme-threads| 4. Vim access from MzScheme |mzscheme-vim| 5. mzeval() Vim function |mzscheme-mzeval| 6. Using Function references |mzscheme-funcref| 7. Dynamic loading |mzscheme-dynamic| 8. MzScheme setup |mzscheme-setup| {Vi does not have any of these commands} The MzScheme interface is available only if Vim was compiled with the |+mzscheme| feature. Based on the work of Brent Fulgham. Dynamic loading added by Sergey Khorev MzScheme and PLT Scheme names have been rebranded as Racket. For more information please check http://racket-lang.org Futures and places of Racket version 5.x up to and including 5.3.1 do not work correctly with processes created by Vim. The simplest solution is to build Racket on your own with these features disabled: > ./configure --disable-futures --disable-places --prefix=your-install-prefix To speed up the process, you might also want to use --disable-gracket and --disable-docs ============================================================================== 1. Commands *mzscheme-commands* *:mzscheme* *:mz* :[range]mz[scheme] {stmt} Execute MzScheme statement {stmt}. {not in Vi} :[range]mz[scheme] << {endmarker} {script} {endmarker} Execute inlined MzScheme script {script}. Note: This command doesn't work if the MzScheme feature wasn't compiled in. To avoid errors, see |script-here|. *:mzfile* *:mzf* :[range]mzf[ile] {file} Execute the MzScheme script in {file}. {not in Vi} All of these commands do essentially the same thing - they execute a piece of MzScheme code, with the "current range" set to the given line range. In the case of :mzscheme, the code to execute is in the command-line. In the case of :mzfile, the code to execute is the contents of the given file. MzScheme interface defines exception exn:vim, derived from exn. It is raised for various Vim errors. During compilation, the MzScheme interface will remember the current MzScheme collection path. If you want to specify additional paths use the 'current-library-collection-paths' parameter. E.g., to cons the user-local MzScheme collection path: > :mz << EOF (current-library-collection-paths (cons (build-path (find-system-path 'addon-dir) (version) "collects") (current-library-collection-paths))) EOF < All functionality is provided through module vimext. The exn:vim is available without explicit import. To avoid clashes with MzScheme, consider using prefix when requiring module, e.g.: > :mzscheme (require (prefix vim- vimext)) < All the examples below assume this naming scheme. *mzscheme-sandbox* When executed in the |sandbox|, access to some filesystem and Vim interface procedures is restricted. ============================================================================== 2. Examples *mzscheme-examples* > :mzscheme (display "Hello") :mz (display (string-append "Using MzScheme version " (version))) :mzscheme (require (prefix vim- vimext)) ; for MzScheme < 4.x :mzscheme (require (prefix-in vim- 'vimext)) ; MzScheme 4.x :mzscheme (vim-set-buff-line 10 "This is line #10") To see what version of MzScheme you have: > :mzscheme (display (version)) < Inline script usage: > function! SetFirstLine() :mz << EOF (display "!!!") (require (prefix vim- vimext)) ; for newer versions (require (prefix-in vim- 'vimext)) (vim-set-buff-line 1 "This is line #1") (vim-beep) EOF endfunction nmap :call SetFirstLine() < File execution: > :mzfile supascript.scm < Vim exception handling: > :mz << EOF (require (prefix vim- vimext)) ; for newer versions (require (prefix-in vim- 'vimext)) (with-handlers ([exn:vim? (lambda (e) (display (exn-message e)))]) (vim-eval "nonsense-string")) EOF < Auto-instantiation of vimext module (can be placed in your |vimrc|): > function! MzRequire() :redir => l:mzversion :mz (version) :redir END if strpart(l:mzversion, 1, 1) < "4" " MzScheme versions < 4.x: :mz (require (prefix vim- vimext)) else " newer versions: :mz (require (prefix-in vim- 'vimext)) endif endfunction if has("mzscheme") silent call MzRequire() endif < ============================================================================== 3. Threads *mzscheme-threads* The MzScheme interface supports threads. They are independent from OS threads, thus scheduling is required. The option 'mzquantum' determines how often Vim should poll for available MzScheme threads. NOTE Thread scheduling in the console version of Vim is less reliable than in the GUI version. ============================================================================== 4. Vim access from MzScheme *mzscheme-vim* *mzscheme-vimext* The 'vimext' module provides access to procedures defined in the MzScheme interface. Common ------ (command {command-string}) Perform the vim ":Ex" style command. (eval {expr-string}) Evaluate the vim expression into respective MzScheme object: |Lists| are represented as Scheme lists, |Dictionaries| as hash tables, |Funcref|s as functions (see also |mzscheme-funcref|) NOTE the name clashes with MzScheme eval, use module qualifiers to overcome this. (range-start) Start/End of the range passed with (range-end) the Scheme command. (beep) beep (get-option {option-name} [buffer-or-window]) Get Vim option value (either local or global, see set-option). (set-option {string} [buffer-or-window]) Set a Vim option. String must have option setting form (like optname=optval, or optname+=optval, etc.) When called with {buffer} or {window} the local option will be set. The symbol 'global can be passed as {buffer-or-window}. Then |:setglobal| will be used. Buffers *mzscheme-buffer* ------- (buff? {object}) Is object a buffer? (buff-valid? {object}) Is object a valid buffer? (i.e. corresponds to the real Vim buffer) (get-buff-line {linenr} [buffer]) Get line from a buffer. (set-buff-line {linenr} {string} [buffer]) Set a line in a buffer. If {string} is #f, the line gets deleted. The [buffer] argument is optional. If omitted, the current buffer will be used. (get-buff-line-list {start} {end} [buffer]) Get a list of lines in a buffer. {Start} and {end} are 1-based and inclusive. (set-buff-line-list {start} {end} {string-list} [buffer]) Set a list of lines in a buffer. If string-list is #f or null, the lines get deleted. If a list is shorter than {end}-{start} the remaining lines will be deleted. (get-buff-name [buffer]) Get a buffer's text name. (get-buff-num [buffer]) Get a buffer's number. (get-buff-size [buffer]) Get buffer line count. (insert-buff-line-list {linenr} {string/string-list} [buffer]) Insert a list of lines into a buffer after {linenr}. If {linenr} is 0, lines will be inserted at start. (curr-buff) Get the current buffer. Use other MzScheme interface procedures to change it. (buff-count) Get count of total buffers in the editor. (get-next-buff [buffer]) Get next buffer. (get-prev-buff [buffer]) Get previous buffer. Return #f when there are no more buffers. (open-buff {filename}) Open a new buffer (for file "name") (get-buff-by-name {buffername}) Get a buffer by its filename or #f if there is no such buffer. (get-buff-by-num {buffernum}) Get a buffer by its number (return #f if there is no buffer with this number). Windows *mzscheme-window* ------ (win? {object}) Is object a window? (win-valid? {object}) Is object a valid window (i.e. corresponds to the real Vim window)? (curr-win) Get the current window. (win-count) Get count of windows. (get-win-num [window]) Get window number. (get-win-by-num {windownum}) Get window by its number. (get-win-buffer [window]) Get the buffer for a given window. (get-win-height [window]) (set-win-height {height} [window]) Get/Set height of window. (get-win-width [window]) (set-win-width {width} [window])Get/Set width of window. (get-win-list [buffer]) Get list of windows for a buffer. (get-cursor [window]) Get cursor position in a window as a pair (linenr . column). (set-cursor (line . col) [window]) Set cursor position. ============================================================================== 5. mzeval() Vim function *mzscheme-mzeval* To facilitate bi-directional interface, you can use |mzeval()| function to evaluate MzScheme expressions and pass their values to Vim script. ============================================================================== 6. Using Function references *mzscheme-funcref* MzScheme interface allows use of |Funcref|s so you can call Vim functions directly from Scheme. For instance: > function! MyAdd2(arg) return a:arg + 2 endfunction mz (define f2 (vim-eval "function(\"MyAdd2\")")) mz (f2 7) < or : > :mz (define indent (vim-eval "function('indent')")) " return Vim indent for line 12 :mz (indent 12) < ============================================================================== 7. Dynamic loading *mzscheme-dynamic* *E815* On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version| output then includes |+mzscheme/dyn|. This means that Vim will search for the MzScheme DLL files only when needed. When you don't use the MzScheme interface you don't need them, thus you can use Vim without these DLL files. NOTE: Newer version of MzScheme (Racket) require earlier (trampolined) initialisation via scheme_main_setup. So Vim always loads the MzScheme DLL at startup if possible. This may make Vim startup slower. To use the MzScheme interface the MzScheme DLLs must be in your search path. In a console window type "path" to see what directories are used. On MS-Windows the options 'mzschemedll' and 'mzschemegcdll' are used for the name of the library to load. The initial value is specified at build time. The version of the DLL must match the MzScheme version Vim was compiled with. For MzScheme version 209 they will be "libmzsch209_000.dll" and "libmzgc209_000.dll". To know for sure look at the output of the ":version" command, look for -DDYNAMIC_MZSCH_DLL="something" and -DDYNAMIC_MZGC_DLL="something" in the "Compilation" info. For example, if MzScheme (Racket) is installed at C:\Racket63, you may need to set the environment variable as the following: > PATH=%PATH%;C:\Racket63\lib PLTCOLLECTS=C:\Racket63\collects PLTCONFIGDIR=C:\Racket63\etc < ============================================================================== 8. MzScheme setup *mzscheme-setup* *E895* Vim requires "racket/base" module for if_mzsch core (fallback to "scheme/base" if it doesn't exist), "r5rs" module for test and "raco ctool" command for building Vim. If MzScheme did not have them, you can install them with MzScheme's raco command: > raco pkg install scheme-lib # scheme/base module raco pkg install r5rs-lib # r5rs module raco pkg install cext-lib # raco ctool command < ====================================================================== vim:tw=78:ts=8:sts=4:ft=help:norl: