404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.140.188.114: ~ $
*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! <SID>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 <F9> :call <SID>SetFirstLine() <CR>
<
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:

Filemanager

Name Type Size Permission Actions
README.Debian File 324 B 0644
arabic.txt File 11.66 KB 0644
autocmd.txt File 61.99 KB 0644
change.txt File 73.07 KB 0644
channel.txt File 30.1 KB 0644
cmdline.txt File 46.17 KB 0644
debug.txt File 7.01 KB 0644
debugger.txt File 5.61 KB 0644
develop.txt File 20.68 KB 0644
diff.txt File 16.14 KB 0644
digraph.txt File 60.67 KB 0644
editing.txt File 71.39 KB 0644
eval.txt File 424.86 KB 0644
farsi.txt File 9.48 KB 0644
filetype.txt File 26.03 KB 0644
fold.txt File 23.14 KB 0644
ft_ada.txt File 17.82 KB 0644
ft_rust.txt File 9.3 KB 0644
ft_sql.txt File 29.97 KB 0644
gui.txt File 44.15 KB 0644
gui_w32.txt File 18.47 KB 0644
gui_x11.txt File 28.79 KB 0644
hangulin.txt File 3.21 KB 0644
hebrew.txt File 5.58 KB 0644
help.txt File 8.38 KB 0644
help.txt.vim-tiny File 1.4 KB 0644
helphelp.txt File 14 KB 0644
howto.txt File 2.84 KB 0644
if_cscop.txt File 18.91 KB 0644
if_lua.txt File 14.3 KB 0644
if_mzsch.txt File 11.55 KB 0644
if_ole.txt File 7.23 KB 0644
if_perl.txt File 10.89 KB 0644
if_pyth.txt File 37.05 KB 0644
if_ruby.txt File 7.68 KB 0644
if_sniff.txt File 266 B 0644
if_tcl.txt File 22.49 KB 0644
indent.txt File 38.48 KB 0644
index.txt File 74.65 KB 0644
insert.txt File 81.03 KB 0644
intro.txt File 38.31 KB 0644
map.txt File 63.11 KB 0644
mbyte.txt File 57.92 KB 0644
message.txt File 30.46 KB 0644
mlang.txt File 7.67 KB 0644
motion.txt File 50.39 KB 0644
netbeans.txt File 36.13 KB 0644
options.txt File 376.06 KB 0644
os_390.txt File 4.64 KB 0644
os_amiga.txt File 5.33 KB 0644
os_beos.txt File 10.73 KB 0644
os_dos.txt File 11.74 KB 0644
os_mac.txt File 6.69 KB 0644
os_mint.txt File 1.37 KB 0644
os_msdos.txt File 518 B 0644
os_os2.txt File 294 B 0644
os_qnx.txt File 3.98 KB 0644
os_risc.txt File 323 B 0644
os_unix.txt File 2.53 KB 0644
os_vms.txt File 31.35 KB 0644
os_win32.txt File 13.04 KB 0644
pattern.txt File 57.84 KB 0644
pi_getscript.txt File 20.58 KB 0644
pi_gzip.txt File 1.29 KB 0644
pi_logipat.txt File 4.09 KB 0644
pi_netrw.txt File 171.44 KB 0644
pi_paren.txt File 2.22 KB 0644
pi_spec.txt File 4.03 KB 0644
pi_tar.txt File 6.5 KB 0644
pi_vimball.txt File 11.58 KB 0644
pi_zip.txt File 6.87 KB 0644
print.txt File 30.43 KB 0644
quickfix.txt File 67.77 KB 0644
quickref.txt File 69.45 KB 0644
quotes.txt File 12.44 KB 0644
recover.txt File 10.44 KB 0644
remote.txt File 8.22 KB 0644
repeat.txt File 38.03 KB 0644
rileft.txt File 4.86 KB 0644
russian.txt File 3.02 KB 0644
scroll.txt File 13.74 KB 0644
sign.txt File 6.73 KB 0644
spell.txt File 61.28 KB 0644
sponsor.txt File 7.03 KB 0644
starting.txt File 71.82 KB 0644
syntax.txt File 212.47 KB 0644
tabpage.txt File 16.39 KB 0644
tags File 318.76 KB 0644
tags.vim-tiny File 30 B 0644
tagsrch.txt File 35.78 KB 0644
term.txt File 44.35 KB 0644
terminal.txt File 20.72 KB 0644
tips.txt File 20.07 KB 0644
todo.txt File 289.06 KB 0644
uganda.txt File 13.7 KB 0644
undo.txt File 16.15 KB 0644
usr_01.txt File 6.92 KB 0644
usr_02.txt File 23.77 KB 0644
usr_03.txt File 23.05 KB 0644
usr_04.txt File 18.63 KB 0644
usr_05.txt File 23.02 KB 0644
usr_06.txt File 9.36 KB 0644
usr_07.txt File 15.61 KB 0644
usr_08.txt File 18.92 KB 0644
usr_09.txt File 11.18 KB 0644
usr_10.txt File 28.5 KB 0644
usr_11.txt File 12.32 KB 0644
usr_12.txt File 13.11 KB 0644
usr_20.txt File 13.38 KB 0644
usr_21.txt File 17.94 KB 0644
usr_22.txt File 13.96 KB 0644
usr_23.txt File 12.29 KB 0644
usr_24.txt File 20.36 KB 0644
usr_25.txt File 18.67 KB 0644
usr_26.txt File 8.06 KB 0644
usr_27.txt File 17.31 KB 0644
usr_28.txt File 15.64 KB 0644
usr_29.txt File 19.64 KB 0644
usr_30.txt File 22.13 KB 0644
usr_31.txt File 10.15 KB 0644
usr_32.txt File 5.25 KB 0644
usr_40.txt File 22.64 KB 0644
usr_41.txt File 86.93 KB 0644
usr_42.txt File 13.47 KB 0644
usr_43.txt File 7.23 KB 0644
usr_44.txt File 28.53 KB 0644
usr_45.txt File 17.49 KB 0644
usr_90.txt File 17.25 KB 0644
usr_toc.txt File 9 KB 0644
various.txt File 27.88 KB 0644
version4.txt File 13.58 KB 0644
version5.txt File 301.31 KB 0644
version6.txt File 563.52 KB 0644
version7.txt File 658.95 KB 0644
version8.txt File 668.21 KB 0644
vi_diff.txt File 41.81 KB 0644
vim2html.pl File 4.41 KB 0755
visual.txt File 21.33 KB 0644
windows.txt File 51.87 KB 0644
workshop.txt File 4.52 KB 0644