../../slang/src/slunix.c
Fchmod :unix_chmod:I:2Prototype: Integer chmod(String file, Integer mode);The @chmod@ function changes the permissions of @file@ to thosespecified by @mode@. It returns 0 upon success, -1 if the processlacks sufficient privilege for the operation, or -2 if the file doesnot exist.  See the system specific documentation for the C libraryfunction @chmod@ for a discussion of the @mode@ parameter.Related Functions: @chown@, @stat_file@
Fchown :unix_chown:I:3Prototype: Integer chown(String file, Integer uid, Integer gid);This function may be used to change the ownership of @file@ to that ofuser id @uid@ and group id @gid@.  This function returns 0 uponsuccess and a negative number up failure.  Specifically, it returns -1if the process does not have sufficent privileges to change theownership, or -2 if the file does not exist. Related Functions: @chmod@, @stat_file@
Flstat_file :unix_lstat_file:I:1Prototype: Integer lstat_file(String file);This function is like @stat_file@ but if @file@ is a symbolic link,this @lstat_file@ returns information about the link itself.  See the documentation for @stat_file@ for more information.Related Functions: @stat_file@ 
Fstat_file :unix_stat_file:I:1 Prototype: Integer stat_file(String file);This function returns information about @file@ through the use of thesystem @stat@ call.  If the stat call fails, the function returns anegative integer.  If it is successful, it returns zero.  Upon failureit returns a negative number. To retrieve information obtained by thisthis function call, use the @stat_struct@ function. Related Functions: @lstat_file@, @stat_struct@
Fstat_is :stat_is:I:1Prototype: Integer stat_is (String type);This function returns a boolean value about the type of file specifiedin the last call to @stat_file@.  Specifically, @type@ must be one of the strings:@ "sock"     (socket)@ "fifo"     (fifo)@ "blk"      (block device)@ "chr"      (character device)@ "reg"      (regular file)@ "lnk"      (link)@ "dir"      (dir)Related Functions: @stat_file@, @stat_struct@
Fstat_struct :unix_stat_struct:I:1Prototype: Integer stat_struct(String field);This functions returns information obtained by the most recent call tothe @stat_file@ or @lstat_file@ functions.  The @field@ argumentspecifies what piece of information to return.  Valid values for@field@ are:@ "dev"@ "ino"@ "mode"@ "nlink"@ "uid"@ "gid"@ "rdev"@ "size"@ "atime"@ "mtime"@ "ctime"See the man page for @stat@ for a discussion of these fields.Example:@ define file_size (file)@ {@    if (stat_file(file) < 0) error ("Unable to stat file!");@    return stat_struct("size");@ }Related Functions: @lstat_file@, @stat_file@, @stat_mode_parse@
Funix_ctime :unix_ctime:S:1Prototype: String unix_ctime(Integer secs);This function returns a string representation of the time as given by @secs@ seconds since 1970. 
Funix_kill :unix_kill:I:0Prototype: Integer unix_kill(Integer pid, Integer sig);This function may be used to send a signal given by the integer @sig@to the process specified by @pid@.  The function returns zero uponsucess and @-1@ upon failure.
../../slang/src/slmath.c
Facos :math_acos:F:0Prototype: Float acos (Float x);This function returns the arc cosine of @x@.Related Functions: @cos@, @sin@
Fasin :math_asin:F:0Prototype: Float asin (Float x);This function returns the arc sine of @x@.Related Functions: @cos@, @sin@
Fatan :math_atan:F:0Prototype: Float atan (Float x);This function returns the arc tangent of @x@.Related Functions: @sqrt@, @tan@, 
Fcos :math_cos:F:0Prototype: Float cos (Float x);This function returns the cosine of @x@.Related Functions: @sin@, @acos@
Fexp :math_exp:F:0Prototype: Float exp (Float x);This function returns the exponental of @x@.  That is, @2.7182818...@to the @x@ power.Related Functions: @sqrt@, @log@
Ffloat :slmath_do_float:F:0Prototype: Float float (Object x);The @float@ function takes an object such as a string or an integerand converts it to its floating point equivalent.For example, @float ("12.34")@ returns the floating point number @12.34@.Related Functions: @integer@, @string@, @char@, @Sprintf@
Flog :math_log:F:0Prototype: Float log (Float x);This function returns the natural logarithm of @x@.Note: @x@ must be greater than zero.Related Functions: @exp@, @log10@
Flog10 :math_log10:F:0Prototype: Float log10 (Float x);This function returns the base ten logarithm of @x@.Note: @x@ must be greater than zero.Related Functions: @log@, @pow@
Fpolynom :math_poly:F:0Prototype: Float polynom (a, b, ..., c, Integer n, Float x);This function returns the value of the polynomial expression:@ ax^n + bx^(n - 1) + ... cRelated Functions: @pow@
Fpow :math_pow:F:0Prototype: Float pow (Float x, Float y);This function returns the value of @x@ raised to the @y@ power.Note: @x@ must be greater than or equal to zero.Related Functions: @exp@, @log@, @sqrt@
Fsin :math_sin:F:0Prototype: Float sin (Float x);This function returns the sine of @x@.Related Functions: @cos@, @asin@
Fsqrt :math_sqrt:F:0Prototype: Float sqrt (Float x);This function returns the square root of @x@.Note: @x@ must be greater than or equal to zero.Related Functions: @pow@
Ftan :math_tan:F:0Prototype: Float tan (Float x);This function returns the tangent of @x@.Related Functions: @cos@, @sin@, @sqrt@, @atan@
VE Prototype: Float E = 2.718281828459045;The variable E is a read-only variable that represents the value ofthe base of the natural logarithms.
VPI Prototype: Float PI = 3.141592653589793;The variable PI is a read-only floating point number.
../../slang/src/slstd.c
FSprintf :SLsprintf:V:0Prototype:  String Sprintf(String format, ..., Integer n);Sprintf formats a string from @n@ objects according to @format@.  Unlike its C counterpart, Sprintf requires the number of items toformat.  Example:@  Sprintf("%f is greater than %f but %s is better than %s\n",@           PI, E, "Cake" "Pie", 4);The final argument to @Sprintf@ is the number of items to format; inthis case, there are 4 items.Related Functions: @string@
F_clear_error :SLang_clear_error:V:0Prototype: Void _clear_error ();This function may be used only in error blocks to clear the error that triggered the error block.  Execution resumes following the statementthat triggered the error.Related Functions: @slang_trace_function@Related Variables: @_slangtrace@, @_traceback@
F_slang_guess_type :SLang_guess_type:I:1Prototype: Integer _slang_guess_type (String s);This function tries to determine whether its argument @s@ represents an integer or a floating point number.  If it appears to be neither, then a string is assumed.  It returns one of three values depending onthe format of the string @s@:@ INT_TYPE     :   If it appears to be an integer@ FLOAT_TYPE   :   If it appears to be a float@ STRING_TYPE  :   Anything else.For example, @_slang_guess_type("1e2")@ returns @FLOAT_TYPE@ but @_slang_guess_type("e12")@ returns @STRING_TYPE@.Related Functions: @integer@, @string@, @float@Related Variables: @INT_TYPE@, @STRING_TYPE@, @FLOAT_TYPE@
F_stk_roll :SLroll_stack:V:1Prototype: Void _stk_roll (Integer n);If @n@ is positive, the top @n@ items on the stack are rotated up.  If@n@ is negative, the top @abs(n)@ items on the stack are rotated down.For example, if the stack looks like:@ item-0@ item-1@ item-2@ item-3where @item-0@ is at the top of the stack, then @_stk_roll(-3)@ willchange the stack to:@ item-2@ item-0@ item-1@ item-3Note that this function only has an effect for @abs(n) > 1@.Related Functions: @_stkdepth@, @print_stack@
F_stkdepth :SLstack_depth:I:0Prototype: Integer: _stkdepth ();This function returns number of items on stack prior to the call of@_stkdepth@.Related Functions: @print_stack@
Faget :SLarray_getelem:V:0Prototype: Object aget (Integer i, Integer j,..., Integer k, Array a);This function returns an element of the array @a@.  It is equivalentto the S-Lang expression @a[i, j,..., k]@.Note: This function should only be used if using S-Lang's RPN style syntax.Related Functions: @aput@, @create_array@
Faput :SLarray_putelem:V:0Prototype: Void aput (Integer i, Integer j,..., Integer k, Array a);This function sets an element of the array @a@.  It is equivalentto the S-Lang expression @a[i, j,..., k]@.Note: This function should only be used if using S-Lang's RPN style syntax.Related Functions: @aput@, @create_array@
Farray_info :SLarray_info:V:0Prototype: Var array_info (Array a);This function returns information about the array @a@.  The number ofvalues returned depend on the type of array.  It always returns atleast three values to the stack.  For two and three dimensionalarrays, it returns four and fives values, resp.The values are ordered in such a way that it may be used as an argument to the @create_array@ function.  For example, @ define duplicate_array (a)@ {@   variable b = create_array (array_info (a));@   return copy_array (b, a);@ }Related Functions: @create_array@, @copy_array@
Farray_sort :SLarray_sort:V:1Prototype: Array array_sort (Array a, String f);@array_sort@ sorts the array @a@ into ascending order according to the function @f@ and returns an integer array that represents the result of the sort.The integer array returned by this function is simply an index that indicates the order of the sorted array.  The input array @a@ is not changed.  For example, if the input array consists of the three strings@  {"gamma", "alpha", "beta"}and the sort function @f@ is defined to be@  define f (a, b)@  { return strcmp (a, b); }then the index array will be returned as:@  {2, 0, 1}Note that the comparison cannot be an intrinsic function; it must be a S-Lang user defined function.  The function takes two argumentsand returns an integer that is less than zero if the first parameter is considered to be less than the second, zero if they are equal, and a value greater than zero if the first is greater than the second.Related Functions: @create_array@.
Fautoload :SLang_autoload:V:2Prototype: Void autoload(String fun, String file);This function simply declares function @fun@ to the interpreter.  When@fun@ is actually called, its actual function definition will be loadedfrom @file@.  For example,@ autoload ("bessel_j0", "bessel.sl");tells the interpreter that the function definition for @bessel_j0@ from is to be loaded from the file @bessel.sl@ when the function is executed.Related Functions: @evalfile@
Fbyte_compile_file :SLang_byte_compile_file:V:2Prototype: Void byte_compile_file (String file, Integer method);byte compiles @file@ producing a new file with the same name except a @c@ is added to the output file name.  For example, @  byte_compile_file("site.sl");produces a new file named @site.slc@.  If @method@ is non-zero, the file is preprocessed only.  Note that the resulting bytecompiled filemust only be used by the executable that produced it.  Set @method@ to a non-zero value to use the byte compiled file with more than one executable.
Fcase :generic_equals:I:0Prototype: Integer case(Object a, Object b);The @case@ function is a generic comparison operation that is able tocompare objects of different types.  The @case@ function returns zero if @a@ and @b@ have different types or have different values; otherewise, it returns one.This function is parsed a little different than other functions in the sense that parenthesis are not required around its arguments.  If no parenthisisfollows the @case@ token, it is assumed that the first argument is presenton the stack and that the token immediately following the @case@ token isthe second argument.  This means that @ case (a, b);and@ a; case b;are equivalent.  This parsing feature makes the @case@ function useful for use in a @switch@ statement.  In a @switch@ statment, it may be used as:@  switch (token)@  { case "return": return_function ();}@  { case "break": break_function ();}Unlike the C version, it one cannot use:@  switch (i)@  {case 10: case 20: do_ten_or_twenty (i);}Instead, one must do either:@  switch (i)@  {case 10 or case (i, 20) : do_ten_or_twenty (i);}or:@  switch (i)@  {case 10: do_ten_or_twenty (i);}@  {case 20: do_ten_or_twenty (i);}Related Functions: @strcmp@
Fchar :SLdo_char:V:0Prototype: String char (Integer c);This function takes and integer and returns a string of length one whose first character has ascii value @c@.  For example, @char('a')@ returns the string @"a"@.Related Functions: @integer@, @string@.
Fcopy_array :SLcopy_array:V:0Prototype: Void copy_array(Array b, Array a);Copies the contents of array @a@ to array @b@.  Both arrays must be ofthe same type and dimension.Related Functions: @create_array@, @dup@
Fcreate_array :SLang_create_array:V:0Prototype: create_array (Integer type, Integer i_1, i_2...i_dim, Integer dim);Creates an array of type @type@ with dimension @dim@.@i_n@ is an integer which specifies the maximum size of array in direction @n@.   @type@ is a control integer which specifies the type of the array.Types are:@  's' : array of strings@  'f' : array of floats@  'i' : array of integers@  'c' : array of charactersCurrently, @dim@ cannot be larger than 3.Also note that space is dynamically allocated for the array and thatcopies of the array are NEVER put on the stack.  Rather, references tothe array are put on the stack.For example,@  variable a = create_array ('f', 10, 1);creates a 1 dimensional array of 10 floats and assigns it to @a@.
Fdefine_case :SLang_define_case:V:2Prototype: Void define_case (Integer ch_up, Integer ch_low);This function defines an upper and lowercase relationship between two characters specified by the arguments.  This relationship is used by routines which perform uppercase and lowercase conversions.The first integer @ch_up@ is the ascii value of the upprcase character and the second parameter @ch_low@ is the ascii value of its lowercase counterpart.Related Functions: @strlow@, @strup@.
Fdup :SLdo_dup:V:0Prototype: dup ();This function returns an exact duplicate of the object on top of thestack.  For some objects such as arrays, it creates a new reference tothe array.  However, for simple S-Lang types such as Strings, Integers, and Floats, it creates a new copy of the object.Related Functions: @pop@, @copy_array@
Feval :SLang_load_string:V:1Prototype: Void eval (String expression);The @eval@ function parses a string as S-Lang code and executes the result.  This is a useful function in many contexts such as dynamicallygenerating function definitions where there is no way to generate them otherwise.Related Functions: @is_defined@
Fevalfile :SLang_load_file:I:1 Prototype: Integer evalfile (String file);Load @file@ as S-Lang code.  If loading is successful, a non-zero result will be returned.  If @file@ is not found, zero will be returned.Note: some applications embedding S-Lang may override the definition ofthis function.  For example, the JED editor overrides the default definitionand will generate an error if @file@ cannot be opened.Related Functions: @eval@, @autoload@
Fextract_element :SLang_extract_list_element:S:3Prototype: String extract_element (String list, Integer nth, Integer delim);Returns @nth@ element in @list@ where @delim@ separates elements of the list. @delim@ is an integer that represents the ascii value of thecharacter that serves as the delimiter.  Elements are numbered from 0.For example:@  extract_element ("element 0, element 1, element 2", 1, ',');returns the string @" element 1"@, whereas @  extract_element ("element 0, element 1, element 2", 2, ' ');returns @"0,"@.Related Functions: @is_list_element@, @is_substr@, @strchop@.
Fgetenv :lang_getenv_cmd:V:1Prototype: String getenv(String var);Returns value of an environment variable @var@ as a string.  The emptystring @""@ is returned if @var@ is not defined.  Here is a simple exampleof how an environment variable can be used in a S-Lang program: @ if (strlen (getenv ("USE_COLOR")))@   {@     set_color ("normal", "white", "blue");@     set_color ("status", "black", "gray");@     USE_ANSI_COLORS = 1;@   }Related Functions: @putenv@, @strlen@
Finit_char_array :SLinit_char_array:V:0Prototype: Void init_char_array(Array_Type a, String s);This function may be used to initialize a character array.  Here @a@is an array type character and @s@ is a string.  This function simplysets the elements of the array @a@ to the corresponding characters ofthe string @s@.  For example,@ variable a = create_array ('c', 10, 1);@ init_char_array (a, "HelloWorld");creates an character array and initializes its elements to thecharacters in the string @"HelloWorld"@. Note: The character array must be large enough to hold all thecharacters of the initialization string.Related Functions: @create_array@, @strlen@, @strcat@
Fint :SLdo_int:V:0Prototype: Integer int (String s);This function returns the ascii value value of the first character ofthe string @s@.  It is often used to convert single character stringsto integers.  For example, the intrinsic function @isdigit@ may bedefined as@ define isdigit (s)@ {@   if ((int (s) >= '0') and (int (s) <= '9')) return 1;@   return 0;@ }Related Functions: @char@, @isdigit@
Finteger :SLdo_integer:V:0Prototype: Integer integer (String s)This function converts the string representation of an integer backto an integer.  For example, @integer ("1234")@ returns the integer value @1234@.Related Functions: @string@, @Sprintf@, @char@
Fis_defined :SLang_is_defined:I:1Prototype: Integer is_defined (String obj);This function is used to determine whether or not @obj@ has been defined.If @obj@ is not defined, it returns 0.  Otherwise, it returns a non-zerovalue that defpends on the type of object @obj@ represents.  Specifically:@ +1 if arg is an intrinsic function @ +2 if user defined function@ -1 if intrinsic variable@ -2 if user defined variable @  0 if undefinedFor example, consider the function:@ define runhooks (hook)@ { @    if (2 == is_defined(hook)) eval(hook);@ }This function could be called from another S-Lang function to allow customization of that function, e.g., if the function represents a mode, the hook could be called to setup keybinding for the mode.Related Functions: @eval@, @autoload@
Fis_list_element :SLang_is_list_element:I:3Prototype: Integer is_list_element (String list, String elem, Integer delim);If @elem@ is an element of @list@ where @list@ is a @delim@ seperated list of strings, this function returns 1 plus the matching element number.  If @elem@ is not a member of the list, zero is returned.For example:@  is_list_element ("element 0, element 1, element 2", "0,", ' ');returns 2 since @"0,"@ is element number one of the list (numbered fromzero).Related Functions: @extract_element@.
Fis_substr :SLdo_issubstr:V:0Prototype: Integer is_substr (String a, String b);This function may be used to determine if @a@ contains the string @b@.If it does not, the function returns 0; otherwise it returns the positionof @b@ in @a@.  Like all S-Lang strings, positions start at 1.  That is, the first character of @a@ is given by position 1.Related Functions: @substr@, @string_match@
Fisdigit :SLdo_isdigit:I:1Prototype: Integer isdigit (String s);This function returns a non-zero value if the first character in thestring @s@ is a digit; otherwise, it returns zero.  A simple, user definedimplementation of @isdigit@ is@ define isdigit (s)@ {@    return ((int (s) <= '9') and (int (s) >= '0'));@ }However, the intrinsic function @isdigit@ executes up to ten times fasterthan the equivalent representation defined above.Related Functions: @int@, @integer@
Fmake_printable_string :make_printable_string:V:1Prototype: String make_printable_string(String str);Takes input string @str@ and creates a new string that may be used by theinterpreter as an argument to the @eval@ function.  The resulting string isidentical to @str@ except that it is enclosed in double quotes and thebackslash, newline, and double quote characters are expanded. Related Functions: @eval@, @str_quote_string@
Fpop :SLdo_pop:V:0Prototype: Void pop ();@pop@ is used to remove the top object from the S-Lang stack.  It is typically used to ignore values from function that return a value.  Forexample, the @fflush@ function which is used to flush an output streamreturns an integer value that indicates whether it was sucessful or not.Usually, it is safe to ignore this value and one simple writes@ fflush (stdout); pop ();Related Functions: @dup@
Fprint_stack :lang_print_stack:V:0Prototype: Void print_stack (void);This function dumps out what is currently on the S-Lang stack.  It does notalter the stack and it is usually used for debugging purposes.Related Functions: @_stkdepth@, @string@
Fputenv :lang_putenv_cmd:V:0Prototype: Void putenv (String s);This functions adds string @s@ to the environment.  Typically, @s@ shouldbe a string of the form @"name=value"@.  It signals an error upon failure.Note: This function is not available on all systems.Related Functions: @getenv@
Fset_float_format :set_float_format:V:1Prototype: Void set_float_format (String fmt);This function is used to set the floating point format to be usedwhen floating point numbers are printed.  The routines that use thisare the traceback routines and the @string@ function. The defaultvalue is @"%f"@.Related Functions: @string@, @float@
Fslang_trace_function :SLang_trace_fun:V:1Prototype: Void slang_trace_function (String f);This function declares that the S-Lang function with name @f@ is to betraced when it is called.  Calling @slang_trace_function@ does not initself turn tracing on.  Tracing is turned on only when the variable@_slangtrace@ is non-zero.Related Functions: @print_stack@Related Variables: @_slangtrace@, @_traceback@.
Fslapropos :lang_apropos:V:1Prototype: Integer slapropos (String s);The @slapropos@ function may be used to get a list of all definedobjects whose name consists of the substring @s@.  The number ofmatches is returned. If the number returned is non-zero, that numberof strings which represent the names of the matched objects will willalso be present on the stack.  For example, the function@ define apropos (s)@ {@   variable n, name;@   n = slapropos (s);@   if (n) print (Sprintf ("Found %d matches:", n, 1));@   else print ("No matches.");@   loop (n) @     {@        name = ();@        print (name);@     }@ }prints a list of all matches.  It assumes the existence of a @print@ intrinsic function.Related Functions: @is_defined@, @Sprintf@
Fstr_quote_string :SLquote_string:V:0Prototype: String str_quote_string(String str, String qlis, Integer quote);Return a string identical to @str@ except that all characters in the string @qlis@ are escaped with the @quote@ character including the quotecharacter itself.Related Functions: @str_uncomment_string@
Fstr_replace :str_replace:I:0Prototype: Integer str_replace (String a, String b, String c);This function replaces the first occurance of @b@ in @a@ with @c@ and returnsan integer that indicates whether a replacement was made or not. If @b@does not occur in @a@, zero is returned.  However, if @b@ occurs in @a@, a non-zero integer is returned as well as the new string resulting from thereplacement.  For example, @ define str_replace_all (orig, match, replacement)@ {@    while (str_replace (orig, match, replacement))@        orig = ();@    return orig;@ }is a function that replaces all occurances in a string.Related Functions: @is_substr@, @strsub@, @strtrim@
Fstr_uncomment_string :uncomment_string:V:3Prototype: String str_uncomment_string(String s, String beg, String end);@beg@ and @end@ are strings whose characters define a set of comment delimiters.  This function removes comments defined by the delimiter setfrom the input string @s@ and returns it.  For example,@  str_uncomment_string ("Hello (testing) 'example' World", "'(", "')");returns the string @"Hello   World"@.Note: this routine does not handle multicharacter comment delimiters and itassumes that comments are not nested.Related Functions: @str_quote_string@
Fstrcat :SLdo_strcat:V:0Prototype: String strcat(String a, String b);This function takes two strings, @a@ and @b@, concatenates them togetherand returns the result.  For example,@ strcat ("Hello ", "World");produces the string @"Hello World"@.Related Functions: @Sprintf@
Fstrchop :do_strchop:I:0Prototype: Integer strchop (String str, Integer delim, Integer quote);This routine decomposes a string @str@ into a series of substrings and returns the substrings to the stack along with the number of substrings.The string @str@ is assumed to consist of the substrings delimited by @delim@.  The character @quote@ is assumed to quote the delimiter.For example,@ strchop ("apples,oranges,pears", ',', 0);will return @3@ to the top of the stack followed by the three strings:@"apples"@, @"oranges"@, and @"pears"@Related Functions: @strchopr@, @extract_element@
Fstrchopr :do_strchopr:I:0Prototype: Integer strchopr (String str, Integer delim, Integer quote);This routine performs exactly the same function as @strchop@ except that it returns the substrings in the reverse order.Related Functions: @strchop@, @extract_element@
Fstrcmp :SLdo_strcmp:V:0Prototype: Integer strcmp (String a, String b);@strcmp@ performs a case sensitive comparison between two strings.  Itreturns 0 if the strings are identical, a negative number if @a@ is lessthan @b@, or a positive result if @a@ is greater than @b@ (in alexicographic sense).To perform a case insensitive comparison, one can use the @strup@ functionto convert both parameters @a@ and @b@ to uppercase before calling @strcmp@.Related Functions: @strup@, @strlow@, @strncmp@
Fstrcompress :SLdo_strcompress:V:0Prototype: String strtrim (String s, String white);The @strcompress@ function compresses the string @s@ by removing all repeated characters specified by @white@ from the interior of @s@.  Inaddition, it also removes all leading and trailing characters from @s@that are part of @white@.  For example,@ strcompress (",;apple,,cherry;,banana", ",;");returns the string @"apple,cherry;banana"@.Related Functions: @strtrim@
Fstring :SLdo_string:V:0Prototype: String string (obj);Here @obj@ can be of any type.  The function @string@ will return a stringrepresentation of @obj@.For example, @string(12.34)@ returns @"12.34"@.Note: Not all objects may have a meaningful string representation.Related Functions: @Sprintf@, @integer@, @char@
Fstring_match :string_match:I:3Prototype: Integer string_match(String str, String pat, Integer pos);Returns 0 if @str@ does not match regular expression specified by@pat@. This function performs the match starting at position @pos@ in@str@.  The first character of @str@ corresponds to @pos@ equal to one.This function returns the position of the start of the match.  To findthe exact substring actually matched, use @string_match_nth@. Related Functions: @string_match_nth@, @strcmp@, @strncmp@
Fstring_match_nth :string_match_nth:I:1Prototype: Integer string_match_nth(Integer nth);This function returns 2 integers describing the result of the lastcall to @string_match@.  It returns both the offset into the string and the length of characters matches by the @nth@ submatch.  By convention, @nth@ equal to zero means the entire match.  Otherwise,@nth@ must be an integer, 1 to 9, and refers to the set of charactersmatched by the @nth@ regular expression delimited by @\(@, @\)@ pairs.For example, consider:@  variable matched, pos, len;@  matched = string_match("hello world", "\\([a-z]+\\) \\([a-z]+\\)", 1);@  if (matched) {@      (pos, len) = string_match_nth(2);@  }This will set @matched@ to 1 since a match will be found at the firstposition, @pos@ to 7 since @w@ is the 7th character of the string, andlen to 5 since @"world"@ is 5 characters long.Please note that the position offset is affected by the value of the offset parameter to the @string_match@ function.  For example, if the valueof the last parameter to the @string_match@ function had been 3, @pos@ wouldhave been set to 5.
Fstrlen :SLdo_strlen:V:0Prototype: Integer strlen (String a);The @strlen@ returns the length of the string @a@.  The length of astring is simply the number of characters that comprise the string.Related Functions: @char@
Fstrlow :SLdo_strlow:V:0Prototype: String strlow (String s);This function takes a string @s@ and returns another string identicalto @s@ except that all upper case characters that comprise @s@ will beconverted to lower case.  For example, the function@ define Strcmp (a, b)@ {@   return strcmp (strlow (a), strlow (b));@ }performs a case insensitive comparison operation on two strings byconverting them to lower case first.Related Functions: @strup@, @tolower@, @strcmp@, @strtrim@, @define_case@
Fstrncmp :SLdo_strncmp:V:0Prototype: Integer strncmp (String a, String b, Integer n);This function behaves like @strcmp@ except that it compares only the first @n@ characters in the strings @a@ and @b@.For example,@  strcmp ("apple", "appliance", 3);returns zero since the first three characters match.Related Functions: @strcmp@
Fstrsub :SLdo_strsub:V:0Prototype: String strsub (String s, Integer pos, Integer ch);This function replaces the character at position @pos@ in string @s@by the character @ch@ and returns the resulting string.The first character in the string @s@ is specified by @pos@ equal to 1.For example, @ define replace_spaces_with_comma (s)@ {@   variable n;@   while (n = is_substr (s, " "), n) s = strsub (s, n, ',');@   return s;@ }replaces all spaces with a comma.Related Functions: @is_substr@, @str_replace@
Fstrtrim :SLdo_strtrim:V:0Prototype: String strtrim (String s);The @strtrim@ function removes all leading and trailing whitespacecharacters from the string @s@ and returns the result.  Whitespace isdefined to be any combination of spaces, tabs, and newline characters.Related Functions: @int@, @strlow@, @strup@, @strcompress@
Fstrup :SLdo_strup:V:0Prototype: String strup (String s);This function takes a string @s@ and returns another string identicalto @s@ except that all lower case characters that comprise @s@ will beconverted to upper case.  For example, the function@ define Strcmp (a, b)@ {@   return strcmp (strup (a), strup (b));@ }performs a case insensitive comparison operation on two strings byconverting them to upper case first.Related Functions: @strlow@, @toupper@, @strcmp@, @strtrim@, @define_case@
Fsubstr :SLdo_substr:V:0Prototype: String substr (String s, Integer n, Integer len);This function returns a substring with length @len@ of string @s@beginning at position @n@.  The first character of @s@ is given by @n@equal to 1.  For example, @ substr ("To be or not to be", 7, 5);returns @"or no"@.Related Functions: @is_substr@
Fsystem :my_system:I:1Prototype: Integer system (String cmd);The system function may be used to execute the string expression @cmd@ inan inferior shell.  It returns 127 if the inferior shell could not be invoked, -1 if there was some other error, otherwise it returns the return code for @cmd@.  For example,@ define dir ()@ {@    () = system ("DIR");@ }displays a directory listing of the current directory under MSDOS or VMS.
Ftime :SLcurrent_time_string:S:0Prototype: String time ();This function returns the current time as a string in the form:@ Sun Apr 21 13:34:17 1996
Ftolower :do_lower:I:0Prototype: Integer lower (Integer ch);This function takes an integer @ch@ and returns its lowercaseequivalent.Related Functions: @toupper@, @strup@, @strlow@, @int@, @char@, @define_case@
Ftoupper :do_upper:I:0Prototype: Integer upper (Integer ch);This function takes an integer @ch@ and returns its uppercaseequivalent.Related Functions: @tolower@, @strup@, @strlow@, @int@, @char@, @define_case@
VFLOAT_TYPE
VINT_TYPE
VSTRING_TYPE
V_slang_version
V_slangtrace If non-zero, begin tracing when function declared by @slang_trace_function@ is entered.  This does not trace intrinsic functions.
V_traceback Prototype Integer _traceback;An error is generated when the integer variable @_traceback@ isnon-zero will result in a function traceback showing the functions thatwere active at the time of the error as well as the values of any localvariable that the functions may have.Local variables are represented in the form @$n@ where @n@ is aninteger numbered from zero.  More explicitly, @$0@ represents thefirst declared local variable, @$1@ represents the seconds, and so on.Please note that function parameters are local variables and that thefirst parameter corresponds to @$0@.Related functions: @_slangtrace@
../src/replace.c
Fbfind :backward_search_line:I:1Prototype: Integer bfind (String str);@bfind@ searches backward from the current position to the beginningof the line for the string @str@.  If a match is found, the length of@str@ is returned and the current point is moved to the start of thematch. If no match is found, zero is returned. Note: This function respects the setting of the @CASE_SEARCH@ variable.Related Functions: @bsearch@, @ffind@, @bol_bsearch@, @re_bsearch@Related Variables: @CASE_SEARCH@
Fbfind_char :bfind_char:I:1Prototype: Integer fsearch_char (Integer ch);This function searches backward on the current line for a character@ch@.  If it is found, @1@ is returned; otherwise @0@ is returned. Related functions: @fsearch_char@, @ffind_char@, @fsearch@Related variables: @CASE_SEARCH@
Fbol_bsearch :bol_bsearch:I:1Prototype: Integer bol_bsearch (str);@bol_bsearch@ searches backward from the current point until thebeginning of the buffer for the occurrences of the string @str@ atthe beginning of a line.  If a match is found, the length of @str@ isreturned and the current point is moved to the start of the match. Ifno match is found, zero is returned.Note: @bol_bsearch@ is much faster than using @re_bsearch@ to performa search that matches the beginning of a line.Related Functions: @bol_fsearch@, @bsearch@, @bfind@, @re_bsearch@Related Variables: @CASE_SEARCH@
Fbol_bsearch_char :bol_bsearch_char:I:1Prototype: Integer bol_fsearch_char (Integer ch);This function searches backward for a character @ch@ at the beginning of a line.  If it is found, @1@ is returned; otherwise @0@ is returned.Related functions: @bol_bsearch@, @bol_fsearch_char@, @bsearch_char@Related variables: @CASE_SEARCH@
Fbol_fsearch :bol_fsearch:I:1Prototype: Integer bol_fsearch (str);@bol_fsearch@ searches forward from the current point until the endof the buffer for occurrences of the string @str@ at the beginning ofa line.  If a match is found, the length of @str@ is returned and thecurrent point is moved to the start of the match.  If no match isfound, zero is returned.Note: @bol_fsearch@ is much faster than using @re_fsearch@ to performa search that matches the beginning of a line.Related Functions: @bol_bsearch@, @fsearch@, @ffind@, @re_fsearch@Related Variables: @CASE_SEARCH@
Fbol_fsearch_char :bol_fsearch_char:I:1Prototype: Integer bol_fsearch_char (Integer ch);This function searches forward for a character @ch@ at the beginning of a line.  If it is found, @1@ is returned; otherwise @0@ is returned.Related functions: @bol_fsearch@, @bol_bsearch_char@, @fsearch_char@Related variables: @CASE_SEARCH@
Fbsearch :search_backward:I:1Prototype: Integer bsearch (String str);The @bsearch@ function searches backward from the current positionfor the string @str@.  If @str@ is found, this function will returnthe length of @str@ and move the current position to the beginning ofthe matched text.  If a match is not found, zero will be returned andthe position will not change.  It respects the value of the variable@CASE_SEARCH@.Related Functions: @fsearch@, @bol_bsearch@, @re_bsearch@ 
Fbsearch_char :bsearch_char:I:1Prototype: Integer fsearch_char (Integer ch);This function searches backward for a character @ch@.  If it isfound, @1@ is returned; otherwise @0@ is returned. Related functions: @fsearch_char@, @ffind_char@, @fsearch@Related variables: @CASE_SEARCH@
Fffind :forward_search_line:I:1Prototype: Integer ffind (String s);@ffind@ searches forward from the current position to the end of theline for the string @str@.  If a match is found, the length of @str@is returned and the current point is moved to the start of the match.If no match is found, zero is returned.Note: This function respects the setting of the @CASE_SEARCH@ variable.To perform a search that includes multiple lines, use the @fsearch@function.Related Functions: @fsearch@, @bfind@, @re_fsearch@, @bol_fsearch@
Fffind_char :ffind_char:I:1Prototype: Integer fsearch_char (Integer ch);This function searches forwardward on the current line for a character@ch@.  If it is found, @1@ is returned; otherwise @0@ is returned. Related functions: @fsearch_char@, @bfind_char@, @fsearch@Related variables: @CASE_SEARCH@
Ffsearch :search_forward:I:1Prototype: Integer fsearch (String str);This function may be used to search forward in buffer looking for thestring @str@.  If not found, this functions returns zero.  However,if found, the length of the string is returned and the current pointis moved to the to the start of the match.  It respects the settingof the variable @CASE_SEARCH@.  If the string that one is searchingfor is known to be at the beginning of a line, the function@bol_fsearch@ should be used instead. Note: This function cannot find a match that crosses lines. Related Functions: @ffind@, @fsearch_char@, @bsearch@, @bol_fsearch@, @re_fsearch@, @looking_at@ Related Variables: @CASE_SEARCH@
Ffsearch_char :fsearch_char:I:1Prototype: Integer fsearch_char (Integer ch);This function searches forward for a character @ch@.  If it isfound, @1@ is returned; otherwise @0@ is returned. Related functions: @fsearch@, @ffind_char@, @bsearch_char@ Related variables: @CASE_SEARCH@
Fre_bsearch :re_search_backward:I:1Prototype: Integer re_bsearch(String pattern);Search backward for regular expression @pattern@.  This function returnsthe 1 + length of the string  matched.  If no match is found, it returns 0.Related Functions: @bsearch@, @bol_bsearch@, @re_fsearch@
Fre_fsearch :re_search_forward:I:1Prototype: Integer re_fsearch(String pattern);Search forward for regular expression @pattern@.  This function returnsthe 1 + length of the string  matched.  If no match is found, it returns 0.Related Functions: @fsearch@, @bol_fsearch@, @re_bsearch@
Fregexp_nth_match :regexp_nth_match:V:1Prototype: String regexp_nth_match (Integer n);This function returns the nth sub-expression matched by the last regularexpression search.  If the parameter @n@ is zero, the entire match is returned.Note: The value returned by this function is meaningful only if theediting point has not been moved since the match.Related Functions: @re_fsearch@, @re_bsearch@
Freplace :replace_cmd:V:2Prototype: Void replace(String old, String new);This function may be used to replace all occurances of the string@old@ with the string, @new@, from current editing point to the endof the buffer. The editing point is returned to the initial location.That is, this function does not move the editing point.Related Functions: @replace_chars@, @fsearch@, @re_fsearch@, @bsearch@, @ffind@, @del@Related Variables: @REPLACE_PRESERVE_CASE@
Freplace_chars :replace_chars:I:2Prototype: Void replace_chars (Integer n, String new);This function may be used to replace the next @n@ characters at theediting position by the string @new@.  After the replacement, the editingpoint will be moved to the end of the inserted string.  The length ofthe replacement string @new@ is returned.Related Functions: @fsearch@, @re_fsearch@, @bsearch@, @ffind@, @del@Related Variables: @REPLACE_PRESERVE_CASE@
Freplace_match :replace_match:I:2Prototype: Integer replace_match(String s, Integer how);This function replaces text previously matched with @re_fsearch@ or@re_bsearch@ at the current editing point with string @s@.  If @how@ iszero, @s@ is a specially formatted string of the form described below.If @how@ is non-zero, @s@ is regarded as a simple string and is usedliterally.  If the replacement fails, this function returns zerootherwise, it returns non-zero.
VCASE_SEARCH Prototype: Integer CASE_SEARCH = 0;if 1, searches are case sensitive.  If 0, they are not 
VREPLACE_PRESERVE_CASE_INTERNAL Prototype: Integer REPLACE_PRESERVE_CASE_INTERNAL = 0;This variable affects the @replace@ function.  If the length of theold string is the same as the new string and this variable isnon-zero, then then the case of the old string will be preserved bythe replace function.  For example, if @REPLACE_PRESERVE_CASE_INTERNAL@ is non-zero, and @"abCdE"@ is replaced by @"tuvwx"@, then @"tuVwX"@ willactually be used.Note: This variable's value automatically gets reset to zero after everykeystroke.
../src/xterm.c
Fx_copy_region_to_cutbuffer :x_region_2_cutbuffer:V:0Prototype: Void x_copy_region_to_cutbuffer();
Fx_insert_cutbuffer :x_insert_cutbuffer:I:0Prototype: Integer x_insert_cut_buffer ();Inserts cutbuffer into the current buffer and returns the numberof characters inserted.
Fx_set_icon_name :set_icon_name:V:1
Fx_set_keysym :x_set_keysym:V:3Prototype: Void x_set_keysym (Integer keysym, Integer shift, String str);This function may be used to assocate a string 'str' with a key'keysym' modified by mask @shift@. Pressing the key associated with@keysym@ will then generate the keysequence given by @str@. Thefunction keys are mapped to integers in the range @0xFF00@ to @0xFFFF@.On most systems, the keys that these mappings refer to are located inthe file @/usr/include/X11/keysymdef.h@. For example, on my system, thekeysyms for the function keys @XK_F1@ to @XK_F35@ fall in the range@0xFFBE@ to @0xFFE0@. So to make the @F1@ key correspond to the stringgiven by the two characters @Ctrl-X@ @Ctrl-C@, simply use:@ x_set_keysym (0xFFBE, 0, "^X^C");The @shift@ argument is an integer with the following meanings:@ 0   : unmodified key@ '$'  : shifted@ '^'  : controlAny other value for shift will default to 0 (unshifted).
Fx_set_window_name :set_window_name:V:1
Fx_warp_pointer :x_warp_pointer:V:0
VALT_CHAR
VX_LAST_KEYSYM
../src/intrin.c
FIsHPFSFileSystem :IsHPFSFileSystem:I:1Prototype: Integer IsHPFSFileSystem(String path);Returns non-zero if drive of @path@ (possibly the default drive) is HPFS. 
F_add_completion :add_to_completion_n:V:0Prototype: Void _add_completion (String f1, String f2, ..., Integer n);The @_add_completion@ function is like the @add_completion@ functionexcept that it takes @n@ names @f1@, ... @fn@.For example, @ _add_completion ("fun_a", "fun_b", 2);is equivalent to@ add_completion ("fun_a");@ add_completion ("fun_b");Related Functions: @add_completion@
F_autoload :autoload_n:V:0Prototype: Void _autoload (String fun, String fn, ..., Integer n);The @_autoload@ function is like the @autoload@ function except thatit takes @n@ pairs of function name (@fun@) / filename (@fn@) pairs.For example, @ _autoload ("fun_a", "file_a", "fun_b", "file_b", 2);is equivalent to@ autoload ("fun_a", "file_a");@ autoload ("fun_b", "file_b");Related Functions: @autoload@
Fabbrev_table_p :abbrev_table_p:I:1Prototype: Integer abbrev_table_p (String name);Returns non-zero if an abbreviation table with called @name@ exists. Ifthe table does not exist, it returns zero.
Fadd_completion :add_to_completion:V:1Prototype: Void add_completion(String f);The @add_completion@ function adds the user defined S-Lang functionwith name specified by the string @f@ to the list of functions thatare eligible for mini-buffer completion.  The function specified by@f@ must be already defined before this function is called.  TheS-Lang function @is_defined@ may be used to test whether or not thefunction is defined.Related Functions: @read_with_completion@, @_add_completion@
Fappend_region_to_file :append_to_file:I:1Prototype: Integer append_region_to_file (String file);Appends a marked region to @file@ returning number of lines written or -1on error.  This does NOT modify a buffer visiting the file; however,it does flag the buffer as being changed on disk.
Fappend_region_to_kill_array :append_region_to_kill_array:V:1Prototype: Void append_region_to_kill_array (Integer n);This function appends the currently defined region to the contents ofnth element, specified by @n@, of an internal array of character strings.Note: This function is not available on 16 bit systems. Related Functions: @insert_from_kill_array@, @copy_region_to_kill_array@ Related Variables: @KILL_ARRAY_SIZE@
Fautosave :auto_save:V:0Prototype: Void autosave ();The @autosave@ function saves the current buffer in an auto save fileif the buffer has been marked for the auto save operation. Related Functions: @setbuf_info@, @autosaveall@Related Variables: @MAX_HITS@
Fautosaveall :auto_save_all:V:0Prototype: Void autosaveall ();This function is like @autosave@ except that it causes all filesmarked for the auto save operation to be auto-saved.Related Functions: @autosave@, @setbuf_info@Related Variables: @MAX_HITS@
Fbackward_paragraph :backward_paragraph:V:0Prototype: Void backward_paragraph ();This function moves the current editing point backward past thecurrent paragraph to the line that is a paragraph separator.  Such aline is determined by the S-Lang hook @is_paragraph_separator@.  Thishook can be modified on a buffer by buffer basis by using thefunction @set_buffer_hook@. Related Functions: @forward_paragraph@, @set_buffer_hook@
Fbeep :beep:V:0Prototype: Void beep ();The @beep@ function causes the terminal to beep according to the valueof the variable @IGNORE_BEEP@.Related Functions: @tt_send@Related Variables: @IGNORE_BEEP@
Fblank_rect :blank_rectangle:V:0The @blank_rect@ function replaces all text in the rectangle defined bythe current editing point and the mark by spaces.Related Functions: @push_mark@, @kill_rect@, @insert_rect@, @copy_rect@
Fblink_match :blink_match:V:0Prototype: Void blink_match ();This function will attempt to blink the matching delimiter immediately before the editing point.Related Functions: @find_matching_delimiter@, @define_syntax@
Fbob :bob:V:0Prototype: Void bob ();The function @bob@ is used to move the current editing point to thebeginning of the buffer.  The function @bobp@ may be used to determineif the editing point is at the beginning of the buffer or not.Related Functions: @bobp@, @eob@, @bol@, @eol@
Fbobp :bobp:I:0Prototype: Integer bobp ();The @bolp@ function is used to determine if the current position is atthe beginning of the buffer or not.  If so, it returns a non-zerovalue.  However, if it is not, it returns zero.  This simple example,@ define is_buffer_empty ()@ {@   return bobp () and eobp (); @ }returns non-zero if the buffer is empty; otherwise, it returns zero.Related Functions: @bob@, @eobp@, @bolp@, @eolp@
Fbol :bol:V:0Prototype: Void bol();This function moves the current editing point to the beginning of thecurrent line.  The function @bolp@ may be used to see if one is alreadyat the beginning of a line.Related Functions: @eol@, @bob@, @eob@, @bolp@ 
Fbolp :bolp:I:0Prototype: Integer bolp ();@bolp@ is used to test if the current position is at the beginning ofa line or not.  It returns non-zero if the position is at thebeginning of a line or zero if not. Related Functions: @bol@, @eolp@, @bobp@, @eobp@
Fbskip_chars :bskip_chars:V:1Prototype: Void bskip_chars (String str);This function may be used to skip past all characters defined by the string @str@.  See @skip_chars@ for the definition of @str@.The following example illustrates how to skip past all whitespace including newline characters:@ bskip_chars (" \t\n");Related Functions: @skip_chars@, @left@
Fbskip_non_word_chars :bskip_non_word_chars:V:0Prototype: Void bskip_word_chars ();This function moves the current editing point backward past allnon-word characters until a word character is encountered.Characters that make up a word are set by the @define_word@ function.Related Functions: @define_word@, @skip_non_word_chars@, @bskip_chars@, @bskip_word_chars@
Fbskip_word_chars :bskip_word_chars:V:0Prototype: Void bskip_word_chars ();This function moves the current editing point backward past allword characters until a non-word character is encountered.Characters that make up a word are set by the @define_word@ function.Related Functions: @define_word@, @skip_word_chars@, @bskip_chars@, @bskip_non_word_chars@
Fbuffer_keystring :do_buffer_keystring:V:1Prototype: Void buffer_keystring (String str);Append string @str@ to the end of the input stream to be read by JED'sgetkey routines.Related Functions: @ungetkey@, @getkey@
Fbuffer_list :make_buffer_list:V:0Prototype: Integer buffer_list ();This function returns an integer indicating the number of buffers andleaves the names of the buffers on the stack.  For example, the following function displays the names of all buffers attached to files:@ define show_buffers ()@ {@    variable b, str = "", file;@    loop (buffer_list ())@      {@          b = ();@          setbuf (b);@          (file,,,) = getbuf_info ();@          if (strlen (file)) str = strcat (str, strcat (" ", b));@      }@    message (str);@ }Related Functions: @getbuf_info@, @whatbuf@
Fbuffer_visible :jed_buffer_visible:I:1Prototype: Integer buffer_visible (String buf);This function is used to determine whether or not a buffer with namespecified by the string @buf@ is in a window or not.  More explicitly,it returns the number of windows containing @buf@.  This means that if@buf@ does not occupy a window, it returns zero.  For Example,@ define find_buffer_in_window (buf)@ {@    !if (buffer_visible (buf)) return 0;@    pop2buf (buf);@    return 1;@ }is a function that moves to the window containing @buf@ if @buf@ is ina window.Related Functions: @bufferp@, @nwindows@
Fbufferp :bufferp:I:1Prototype: Integer bufferp (String buf);This function is used to see if a buffer exists or not.  If a buffer withname @buf@ exists, it returns a non-zero value.  If it does not exist,it returns zero.Related Functions: @setbuf@, @getbuf_info@
Fbufsubstr :buffer_substring:V:0Prototype: String bufsubstr ();This function returns a string that contains the characters in theregion specified by a mark and the current editing point.If the region crosses lines, the string will contain newlinecharacters.Related Functions: @insbuf@, @push_mark@
Fbury_buffer :bury_buffer:V:1Prototype: Void bury_buffer (String name);The @bury_buffer@ function may be used to make it unlikely for thebuffer specified by the paramter @name@ to appear in a window.Related Functions: @sw2buf@, @getbuf_info@
Fcall :call_cmd:V:1Prototype: Void call(String f);The @call@ function is used to execute an internal function which isnot directly accessable to the S-Lang interpreter.Related Functions: @is_internal@
Fchange_default_dir :ch_dir:I:1Prototype: Integer change_default_dir (String new_dir);This function may be used to change the current working directoryof the editor to @new_dir@.  It returns zero upon success or @-1@ uponfailure. Note: Each buffer has its own working directory.  This function does notchange the working directory of the buffer.  Rather, it changes the working directory of the whole editor.  This has an effect on functionssuch as @rename_file@ when such functions are passed relative filenames.Related Functions: @setbuf_info@, @getbuf_info@, @rename_file@
Fcheck_region :check_region:V:1Prototype: Void check_region (Integer ps);This function checks to see if a region is defined and may exchangethe current editing point and the mark to define a canonical region.If the mark is not set, it signals an S-Lang error.  A canonicalregion is one with the mark set earlier in the buffer than than theediting point.  Always call this if using a region which requiressuch a situation. If the argument @ps@ is non-zero, @push_spot@ will be called,otherwise, @ps@ is zero and it will not be called.As an example, the following function counts the number of lines in a region:@ define count_lines_region ()@ {@    variable n;@    check_region (1);   % spot pushed@    narrow ();@    n = what_line ();@    widen ();@    pop_spot ();@    return n;@  }Related Functions: @markp@, @push_mark@
Fclear_message :clear_message:V:0Prototype: Void clear_message ();This function may be used to clear the message line of the display.Related Functions: @message@, @update@, @error@, @flush@
Fcolor_number :map_color_object_to_number:I:1Prototype: Integer color_number (String obj);This function returns the object number associated with thestring @obj@.  Valid names for @obj@ are as per @set_color@.Related Functions: @set_color@, @set_column_colors@Related Variables: @WANT_SYNTAX_HIGHLIGHT@, @USE_ANSI_COLORS@
Fcommand_line_arg :command_line_argv:S:1Prototype: String command_line_argv (Integer n);This function may be used to determine the command line parametersthat invoked the editor.  The parameter @n@ is an integer the range zeroup-to but not including the value of the variable @MAIN_ARGC@.  Related Variables: @MAIN_ARGC@
Fcopy_rect :copy_rectangle:V:0 Prototype: Void copy_rect ();The @copy_rect@ function is used to copy the contents of thecurrently defined rectangle to the rectangle buffer.  It overwritesthe previous contents of the rectangle buffer.  A rectangle is defined by the diagonal formed by the mark and the current point.Related Functions: @insert_rect@, @kill_rect@, @blank_rect@
Fcopy_region :copy_region_cmd:V:1Prototype: Void copy_region (String buf);This function may be used to copy a region defined by a mark and thecurrent position to the buffered specified by the name @buf@. It doesnot delete the characters in region but it does pop the mark thatdetermines the region.Related Functions: @insbuf@, @bufsubstr@, @push_mark@, @pop_mark@, @bufferp@
Fcopy_region_to_kill_array :copy_region_to_kill_array:V:1Prototype: Void copy_region_to_kill_array (Integer n);This function copies the currently defined region to the nth element,specified by @n@, of an internal array of character strings replacingwhat is currently there. Note: This function is not available on 16 bit systems. Related Functions: @insert_from_kill_array@, @append_region_kill_array@ Related Variables: @KILL_ARRAY_SIZE@
Fcore_dump :exit_error_cmd:V:2 Prototype: Void core_dump(String msg, Integer severity);@core_dump@ will exit the editor dumping the state of some crucial variables. If @severity@ is @1@, a core dump will result.  Immediatelybefore dumping, @msg@ will be displayed.Related Functions: @exit_jed@, @quit_jed@, @message@, @error@
Fcount_chars :count_chars:V:0Prototype: String count_chars ();This function returns information about the size of the current bufferand current position in the buffer.  The string returned is of the form:@ 'h'=104/0x68/0150, point 90876 of 127057Related Functions: @what_char@
Fcreate_abbrev_table :create_abbrev_table:V:2Prototype: Void create_abbrev_table (String name, String word);Create an abbreviation table with name @name@.  The second parameter@word@ is the list of characters used to represent a word for the table. If the empty string is passed for @word@, the characters thatcurrently constitute a word are used.
Fcreate_syntax_table :create_syntax_table:V:1Prototype: Void create_syntax_table (String name);This the purpose of this function is to create a new syntax tablewith the name specified by @name@.  If the table already exists, thisfunction does nothing.Related Functions: @define_syntax@, @use_syntax_table@, @define_keywords@
Fcreate_user_mark :create_user_mark:V:0Prototype: User_Mark create_user_mark ();The function @create_user_mark@ returns an object of the type@User_Mark@. This object contains information regarding the currentposition.  Unlike other marks and spots, a User Mark is not localto a buffer.  In this example,@ define create_buffer (buf)@ {@    variable mark = create_user_mark ();@    setbuf (buf);@    goto_user_mark (mark);@ }a User Mark has been created prior to the call to @setbuf@.  Thenafter returning from @setbuf@, the current position and current bufferis set to that specified by the User Mark.  This example has theeffect of creating a buffer named @buf@ if does not already exist butnot switching to it.Related Functions: @move_user_mark@, @goto_user_mark@, @user_mark_buffer@
Fdefine_abbrev :define_abbrev:V:3Prototype: Void define_abbrev (String tbl, String abbrv, String expans);This function is used to define an abbreviation @abbrv@ that will be expanded to @expans@.  The definition will be placed in the table withname @tbl@.
Fdefine_keywords_n :define_keywords:V:4Prototype: String define_keywords_n (String table, String kws, Integer len, Integer n);This function is used to define a set of keywords that will be colorsyntax highlighted in the keyword color associated with the tablespecified by @n@.  The first parameter, @table@, specifies whichsyntax table is to be used for the definition. The second parameter,@kws@, is a string that is the concatenation of keywords of lengthspecified by the last parameter @len@.  The list of keywords specifiedby @kws@ must be in alphabetic order.  The function returns theprevious list of keywords of length @len@. For example, C mode usesthe statement@ () = define_keywords_n ("C", "asmforintnewtry", 3, 0);to define the four three-letter keywords @asm@, @for@, @int@, @new@,and @try@.  Note that in the above example, the return value is not used.Related Functions: @define_syntax@, @set_color@Related Variables: @WANT_SYNTAX_HIGHLIGHT@, @USE_ANSI_COLORS@
Fdefine_syntax :define_syntax:V:2Prototype: Void define_syntax (..., Integer type, String name);This function adds a syntax entry to the table specified by the lastparameter @name@.  The actual number of parameters vary according tothe next to the last parameter @type@.If @type@ is @'"'@ or @'\''@, a string or character delimiter syntax isdefined. In this case, @define_syntax@ only takes three parameterswhere the first parameter is an integer that represents the characterfor which the syntax is to be applied.Similarly, if @type@ is @'\\'@, then a quote syntax is defined andagain @define_syntax@ only takes three parameters where the firstparameter is an integer that represents the character for which thesyntax is to be applied.  A quote character is one in which thesyntax of the following character is not treated as special.If @type@ is @'('@, then @define_syntax@ takes four parameters wherethe first two parameters are strings that represent a matching set ofdelimiters.  The first string contains the set of opening delimitersand the second string specifies the set of closing delimiters thatmatch the first set.  If a character from the closing set is enteredinto the buffer, the corresponding delimiter from the opening setwill be blinked.  For example, if the C language syntax table iscalled @"C"@, then one would use@ define_syntax ("([{", ")]}", '(', "C");to declare the matching delimiter set.  Note that the order of thecharacters in the two strings must correspond.  That is, the aboveexample says that @'('@ matches @')'@ and so on.If @type@ is @'%'@, a comment syntax is defined.  As in theprevious case, @define_syntax@ takes four parameters where therefirst two parameters are strings that represent the begin and endcomment delimiters.  If the comment syntax is such that the commentends at the end of a line, the second string must either be the emptystring, @""@, or a newline @"\n"@.  In the current implementation, atmost the begin and end comment strings can consist of at most twocharacters.If @type@ is @'+'@, the first parameter is a string whose charactersare given the operator syntax.  If type is @','@, the first parameteris a string composed of characters that are condered to bedelimiters.  If type is '0', the first parameter is a string composedof characters that make up a number.If @type@ is @<@, the first parameter is a string whose successivecharacters form begin and end keyword highlight directives.Finally, if @type@ is @'#'@, the first parameter is an integer whosevalue corresponds to the character used to begin preprocessor lines.As an example, imagine a language in which the dollar sign character@$@ is used as a string delimiter, the backward quote character @`@is used as a quote character, comments begin with a semi-colon andend at the end of a line, and the characters @'<'@ and @'>'@ form matching delimiters.  The one might use@ create_syntax_table ("strange");@ define_syntax ('$',        '"',  "strange");@ define_syntax ('`',        '\\', "strange");@ define_syntax (";", "",    '%',  "strange");@ define_syntax ("<", ">",   '(',  "strange");to create a syntax table called @"strange"@ and define thesyntax entries for appropriate this example.Related Functions: @create_syntax_table@, @use_syntax_table@, @find_matching_delimiter@Related Variables: @BLINK@
Fdefine_word :define_word:V:1Prototype: Void define_word (String s);This function is used to define the set of characters that form aword. The string @s@ consists of those characters or ranges ofcharacters that define the word.  For example, to define only thecharacters @A-Z@ and @a-z@ as word characters, use:@ define_word ("A-Za-z");To include a hyphen as part of a word, it must be the first characterof the control string @s@.  So for example,@ define_word ("-i-n");defines a word to consist only of the letters @i@ to @n@ and thehyphen character.
Fdefinekey :set_key_in_keymap:V:3Prototype: Void definekey(String f, String key, String kmap);Unlike @setkey@ which operates on the global keymap, this function isused for binding keys to functions in a specific keymap.  Here @f@ isthe function to be bound, @key@ is a string of characters that make upthe key sequence and @kmap@ is the name of the keymap to be used.  See@setkey@ for more information about the arguments.Related Functions: @setkey@, @undefinekey@, @make_keymap@, @use_keymap@ 
Fdel :del:V:0Prototype: Void del ();The @del@ function deletes the character at the current editingposition.  If the position is at the end of the buffer, nothing happens.If the deletion occurs at the end of a line, the next line will be joinedwith the current one.Related Functions: @eobp@, @erase_buffer@, @insert@
Fdel_region :delete_region:V:0 Prototype: Void del_region ();This function deletes the region defined by the mark and the current editing point.  For example,@ define delete_this_line ()@ {@   bol (); push_mark (); eol ();@   del_region ();@ }defines a function that deletes all characters on the current linefrom the beginning of the line until the end of the line.  It does not delete the line itself.Related Functions: @push_mark@, @markp@, @check_region@
Fdelbuf :kill_buffer_cmd:V:1Prototype: Void delbuf (String buf);@delbuf@ may be used to delete a buffer with the name specified by@buf@.  If the buffer does not exist, a S-Lang error will be generated.Related Functions: @whatbuf@, @bufferp@, @sw2buf@
Fdelete_abbrev_table :delete_abbrev_table:V:1Prototype: Void delete_abbrev_table (String name);Delete the abbrev table specified by @name@.
Fdelete_file :sys_delete_file:I:1Prototype: Integer delete_file (String file);This function may be used to delete a file specified by the @file@parameter.  It returns non-zero if the file was sucessfully deletedor zero otherwise.Related Functions: @rmdir@
Fdirectory :expand_wildcards:I:1returns number of files and list of files which match filename. On unix, this defaults to filename*.  It is primarily useful forDOS and VMS to expand wilcard filenames
Fdown :nextline:I:1Prototype: Integer down(Integer n);The @down@ function is used to move the editing point down a number oflines specified by the integer @n@.  It returns the number of linesactually moved.  The number returned will be less than @n@ only if thelast line of the buffer has been reached.  The editing point will beleft at the beginning of the line if it succeeds in going down morethan one line.Example: The function@ define trim_buffer@ {@   bob ();@   do @     {@        eol (); trim ();@     }@   while (down (1));@ }removes excess whitespace from the end of every line in the buffer.Related Functions: @down@, @left@, @right@, @goto_line@
Fdump_abbrev_table :dump_abbrev_table:V:1Prototype: Void dump_abbrev_table (String name);This function inserts the contents of the abbreviation table called@name@ into the current buffer.
Fdump_bindings :dump_bindings:V:1Prototype: Void dump_bindings(String map);This functions inserts a formatted list of keybindings for the keymapspecified by @map@ into the buffer at the current point.Related Functions: @get_key_function@
Fdupmark :dup_mark:I:0Prototype: Integer dupmark ();This function returns zero if the mark is not set or, if the mark isset, a duplicate of it is pushed onto the mark stack and a non-zerovalue is returned.Related Functions: @push_mark@, @markp@, @pop_mark@
Fenable_flow_control :enable_flow_control:V:1Prototype: Void enable_flow_control (Integer flag);This Unix specific function may be used to turn XON/XOFF flow controlon or off.  If @flag@ is non-zero, flow control is turned on; otherwise,it is turned off.
Fenable_top_status_line :enable_menu_bar:V:1Prototype: Void enable_top_status_line (Integer x);If x is non-zero, the top status line is enabled.  If x is zero, thetop status line is disabled and hidden.Related Functions: @set_top_status_line@
Fenlargewin :enlarge_window:V:0Prototype: Void enlargewin ();This function increases the size of the current window by one line byadjusting the size of the other windows accordingly.Related Functions: @window_info@, @onewindow@
Feob :eob:V:0Prototype: Void eob();The @eob@ function is used to move the current point to the end of thebuffer.  The function @eobp@ may be used to see if the currentposition is at the end of the buffer.Related Functions: @eobp@, @bob@, @bol@, @eol@
Feobp :eobp:I:0Prototype: Integer eobp ();The functio @eobp@ is used to determine if the current position is atthe end of the buffer or not.  It returns a non-zero value if at theend of the buffer or zero if not.Related Functions: @eob@, @bolp@, @eolp@
Feol :eol:V:0Prototype: Void eol();Moves the current position to the end of the current line.  The function@eolp@ may be used to see if one is at the end of a line or not.Related Functions: @eolp@, @bol@, @bob@, @eob@
Feolp :eolp:I:0Prototype: Integer eolp ();This function may be used to determine whether or not the currentposition is at the end of a line ot not.  If it is, the routinereturns a non-zero value; otherwise it returns zero.Related Functions: @eol@, @bolp@, @eobp@, @bobp@
Ferase_buffer :erase_buffer:V:0Prototype: erase_buffer ();The @erase_buffer@ function erases all text from the current buffer.However, it does not delete the buffer itself. Note: This function destroys all undo information associated with thebuffer making it impossible to undo the result of this function. Related Functions: @delbuf@, @del@
Ferror :msg_error:V:1Prototype: Void error(String msg);This function signals an error condition and displays the string @msg@at the bottom of the display.  The error can be caught by an@ERROR_BLOCK@ and cleared with the S-Lang @_clear_error@ function.Unless caught, the error will abort execution of S-Lang functions andthe S-Lang stack will unwind to the top level.  For more informationabout handling error conditions see the S-Lang User's Guide.Related Functions: @message@, @flush@
Fevalbuffer :load_buffer:V:0Prototype: Void evalbuffer ();This function causes the current buffer to be sent to the S-Langinterpreter for evaluation.  If an error is encountered while parsingthe buffer, the cursor will be placed at the location of the error.Related Functions: @evalfile@
Fexit_jed :exit_jed:V:0Prototype: Void exit_jed ();This function should be called to exit JED is a graceful and safemanner.  If any buffers have been modified but not saved, the user isqueried about whether or not to save each one first.  @exit_jed@ callsthe S-Lang hook @exit_hook@ if it is defined.  If @exit_hook@ isdefined, it must either call @quit_jed@ or @exit_jed@ to really exitthe editor.  If @exit_jed@ is called from @exit_hook@, @exit_hook@ willnot be called again.  For example:@ define exit_hook ()@ {@   flush ("Really Exit?");@   @   forever @     {@       switch (getkey () & 0x20)    % map to lowercase@        { case 'y': exit_jed (); }@        { case 'n': return; }@       beep ();@     }@ }may be used to prompt user for confirmation of exit.Related Functions: @quit_jed@, @suspend@, @flush@, @getkey@Related Variables: @BATCH@
Fexpand_filename :expand_filename:S:1Prototype: String expand_filename (String file);The @expand_filename@ function expands a file to a canonical form.For example, under Unix, if @file@ has the value @"/a/b/../c/d"@, itreturns @"/a/c/d"@.  Similarly, if @file@ has the value@"/a/b/c//d/e"@, @"/d/e"@ is returned.
Fextract_filename :extract_file:S:1Prototype: String extract_filename (String filespec);This function may be used to separate the file name from the path ofof a file specified by @filespec@.  For example, under Unix, theexpression@ extract_filename ("/tmp/name");returns the string @"name"@.Related Functions: @expand_filename@
Ffile_status :file_status:I:1Prototype: Integer file_status (String filename);The @file_status@ function returns information about a file specifiedby the name @filename@.  It returns an integer describing the filetype:2     file is a directory1     file exists and is not a directory0     file does not exist.-1     no access.-2     path invalid-3     unknown error
Ffile_time_compare :file_time_cmp:I:2Prototype: Integer file_time_cmp (String file1, String file2);This function compares the modification times of two files, @file1@and @file2@. It returns an integer that is either positive, negative,or zero integer for @file1 > file2@, @file1 < file2@, or @file1 == file2@, respectively.  In this context, the comparisonoperators are comparing file modification times.  That is, theoperator @>@ should be read ``is more recent than''.  The conventionadopted by this routine is that if a file does not exist, itsmodification time is taken to be at the beginning of time.  Thus, if@f@ exists, but @g@ does not, the @file_time_compare (f, g)@ willreturn a positive number. Related Functions: @file_status@, @time@
Ffilechgondsk :file_changed_on_disk:I:1Prototype: Integer filechgondsk (String fn);This function may be used to determine if the disk file specified by the parameter @fn@ is more recent than the current buffer.  Related Functions: @file_time_compare@
Ffind_file :find_file_in_window:I:1Prototype: Integer find_file (String name);The @find_file@ function switches to the buffer associated with thefile specified by @name@.  If no such buffer exists, one is createdand the file specified by @name@ is read from the disk and associatedwith the new buffer.  The buffer will also become attached to thecurrent window.  Use the @read_file@ function to find a file but notassociate it with the current window.Related Functions: @read_file@
Ffind_matching_delimiter :find_matching_delimiter:I:1Prototype: Integer find_matching_delimiter (Integer ch);This function scans either forward or backward looking for thedelimiter that matches the character specified by @ch@.  The actualdirection depends upon the syntax of the character @ch@.  Thematching delimiter pair must be declared as such by a prior call to@define_syntax@.  This function returns one of the following values:@  1    Match found@  0    Match not found@ -1    A match was attempted from within a string.@ -2    A match was attempted from within a comment@  2    No informationIn addition, the current point is left either at the match or is leftat the place where the routine either detected a mismatch or gave up.In the case of a comment or a string (return values of -2 or -1), the current point is left at the beginning of a comment.Note: If the of @ch@ is zero, the character at the current point will be used.Related Functions: @blink_match@, @create_syntax_table@, @define_syntax@, @parse_to_point@
Fflush :flush_message:V:1Prototype: Void flush (String msg);The @flush@ function behaves like @message@ except that it immediatelydisplays its argument @msg@ as a message in the mini-buffer.  That is,it is not necessary to call @update@ to see the message appear.Related Functions: @message@, @error@
Fforward_paragraph :forward_paragraph:V:0Prototype: Void forward_paragraph ();This function moves the current editing point forward past the end ofthe current paragraph.  Paragraph delimiters are defined through eithera buffer hook or via the hook @is_paragraph_separator@.Related Functions: @backward_paragraph@, @set_buffer_hook@
Fget_doc_string :get_doc_string:I:2Prototype: Integer get_doc_string (String obj, String filename);This function may be used to extract the documentation for a variableor function from a jed documentation file given by @filename@.If successful, it returns non-zero as well as the documentation string.It returns zero upon failure.  The first character of @obj@ determines whether @obj@ refers to a function or to a variable.  The rest of the characters specify the name of the object.
Fget_key_function :get_key_function:V:0Prototype: String get_key_function ();@get_key_function@ waits for a key to be pressed and returns a stringthat represents the binding of the key.  If the key has no bindingthe empty string is returned.  Otherwise, it also returns an integerthat describes whether or not the function is an internal one.  Ifthe function is internal, @1@ will be returned; otherwise zero willbe returned to indicate that the binding is either to an S-Langfunction or a macro.  If it is a macro, the first character of the of returned string will be the `@@' character.Related Functions: @getkey@, @input_pending@
Fget_last_macro :get_last_macro:V:0Prototype: String get_last_macro ();This function returns characters composing the last keyboard macro.  Thecharactors that make up the macro are encoded as themselves except thefollowing characters:@ '\n'    ---->   \J@ null    ---->   \@@  \      ---->   \\@  '"'    ---->   \"
Fget_passwd_info :get_passwd_info:V:1Prototype: (dir, shell, pwd, uid, gid) = get_passwd_info (String username);This function returns password information about the user with name@username@.  The returned variables have the following meaning:@ dir:     login directory@ shell:   login shell@ pwd:     encripted password@ uid:     user identification number@ gid:     group identification numberIf the user does not exist, or the system call fails, the functionreturns with @uid@ and @gid@ set to @-1@.
Fget_process_input :get_process_input:V:1Prototype: Void get_process_input (Integer tsecs);Read all pending input by all subprocesses.  If no input isavailable, this function will wait for input until @tsecs@ tenth ofseconds have expired.
Fget_termcap_string :get_termcap_string:S:1Prototype: String get_termcap_string (String cap);This function may be used to extract the string associated with thetermcap capability associated with @cap@.Note: This function is only available on Unix systems.
Fget_yes_no :get_yes_no:I:1Prototype: Integer get_yes_no (String s);This function may be used to get a yes or no response from theuser.  The string parameter @s@ will be used to construct the promptby concating the string @"? (yes/no)"@ to @s@.It returns @1@ if the answer is yes or @0@ if the answer is no.Related Functions: @getkey@, @flush@, @message@
Fgetbuf_info :get_buffer_info:V:0Prototype: getbuf_info ();This function returns values to the stack.  The four values from thetop are:@ Integer  % buffer flags@ String   % name of buffer@ String   % directory associated with buffer@ String   % name of file associated with buffer (if any).The integer that corresponds to the buffer flags are encoded as:@ bit 0: buffer modified@ bit 1: auto save mode@ bit 2: file on disk modified@ bit 3: read only bit@ bit 4: overwrite mode@ bit 5: undo enabled@ bit 6: buffer buried@ bit 7: Force save upon exit.@ bit 8: Do not backup@ bit 9: File associated with buffer is a binary file@ bit 10: Add CR to end of lines when writing buffer to disk.@ bit 11: Abbrev mode For example, @ (file,,,flags) = getbuf_info();returns the file and the flags associated with the current buffer.Related Functions: @setbuf_info@, @whatbuf@
Fgetkey :jed_getkey:I:0Prototype: Integer getkey ();The @getkey@ function may be used to read an input character from the keyboard.  It returns an integer in the range 0 to 256 which represents the ASCII or extended ASCII value of the character.Related Functions: @input_pending@, @ungetkey@
Fgetpid :jed_getpid:I:0Prototype: Integer getpid ();This function returns the process identification number for the currenteditor process.
Fgoto_column :goto_column:V:1Prototype: Void goto_column (Integer n);This function moves the current editing point to the column specifiedby the parameter @n@.  It will insert a combination of spaces and tabsif necessary to achieve the goal.Note: The actual character number offset from the beginning of theline depends upon tab settings and the visual expansion of othercontrol characters.Related Functions: @goto_column_best_try@, @what_column@, @left@, @right@, @goto_line@Related Variables: @TAB@, @TAB_DEFAULT@, @DISPLAY_EIGHT_BIT@
Fgoto_column_best_try :goto_column1:I:1Prototype: Integer goto_column_best_try (Integer c);This function is like @goto_column@ except that it will not insertwhitespace.  This means that it may fail to achieve the column numberspecified by the argument @c@.  It returns the current column number.Related Functions: @goto_column@, @what_column@
Fgoto_line :goto_line:V:1Prototype: Void goto_line (Integer n);The @goto_line@ function may be used to move to a specific line numberspecified by the parameter @n@.Note: The actual column that the editing point will be left in isindeterminate.Related Functions: @what_line@, @goto_column@, @down@, @up@.
Fgoto_user_mark :goto_user_mark:V:0Prototype: Void goto_user_mark (User_Mark mark);This function returns to the position of the User Mark @mark@.  SinceUser Marks are not local to a buffer, if the User Mark @mark@ was setin another buffer, that buffer will become the current buffer.Related Functions: @move_user_mark@, @create_user_mark@, @user_mark_buffer@
Findent_line :indent_line:V:0Prototype: Void indent_line ();The @indent_line@ line function indents the current line in a mannerwhich depends upon the current buffer.  The actual function that gets called is set via a prior call the @set_buffer_hook@ to set the indenthook.  The default value is to indent the line to the indentationlevel of the previous line.Related Functions: @set_buffer_hook@
Finput_pending :input_pending:I:1Prototype: Integer input_pending (Integer tsecs);This function is used to see if keyboard input is available to be reador not. The paramter @tsecs@ is the amount of time to wait for inputbefore returning if input is not available.  The time unit for @tsecs@is one-tenth of a second.  That is, to wait up to one second, pass avalue of ten to this routine.  It returns zero if no input isavailable, otherwise it returns non-zero.  As an example, @ define peek_key ()@ {@   variable ch;@   !if (input_pending (0)) return -1;@   ch = getkey ();@   ungetkey (ch);@   return ch;@ }       returns the value of the next character to be read if one isavailable; otherwise, it returns -1.Related Functions: @getkey@, @ungetkey@
Finsbuf :insert_buffer_name:V:1Prototype: Void insbuf (String buf);This function may be used to insert the contents of a buffer specifiedby the name @buf@ into the current buffer.  The editing position isadvanced to the end of the insertion.Related Functions: @copy_region@, @narrow@, @narrow_to_region@
Finsert :insert_string:V:1Prototype: Void insert (String str);Inserts string @str@ into buffer at the current position.  The editingpoint is moved to the end of the of the string that was inserted.Related Functions: @del@, @insert_file@, @insbuf@ 
Finsert_file :insert_file:I:1Prototype: Integer insert_file (String f);This function may be used to insert the contents of a file named @f@into the buffer at the current position.  The current editing pointwill be placed at the end of the inserted text.  The function returns@-1@ if the file was unable to be opened; otherwise it returns thenumber of lines inserted.  This number can be zero if the file is empty.Related Functions: @read_file@, @find_file@, @insert@
Finsert_file_region :insert_file_region:I:3Prototype: Integer insert_file_region (String file, String beg, String end);This function may be used to insert a region specified by the strings@beg@ and @end@ of the file with name @file@ into the current buffer.The file is scanned line by line until a line that begins with thestring given by @beg@ is encountered.  Then, that line and allsuccessive lines upto the one that starts with the string specifiedby @end@ is inserted into the buffer.  The line beginning with thevalue of @end@ is not inserted although the one beginning with @beg@ is.The function returns the number of lines inserted or @-1@ upon failureto open the file.Related Functions: @insert_file@
Finsert_from_kill_array :insert_from_kill_array:V:1Prototype: Void insert_from_kill_array (Integer n);This function inserts the contents of the nth element, specified by@n@, of an internal array of character strings.Note: This function is not available on 16 bit systems. Related Functions: @insert_from_kill_array@, @copy_region_to_kill_array@ Related Variables: @KILL_ARRAY_SIZE@
Finsert_rect :insert_rectangle:V:0Prototype: insert_rect ();The @insert_rect@ function inserts the contents of the rectangle bufferat the current editing point.  The rectangle buffer is not modified.Any text that the rectangle would overwrite is moved to the right by an amount that is equal to the width of the rectangle.Related Functions: @kill_rect@, @blank_rect@, @copy_rect@
Fis_internal :is_internal:I:1Prototype: Integer is_internal(String f);@is_internal@ returns non-zero is function @f@ is defined as aninternal function or returns zero if not.  Internal functions notimmediately accessable from S-Lang; rather, they must be called usingthe @call@ function.  See also the related S-Lang function@is_defined@ in the S-Lang Programmer's Reference.Related Functions: @call@
Fkeymap_p :keymap_p:I:1Prototype: Integer keymap_p (String kmap);The @keymap_p@ function may be used to determine whether or not akeymap with name @kmap@ exists.  If the keymap specified by @kmap@exists, the function returns non-zero.  It returns zero if the keymapdoes not exist.Related Functions: @make_keymap@, @definekey@
Fkill_process :jed_close_process:V:1Prototype: Void kill_process (Integer id);Kill the subprocess specified by the process handle @id@.
Fkill_rect :kill_rectangle:V:0 Prototype: Void kill_rect ();This function deletes the rectangle defined by the mark and the current point.  The contents of the rectangle are saved in the rectangle bufferfor later retrieval via the @insert_rect@ function.  The previous contents of the rectangle buffer will be lost.Related Functions: @insert_rect@, @blank_rect@, @copy_rect@
Fleft :backwchars:I:1Prototype: Integer left(Integer n);@left@ moves the editing point backward @n@ characters and returns thenumber actually moved.  The number returned will be less than @n@ onlyif the top of the buffer is reached. Related Functions: @right@, @up@, @down@, @bol@, @bob@ 
Flist_abbrev_tables :list_abbrev_tables:I:0Prototype: Integer list_abbrev_tables ();This function returns the names of all currently defined abbreviation tables.  The top item on the stack will be the number oftables followed by the names of the tables.
Flooking_at :looking_at:I:1Prototype: Integer looking_at (String s);This function returns non-zero if the characters immediately followingthe current editing point match the string specified by @s@.  Whetherthe match is case-sensitive or not depends upon the value of thevariable @CASE_SEARCH@.  The function returns zero if there is no match.Related Functions: @ffind@, @fsearch@, @re_fsearch@, @bfind@
Fmake_keymap :create_keymap:V:1Prototype: Void make_keymap (String km);The @make_keymap@ function creates a keymap with a name specified bythe @km@ parameter.  The new keymap is an exact copy of thepre-defined @"global"@ keymap.Related Functions: @use_keymap@, @keymap_p@, @definekey@, @setkey@
Fmap_input :map_character:V:2Prototype: Void map_input (Integer x, Integer y);The @map_input@ function may be used to remap an input character withascii value @x@ from the keyboard to a different character with asciivalue @y@.  This mapping can be quite useful because it takes placebefore the editor interprets the character. One simply use of thisfunction is to swap the backspace and delete characters.  Since thebackspace character has an ascii value of @8@ and the delete character has ascii value @127@, the statement @ map_input (8, 127);maps the backspace character to a delete character and @ map_input (127, 8);maps the delete character to a backspace character.  Used together,these two statement effectively swap the delete and backspace keys.Related Functions: @getkey@
Fmarkp :markp:I:0Prototype: Void markp ();This function returns a non-zero value if the mark is set; otherwise, itreturns zero.  If a mark is set, a region is defined.Related Functions: @push_mark@, @pop_mark@, @check_region@, @push_spot@
Fmessage :message:V:1Prototype: Void message(String msg);The @message@ function displays the string @msg@ at the bottom of thedisplay where the minibuffer is located.  This in itself does notimmediately cause the message to be display.  In fact, it may not evenbe displayed at all.  The message is only displayed when the editorupdates the screen.  If the @message@ function is called again beforethe screen update, the new message will be the one that will bedisplayed when the screen is finally updated.  For an immediate effect,the function @flush@ should be used instead.Related Functions: @flush@, @error@, @update@, @clear_message@
Fmkdir :make_directory:I:1Prototype: Integer mkdir (String dir);The @mkdir@ function may be used to create a new directory with namespecified by @dir@.  It returns zero if the directory could not becreated or non-zero if a directory with the specified name was created.Related Functions: @rmdir@, @file_status@
Fmove_user_mark :move_user_mark:V:0Prototype: Void move_user_mark (User_Mark mark);This function call takes a previously created User Mark, @mark@, andmoves it to the current position and buffer.  This means that if onesubsequently calls @goto_user_mark@ with this mark as an argument, thethe position will be set to what it is prior to the call to@move_user_mark@.Note: This function call is not equivalent to simply using@ mark = create_user_mark ();because independent copies of a User Mark are not created uponnassignment.  That is, if one has@ variable mark1, mark2;@ setbuf ("first");@ mark1 = create_user_mark ();@ mark2 = mark1;@ setbuf ("second");and then calls @ move_user_mark (mark1);both user marks, @mark1@ and @mark2@ will be moved since they refer tothe same mark.Related Functions: @goto_user_mark@, @create_user_mark@, @user_mark_buffer@
Fmsdos_fixup_dirspec :msdos_pinhead_fix_dir:S:1Prototype: String msdos_fixup_dirspec (String dir);The motivation behind this is that DOS does not like a trailingbackslash @\\@ except if it is for the root dir.  This function makes@dir@ conform to that.
Fnarrow :narrow_to_lines:V:0Prototype: Void narrow ();This function may be used to restict editing to the region of linesbetween the mark and the editing point.  The region includes the linecontaining the mark as well as the line at the current point. Allother lines outside this region are completely inacessable withoutfirst lifting the restriction using the @widen@ function. As a simpleexample, suppose that there is a function called @print_buffer@ thatoperates on the entire buffer.  Then the following function will workon a region of lines:@ define print_region ()@ {@    narrow ();@    print_buffer ();@    widen ();@ }The @narrow@ function will signal an error if the mark is not set.Note also that the narrow function may be used recursively in thesense that a narrowed region may be further restricted using the@narrow@ function.  For each narrow, the @widen@ function must be called to lift each restriction.Related Functions: @widen@, @narrow_to_region@
Fnarrow_to_region :narrow_to_region:V:0Prototype: Void narrow_to_region (void);The @narrow_to_region@ function behaves like the @narrow@ functionthat @narrow@ operates on lines and @narrow_to_region@ restricts editing to only characters within the region.Related Functions: @widen_region@, @narrow@.
Fnwindows :num_windows:I:0Prototype: Integer nwindows ();The @nwindows@ function returns the number of windows currently visible.If the variable @MINIBUFFER_ACTIVE@ is non-zero, the minibuffer is busy and contributes to the number of windows.Related Functions: @splitwindow@, @onewindow@, @window_size@Related Variables: @MINIBUFFER_ACTIVE@
Fonewindow :one_window:V:0Prototype: Void onewindow ();This function deletes all other windows except the current window andthe mini-buffer window.Related Functions: @nwindows@, @splitwindow@, @enlargewin@Related Variables: @MINIBUFFER_ACTIVE@
Fopen_process :jed_open_process:I:1Prototype: Integer open_process (name, argv1, argv2, ..., argvN, N);Returns id of process, -1 upon failure.
Fopen_rect :open_rectangle:V:0 Prototype: Void open_rect ();The @open_rect@ function may be used to insert a blank rectangle whosesize is determined by the mark and the current editing point.  Any textthat lies in the region of the rectangle will be pushed to the right.Related Functions: @insert_rect@, @kill_rect@, @copy_rect@
Fotherwindow :other_window:V:0 Prototype: Void otherwindow ();This function will make the next window in the ring of windows as thedefault window. For example,@ define zoom_next_window ()@ {@   otherwindow (); onewindow ();@ }defines a function that moves to the next window and then makes it the only window on the screen.Related Functions: @nwindows@, @onewindow@Related Variables: @MINIBUFFER_ACTIVE@
Fparse_to_point :parse_to_point:I:0Prototype: Integer parse_to_point ();This function attempts to determine the syntactic context of thecurrent editing point.  That is, it tries to determine whether or notthe current point is in a comment, a string, or elsewhere.It returns:@ -2   In a comment@ -1   In a string or a character@  0   Neither of the aboveNote: This routine is rather simplistic since it makes the assumption that the character at the beginning of the current line is not in a comment nor is in a string.Related Functions: @define_syntax@, @find_matching_delimiter@
Fpipe_region :pipe_region:I:1Prototype: Integer pipe_region (String cmd);The @pipe_region@ function executes @cmd@ in a separate process andsends the region of characters defined by the mark and the currentpoint to the standard input of the process.  It successful, it returns the exit status of the process.  Upon failure it signals an error.Note: This function is only available for Unix and OS/2 systems.Related Functions: @run_shell_cmd@, @push_mark@
Fpop2buf :pop_to_buffer:V:1Prototype: Void pop2buf (String buf);The @pop2buf@ function will switch to another window and display thebuffer specified by @buf@ in it.  If @buf@ does not exist, it will becreated. If @buf@ already exists in a window, the window containing@buf@ will become the active one.  This function will create a newwindow if necessary.  All that is guaranteed is that the currentwindow will continue to display the same buffer before and after thecall to @pop2buf@.Related Functions: @whatbuf@, @pop2buf_whatbuf@, @setbuf@, @sw2buf@, @nwindows@
Fpop2buf_whatbuf :pop_to_buffer:S:1Prototype: String pop2buf_whatbuf (String buf);This function performs the same function as @pop2buf@ except that thename of the buffer that @buf@ replaced in the window is returned.This allows one to restore the buffer in window to what it was beforethe call to @pop2buf_whatbuf@.Related Functions: @pop2buf@, @whatbuf@
Fpop_mark :pop_mark:V:1Prototype: pop_mark (Integer g);@pop_mark@ pops the most recent mark pushed onto the mark stack.  Ifthe argument @g@ is non-zero, the editing position will be moved tothe location of the mark.  However, if @g@ is zero, the editingposition will be unchanged.Related Functions: @push_mark@, @pop_spot@, @markp@, @check_region@, @goto_user_mark@
Fpop_spot :pop_spot:V:0Prototype: Void pop_spot ();This function is used after a call to @push_spot@ to return to theediting position at the last call to @push_spot@ in the current buffer.Related Functions: @push_spot@, @pop_mark@
Fprefix_argument :do_prefix_argument:I:1Prototype: Integer prefix_argument (Integer dflt);This function may be used to determine whether or not the user has entereda prefix argument from the keyboard.  If a prefix argument is present, its value is returned; otherwise, @dflt@ is returned.  Calling this function cancels the prefix argument.For example,@ variable arg = prefix_argument (-9999);@ if (arg == -9999)@   message ("No Prefix Argument");@ else@   message (Sprintf ("Prefix argument: %d", arg, 1));displays the prefix argument in the message area.Note: This function is incapable of distinguishing between the case ofno prefix argument and when the argument's value is @dflt@.  Currently,this is not a problem because the editor does not allow negative prefix arguments.
Fprocess_mark :jed_get_process_mark:V:1Prototype: User_Mark process_mark (Integer id);This function returns the user mark that contains the position of the last output by the process.
Fpush_mark :push_mark:V:0Prototype: Void push_mark();This function marks the current position as the beginning of a region.and pushes other marks onto a stack.  A region is defined by thismark and the editing point.  The mark is removed from the stack onlywhen the function @pop_mark@ is called. For example, @ define mark_buffer ()@ {@   bob (); @   push_mark ();@   eob ();@ }marks the entire buffer as a region.Related Functions: @pop_mark@, @push_spot@, @markp@, @dupmark@, @check_region@ 
Fpush_spot :push_spot:V:0Prototype: Void push_spot ();@push_spot@ pushes the location of the current buffer location onto astack.  This function does not set the mark.  The function @push_mark@should be used for that purpose. The spot can be returned to using thefunction @pop_spot@. Note: Spots are local to each buffer.  It is notpossible to call @push_spot@ from one buffer and then subsequentlycall @pop_spot@ from another buffer to return to the position in thefirst buffer.  For this purpose, one must use user marks instead.Related Functions: @pop_spot@, @push_mark@, @create_user_mark@
Fquit_jed :quit_jed:V:0Prototype: Void quit_jed ();This function quits the editor immediately.  No buffers areauto-saved and no hooks are called.  The function @exit_jed@ should becalled when it is desired to exit in a safe way.Related Functions: @exit_jed@
Frandom :make_random_number:I:2Prototype: Integer random (Integer seed, Integer nmax);The @random@ function returns a random number in the range 0 to, butnot including, @nmax@.  If the first parameter @seed@ is 0, thenumber generated depends on a previous seed.  If @seed@ is -1, thecurrent time and process id will be used to seed the random numbergenerator; otherwise @seed@ will be used.
Fread_file :find_file_cmd:I:1Prototype: Integer read_file (string fn);The @read_file@ function may be used to read a file specified by @fn@into its own buffer.  It returns a non-zero value upon success andsignals an error upon failure.  The hook @find_file_hook@ is calledafter the file is read in.  Unlike the related function, @find_file@, this function does not create a window for the newly created buffer.Related Functions: @find_file@, @file_status@, @write_buffer@
Fread_mini :mini_read:V:3Prototype: String read_mini (String prompt, String dflt, String init);The @read_mini@ function reads a line of input from the user in themini-buffer.  The first parameter, @prompt@, is used to prompt theuser.  The second parameter, @dflt@, is what is returned as a defaultvalue if the user simply presses the return key.  The final parameter,@init@, is stuffed into the mini-buffer for editing by the user.For example, @ define search_whole_buffer ()@ {@   variable str;@   str = read_mini ("Search for:", "", "");@   !if (strlen (str)) return;@   !if (fsearch (str))@      {      @        push_mark (); bob ();@        if (fsearch (str)) pop_mark (0);@        else pop_mark (1);@          {@             pop_mark (1);@             error ("Not found");@          }@      }@ }reads a string from the user and then searches forward for it and ifnot found, it resumes the search from the beginning of the buffer.Note: If the user aborts the function @mini_read@ by pressing thekeyboard quit character (e.g., Ctrl-G), an error is signaled.  Thiserror can be caught by an @ERROR_BLOCK@ and the appropriate actiontaken. Also if the mini-buffer is already in use, this function shouldnot be called.  The variable @MINIBUFFER_ACTIVE@ may be checked todetermine if this is the case or not.Related Functions: @read_with_completion@, @getkey@, @input_pending@ Related Variables: @MINIBUFFER_ACTIVE@
Fread_with_completion :read_object_with_completion:V:4Prototype: Void read_with_completion (String prt, String dflt, String s, Integer type);This function may be used to read one of the objects specified by thelast parameter @type@.  The first parameter, @prt@, is used as aprompt, the second parameter, @dflt@, is used to specify a default,and the third parameter, @s@, is used to initialize the string to be read.@type@ is an integer with the following meanings:@ 'f'   file name@ 'b'   buffer name@ 'F'   function name@ 'V'   variable name.Finally, if @type@ has the value @'s'@, then the set of completionswill be defined by a zeroth parameter, @list@, to the function call.This parameter is simple a comma separated list of completions.For example, @ read_with_completion ("Larry,Curly,Moe", "Favorite Stooge:",@                       "Larry", "", 's');provides completion over the set of three stooges.The function returns the string read.Related Functions: @read_mini@
Frecenter :recenter:V:1Prototype: Void recenter (Integer nth);This function may be used to scroll the window such that the @nth@ lineof the window contains the current line.  If @nth@ is zero, the current line will be placed at the center of the window and the screen will becompletely redrawn.Related Functions: @nwindows@, @window_info@
Frename_file :rename_file:I:2Prototype: Integer rename_file (String old_name, String new_name);This function may be used to change the name of a disk file from @old_name@ to @new_name@.  Upon success, zero is returned.  Any othervalue indicates failure.Note: Both filenames must refer to the same file system.Related Functions: @file_status@, @stat_file@
Fright :forwchars:I:1Prototype: Integer right(Integer n);This function moves the editing position forward forward @n@characters. It returns the number of characters actually moved.  Thenumber returned will be smaller than @n@ if the end of the buffer isreached.Related Functions: @left@, @up@, @down@, @eol@, @eob@
Frmdir :delete_directory:I:1Prototype: Integer rmdir (dir);@rmdir@ may be used to delete the directory specified by the name@dir@.  If the directory was sucessfully deleted, the functionreturns a non-zero value.  Otherwise, the directory could not bedeleted and zero will be returned.Related Functions: @mkdir@, @delete_file@
Frun_shell_cmd :shell_command:I:1Prototype: Void run_shell_cmd (String cmd);The @run_shell_cmd@ function may be used to run @cmd@ in a separateprocess.  Any output generated by the process is inserted into thebuffer at the current point.  It generates a S-Lang error if theprocess specified by @cmd@ could not be opened.  Otherwise, itreturns the exit status of the process.
Fsearch_file :search_file:I:3Prototype: Integer search_file (String filename, String re, Integer nmax);This function may be used to search for strings in a disk filematching the regular expression @re@.  The first argument @filename@specifies which file to search.  The last argument @nmax@ specifieshow many matches to return.  Each line that is matched is pushed ontothe S-Lang stack.  The number of matches (limited by @nmax@) is returned.If the file contains no matches, zero is returned.
Fsend_process :jed_send_process:V:2Prototype: Void send_process (Integer id, String s);
Fsend_process_eof :jed_send_process_eof:V:1Prototype: send_process_eof (Integer pid);This function closes the @stdin@ of the process specified by thehandle @pid@.
Fset_abort_char :set_abort_char:V:1Prototype: Void set_abort_char (Integer ch);This function may be used to change the keyboard character thatgenerates an S-Lang interrupt.  The parameter @ch@ is the ASCII valueof the character that will become the new abort character. Thedefault abort character @Ctrl-G@ corresponds to @ch=7@.
Fset_buffer_hook :set_buffer_hook:V:2Prototype: Void set_buffer_hook (String hook, String f);Set current buffer hook @hook@ to function @f@. @f@ is a userdefined S-Lang function.  Currently, name can be any one of:@  "par_sep"  -- returns zero if the current line does not@                constitute the beginning or end of a paragraph.  @                It returns non-zero otherwise.  The default value of hook is@                is_paragraph_separator.@  "indent_hook" -- returns nothing.  It is called by the indent line@                routines.@  "wrap_hook"   hook that is called after a line is wrapped.  Returns@                nothing@  "newline_indent_hook"  --- returns nothing.  If this hook is defined,@                it will be called instead of the internal function @                newline_and_indent is called.
Fset_color :set_term_colors:V:3Prototype: Void set_color(String obj, String fg, String bg);This function sets the foreground and background colors of an objectspecified by the string @obj@ to @fg@ and @bg@.  The exact values ofthe strings @fg@ and @bg@ are system dependent.  For the X-Windowsystem, they can be any string that the server understands, e.g.,@"SteelBlue"@.  For other systems, the color must be one of thefollowing:@ "black"            "gray"         @ "red"              "brightred"    @ "green"            "brightgreen"  @ "brown"            "yellow"       @ "blue"             "brightblue"   @ "magenta"          "brightmagenta"@ "cyan"             "brightcyan"   @ "lightgray"        "white"        One most terminals, the values in the second column have no affectwhen used as the background color.The valid names for @obj@ are:@ "normal"      Default foreground/background@ "status"      The status window line@ "region"      Highlighted Regions@ "cursor"      Text Cursor (X-Windows)@ "menu"        The menu bar@ "error"       Error messages@ "message"     Other messages@ "dollar"      Color of the indicator that text extends beyond the@                boundary of the window.If color syntax highlighting is enabled, the following object namesare also meaningful:@ "number"      Numbers in C-mode and Equations in TeX-mode@ "delimiter"   Commas, semi-colons, etc...@ "keyword"     Language dependent@ "string"      Literal strings@ "comment"     Comments@ "operator"    Such as +, -, etc...@ "preprocess"  Preprocessor linesSee a discussion in the JED User Manual for more discussion.Related Functions: @set_color_esc@, @set_column_colors@, @set_color_object@Related Variables: @WANT_SYNTAX_HIGHLIGHT@, @USE_ANSI_COLORS@
Fset_color_esc :set_term_color_esc:V:2Prototype: Void set_color_esc (String object, String esc_seq);This function may be used to associate an escape sequence with anobject.  The escape sequence will be sent to the terminal prior tosending updating the object.  It may be used on mono terminals tounderline objects, etc...  The object names are the same names used bythe @set_color@ function. Note: Care should be exercised when usingthis function.  Also, one may need to experiment around a little toget escape sequences that work together.Related Functions: @set_color@
Fset_color_object :set_color_object:V:3Prototype: Void set_color_object (Integer obj, String fg, String bg);Associate colors fg and bg with object obj.  Valid values for @obj@ are in the range 30 to 128.  All other values are reserved.  Values forthe strings @fg@ and @bg@ are as given by the description for @set_color@.Related Functions: @set_column_colors@, @set_color@
Fset_column_colors :set_column_colors:V:3Prototype: Void set_column_colors (Integer color, Integer c0, Integer c1);This function associates a color with columns @c0@ through @c1@ in the current buffer.  That is, if there is no syntax highlighting alreadydefined for the current buffer, when the current buffer is displayed, columns @c0@ through @c1@ will be displayed with the attributes of the@color@ object.  The parameters @c0@ and @c1@ are restricted to the range1 through @SCREEN_WIDTH@.  Use the function @set_color_object@ to assignattributes to the @color@ object.Related Functions: @set_color_object@
Fset_current_kbd_command :set_current_kbd_command:V:1Prototype: Void set_current_kbd_command (String s);
Fset_expansion_hook :set_expansion_hook:V:1Prototype: Void set_expansion_hook (String fname);This function may be used to specify a function that will be called toexpand a filename upon TAB completion.  The function @fname@ mustalready be defined.  When @fname@ is called, it is given a string tobe expanded. If it changes the string, it must return a non-zero valueand the modified string.  If the string is not modified, it must simplyreturn zero.
Fset_file_translation :set_file_trans:V:1Prototype: set_file_translation (Integer n);This function affects only the way the next file is opened.  Itsaffect does not last beyond that.  If it the value of the parameteris 1, the next file will be opened in binary mode.  If the parameter iszero, the file will be opened in text mode.
Fset_mode :set_mode_cmd:V:2Prototype:  Void set_mode(String mode, Integer flags);This function sets buffer mode flags and status line mode name.  @mode@is a string which is displayed on the status line if the @%m@ statusline format specifier is used. The second argument, @flags@ is aninteger with the possible values:@ 0 : no mode. Very generic@ 1 : Wrap mode.  Lines are automatically wrapped at wrap column.@ 2 : C mode.@ 4 : Language mode.  Mode does not wrap but is useful for computer @     languages.@ 8 : S-Lang mode@ 16: Fortran mode highlighting@ 32: TeX mode highlightingRelated Functions: @whatmode@, @getbuf_info@, @setbuf_info@.  
Fset_process :jed_set_process:V:3Prototype: Void set_process (Integer pid, String what, String value);@pid@ is the process hendle returned by @open_process@.  The secondparameter, @what@, specifies what to set.  It must be one of thestrings:@ "signal" :  indicates that 'value' is the name of a function to call@             when the process status changed.  The function specified@             by 'value' must be declared to accept an argument list:@             (pid, flags) where 'pid' has the same meaning as above and@             flags is an integer with the meanings:@               1: Process Running@               2: Process Stopped@               4: Process Exited Normally@               8: Process Exited via Signal@             To obtain more information about the process, e.g., exit_status,@             use the function 'get_process_status'.@             Note: when this function is called, the current buffer is@             guaranteed to be the buffer associated with the process.@ @ output" :   This parameter determines how output from the process is @             is processed.  If the 'value' is the empty string "", output@             will go to the end of the buffer associated with the process @             and the point will be left there.@             If value is ".", output will go at the current buffer position. @             If value is "@", output will go to the end of the buffer but@             the point will not move.  Otherwise, 'value' is the name of @             a slang function with arguments: (pid, data) where pid has@             the above meaning and data is the output from the process.
Fset_status_line :set_status_format:V:2Prototype: set_status_line (String format, Integer flag);This function may be used to customize the status line of the currentwindow according to the string @format@.  If the second parameter@flag@ is non-zero, @format@ will apply to the global format string;otherwise it applies to current buffer only.  Newly created bufferinherit the global format string when they appear in a window.The format string may contain the following format specifiers:@ %b   buffer name@ %f   file name@ %v   JED version@ %t   current time --- only used if variable DISPLAY_TIME is non-zero@ %p   line number or percent string@ %%   literal '%' character@ %m   mode string@ %a   If abbrev mode, expands to "abbrev"@ %n   If buffer is narrowed, expands to "Narrow"@ %o   If overwrite mode, expands to "Ovwrt"@ %c   If the variable LINENUMBERS is 2, this expands to the current@        column number. For example, the default status line used by JED's EDT emulation usesthe format string:@ "(Jed %v) EDT: %b   (%m%a%n%o)  %p,%c   Advance   %t"Related Functions: @set_mode@, @narrow@, @whatbuf@, @getbuf_info@Related Variables: @DISPLAY_TIME@, @LINENUMBERS@
Fset_syntax_flags :set_syntax_flags:V:2Prototype: Void set_syntax_flags (String table, Integer flag);This function may be used to set the flags in the syntax tablespecified by the @table@ parameter.  The @flag@ parameter may takeany of the following values or any combination bitwise or-ed together:@ 1     Keywords are case insensitive@ 2     Comments are Fortran-like@ 4     Comments are C-like@ 8     Keywords are TeX-likeA Fortran-like comment means that any line that begins with anycharacter that is not a digit is considered to be a comment.  AC-like comment means that any line that starts with @"* "@ preceededby any ammount of whitespace is to be highlighted as a comment.A TeX-like keyword is any word that follows the quote character.Related Functions: @define_syntax@
Fset_term_vtxxx :do_tt_set_term_vtxxx:V:1Set terminal display appropriate for a vtxxx terminal.  This function takes a single integer parameter.  If non-zero, the terminal type is set for a vt100.  This means the terminal lacks the ability to insert/deletelines and characters.  If the parameter is zero, the terminal is assumedto be vt102 compatable.  Unless you are using a VERY old terminal or a primitive emulator, use zero as the parameter.
Fset_top_status_line :define_top_screen_line:V:1Prototype: String set_top_status_line (String str);This functions sets the string to be displayed at the top of the display. It returns the value of the line that was previously displayed.Related Functions: @enable_top_status_line@
Fsetbuf :set_buffer:V:1Prototype: Void setbuf(String buf);Changes the default buffer to one named @buf@.  If the buffer does notexist, it will be created. Note: This change only lasts until toplevel of editor loop is reached at which point the the bufferassociated with current window will be made the default.  That is thischange should only be considered as temporary.  To make a long lastingchange, use the function @sw2buf@. Related Functions: @sw2buf@, @pop2buf@, @whatbuf@, @pop2buf_whatbuf@ 
Fsetbuf_info :set_buffer_info:V:4Prototype: Void setbuf_info(String file, String dir, String buf, Integer flags);This function may be used to change attributes regarding the currentbuffer.  It performs the opposite function of the related function@getbuf_info@.   Here @file@ is the name of the file to be associatedwith the buffer; @dir@ is the directory to be associated with thebuffer; @buf@ is the name to be assigned to the buffer, and @flags@describe the buffer attributes.  See @getbuf_info@ for a discussion of@flags@.  Note that the actual file associated with the buffer islocated in directory @dir@ with the name @file@.For example, the function@ define set_overwrite_mode ()@ {@    variable dir, file, flags, name;@    (file, dir, name, flags) = getbuf_info ();@    flags = flags | (1 shl 4);@    setbuf_info (file, dir, name, flags);@ }may be used to turn on overwrite mode for the current buffer.  Notethat it is better exploit the fact that S-Lang is a stack based languageand simply write the above function as:@ define set_overwrite_mode ()@ {@    setbuf_info (getbuf_info () | 0x10);@ }Here, @(1 shl 4)@ has been written as the hexidecimal number @0x10@.Related Functions: @getbuf_info@, @setbuf@, @whatbuf@
Fsetkey :set_key:V:2Prototype: Void setkey(String fun, String key);This function may be used to define a key sequence specified by thestring @key@ to the function @fun@.  @key@ can contain the @^@character which denotes that the following character is to beinterpreted as a control character, e.g.,@ setkey("bob", "^Kt");sets the key sequence @Ctrl-K t@ to the function @bob@.The @fun@ argument is usually the name of an internal or a userdefined S-Lang function.  However, if may also be a sequence offunctions or even another keysequence (a keyboard macro).  Forexample, @ setkey ("bol;insert(string(whatline()))", "^Kw");assigns the key sequence @Ctrl-K w@ to move to the beginning of a lineand insert the current line number.  For more information about this important function, see the JED User Manual.Note that @setkey@ works on the "global" keymap. Related Functions: @unsetkey@, @definekey@
Fskip_chars :skip_chars:V:1Prototype: Void skip_chars(String s);This fnction may be used to move the editing point forward past allcharacters in string @s@ which contains the chars to skip, or a rangeof characters.  A character range is denoted by two charctersseparated by a hyphen.  If the first character of the string @s@ is a@'^'@ character, then the list of characters actually denotes thecomplement of the set of characters to be skipped.  To explicitlyinclude the hyphen character in the list, it must be either the firstor the second character of the string, depending upon whether or notthe @'^'@ character is present. So for example, @ skip_chars ("- \t0-9ai-o_");will skip the hyphen, space, tab, numerals @0@ to @9@, the letter @a@,the letters @i@ to @o@, and underscore.  An example which illustrates the complement of a range is@ skip_chars("^A-Za-z");which skips all characters except the letters. Note: The backslash character may be used to escape only the firstcharacter in the string.  That is, @"\\^"@ is to be used to skip over@^@ characters. Related Functions: @bskip_chars@, @skip_white@ 
Fskip_non_word_chars :skip_non_word_chars:V:0Prototype: Void skip_non_word_chars ();This function moves the current editing point forward past allnon-word characters until a word character is encountered.Characters that make up a word are set by the @define_word@ function.Related Functions: @define_word@, @skip_word_chars@, @skip_chars@, @bskip_non_word_chars@
Fskip_white :skip_whitespace:V:0Prototype: Void skip_white ();The @skip_white@ function moves the current point forward until itreaches a non-whitespace character or the end of the current line,whichever happens first.  In this context, whitespace is considered tobe any combination of space and tab characters.  To skip newlinecharacters as well, the function @skip_chars@ may be used.Related Functions: @bskip_chars@, @what_char@, @trim@, @right@
Fskip_word_chars :skip_word_chars:V:0Prototype: Void skip_word_chars ();This function moves the current editing point forward across allcharacters that constitute a word until a non-word character isencountered. Characters that make up a word are set by the@define_word@ function.Related Functions: @define_word@, @skip_non_word_chars@, @skip_chars@, @bskip_word_chars@
Fsplitwindow :split_window:V:0 Prototype: Void splitwindow ();This function splits the current window vertically creating anotherwindow that carries the current window's buffer.Related Functions: @onewindow@, @enlargewin@, @window_info@
Fsuspend :sys_spawn_cmd:V:0Prototype: Void suspend ();The action of this command varies with the operating system.  Under Unix, the editor will be suspended and control will pass to theparent process.  Under VMS and MSDOS, a new subprocess will be spawned.Before suspension, @suspend_hook@ is called.  When the editor is resumed, @resume_hook@ will be called.  These hooks are user-defined functions that take no arguments and return no values.
Fsw2buf :switch_to_buffer_cmd:V:1Prototype: Void sw2buf (String buf);This function is used to switch to another buffer whose name isspecified by the parameter @buf@.  If the buffer specified by @buf@does not exist, one will be created. Note: Unlike @setbuf@, the changeto the new buffer is more permanent in the sense that when controlpassed back out of S-Lang to the main editor loop, if the currentbuffer at that time is the buffer specified here, this buffer will beattached to the window.Related Functions: @setbuf@, @pop2buf@, @bufferp@
Ftranslate_region :translate_region:V:0Prototype: Void translate_region ();This function uses the global character array @TRANSLATE_ARRAY@ tomodify the characters in a region based on the mapping defined by thearray.  The only restriction is that the newline character cannot bemapped.  This example@ define swap_a_and_b ()@ {@   variable i;@   _for (0; 255, 1)@     {@        i = ();@        TRANSLATE_ARRAY[i] = i;@     }@   TRANSLATE_ARRAY['a'] = 'b';@   TRANSLATE_ARRAY['b'] = 'a';@   bob (); push_mark (); eob ();@   translate_region ();@ }uses @translate_region@ to swap the @'a'@ and @'b'@ characters in the current buffer.Related Functions: @insert@, @delete@, @what_char@Related Variables: @TRANSLATE_ARRAY@
Ftrim :trim_whitespace:V:0Prototype: Void trim (); The @trim@ function removes all whitespace around the current editingpoint.  In this context, whitespace is considered to be anycombination of tab and space characters.  In particular, it does notinclude the newline character.  This means that the @trim@ functionwill not delete across lines. Related Functions: @skip_chars@, @skip_white@, @del@, @del_region@
Ftt_send :do_tt_write_string:V:1Prototype: Void tt_send (String s);This function may be used to send a string specified by @s@ directlyto the terminal with no interference by the editor.  One shouldexercise caution when using this routine since it may interfere withJED's screen management routines forcing one to redraw the screen.Nevertheless, it can serve a useful purpose.  For example, when run inan XTerm window, using@ tt_send ("\e[?9h");will enable sending mouse click information to JED encoded askeypresses.Related Functions: @beep@
Fundefinekey :unset_key_in_keymap:V:2Prototype: Void undefinekey (String key, String kmap);This function may be used to remove a keybinding from a specifiedkeymap.  The key sequence is given by the parameter @key@ and thekeymap is specified by the second parameter @kmap@.Related Functions: @unsetkey@, @definekey@, @what_keymap@
Fungetkey :ungetkey:V:1Prototype: Void ungetkey (Integer ch);This function may be used to push a character @ch@ represented by itsASCII value, onto the input stream.  This means that the next keyboardto be read will be @ch@.Related Functions: @buffer_keystring@, @getkey@, @get_key_function@
Funsetkey :unset_key:V:1Prototype: Void unsetkey(String key);This function is used to remove the definition of the key sequence@key@ from the "global" keymap.  This is sometimes necessary to bindnew key sequences which conflict with other ones.  For example, the"global" keymap binds the keys @"^[[A"@, @"^[[B"@, @"^[[C"@, and@"^[[D"@ to the character movement functions.  Using@unsetkey("^[[A")@ will remove the binding of @"^[[A"@ from the globalkeymap but the other three will remain.  However, @unsetkey("^[[")@will remove the definition of all the above keys.  This might benecessary to bind, say, @"^[["@ to some function.Related Functions: @setkey@, @undefinekey@
Fup :prevline:I:1Prototype: Integer up(Integer n);This function moves the current point up @n@ lines and returns thenumber of lines actually moved.  The number returned will be less than@n@ only if the top of the buffer is reached.Related Functions: @down@, @left@, @right@ 
Fupdate :update_cmd:V:1Prototype: Void update (Integer f);This function may be called to update the display.  If the parameter@f@ is non-zero, the display will be updated even if there is inputpending.  If @f@ is zero, the display may only be partially updated ifinput is pending.Related Functions: @input_pending@, @flush@
Fuse_abbrev_table :use_abbrev_table:V:1Prototype: Void use_abbrev_table (String table);Use the abbreviation table named @table@ as the abbreviation table for the current buffer.  By default, the "Global" table is used.
Fuse_keymap :use_keymap:V:1Prototype: Void use_keymap (String km);This function may be used to dictate which keymap will be used by the current buffer.  @km@ is a string value that corresponds to the nameof a keymap.Related Functions: @make_keymap@, @keymap_p@, @what_keymap@
Fuse_syntax_table :use_syntax_table:V:1Prototype: Void use_syntax_table (String n);This function associates the current buffer with the syntax tablespecified by the name @n@.  Until another syntax table is associatedwith the buffer, the syntax table named @n@ will be used in alloperations that require a syntax.  This includes parenthesis matching,indentation, etc.Related Functions: @create_syntax_table@, @define_syntax@
Fuser_mark_buffer :user_mark_buffer:S:0Prototype: String user_mark_buffer (User_Mark m);This function returns the name of the buffer associated with the User Mark specified by @m@.Related Functions: @goto_user_mark@, @create_user_mark@, @move_user_mark@
Fvms_get_help :vms_get_help:V:2Prototype: Void vms_get_help (String hlp_file, String hlp_topic);This function may be used on VMS systems to interact with the VMS helpsystem from within the editor.  @hlp_file@ is the name of the help fileto use and @hlp_topic@ is the topic for which help is desired.
Fvms_send_mail :vms_send_mail:I:2Prototype: Integer vms_send_mail (String recip_lis, String subj);This VMS specific function provides an interface to the VMS callablemail facility.  The first argument, @recip_lis@, is a comma separated listof email addresses and @subj@ is a string that represents the subject ofthe email.  The current buffer will be emailed.  It returns @1@ upon success and @0@ upon failure.
Fw132 :screen_w132:V:0Prototype: Void w132 ();This function may be used to set the number of columns on a vtxxxcompatable terminal to 132.Related Functions: @w80@, @set_term_vtxxx@
Fw80 :screen_w80:V:0Prototype: Void w80 ();This function may be used to set the number of columns on a vtxxxcompatable terminal to 80.Related Functions: @w132@, @set_term_vtxxx@
Fwhat_abbrev_table :what_abbrev_table:V:0Prototype: (String, String) what_abbrev_table ();This functions returns both the name of the abbreviation table and the definition of the word for the table currently associated with the current buffer.  If none is defined it returns two empty strings.
Fwhat_char :what_char:I:0Prototype: Integer what_char ();The @what_char@ function returns the value of the character at thecurrent position as an integer in the range 0 to 256.  This simpleexample,@ while (not (eolp ()))@   {@      if (what_char () == '_') @        {@           del (); insert ("\\_");@        }@   }has the effect of replacing all underscore characters on the currentline with a backslash-underscore combination.Related Functions: @looking_at@
Fwhat_column :calculate_column:I:0Prototype: Integer what_column ();The @what_column@ function returns the current column number expandingtabs, control characters, etc...  The beginning of the line is atcolumn number one. Related Functions: @whatline@, @whatpos@, @goto_column@, @bolp@, @eolp@
Fwhat_keymap :what_keymap:S:0Prototype: String what_keymap ();This function returns the name of the keymap associated with thecurrent buffer.Related Functions: @create_keymap@, @keymap_p@
Fwhat_mode :what_mode:I:0Prototype: (String name, Integer flags) = Integer what_mode ();This function may be used to obtain the mode flags and mode name of the current buffer.  See @set_mode@ for more details.Related Functions: @set_mode@, @getbuf_info@, @setbuf_info@
Fwhatbuf :what_buffer:S:0Prototype: String what_buffer();@whatbuf@ returns the name of the current buffer.  It is usually used in functions when one wants to work with more than one buffer.  The function @setbuf_info@ may be used to change the name of the buffer.Related Functions: @getbuf_info@, @bufferp@ 
Fwhich_key :which_key:I:1Prototype: Integer which_key (String f);The @which_key@ function returns the the number of keys that arebound to the function @f@ in the current keymap.  It also returnsthat number of key sequences with control characters expanded as thetwo character sequence @^@ and the the whose ascii value is thecontrol character + 64. For example, @ define insert_key_bindings (f)@ {@    variable n, key;@    n = which_key (f);@    loop (n)@      {@          str = ();@          insert (str);@          insert ("\n");@      }@ }inserts into the buffer all the key sequences that are bound to thefunction @f@.Related Functions: @get_key_function@, @setkey@, @what_keymap@
Fwhitespace :insert_whitespace:V:1Prototype: whitespace (Integer n);The @whitespace@ function inserts white space of length @n@ into thecurrent buffer using a combination of spaces and tabs.  The actualcombination of spaces and tabs used depends upon the buffer localvariable @TAB@.  In particular, if @TAB@ is zero, no tab characterswill be used for the expansion.Related Functions: @insert@, @trim@, @goto_column@Related Variables: @TAB@, @TAB_DEFAULT@
Fwiden :widen:V:0Prototype: Void widen ();This function undoes the effect of @narrow@.  Consult the documentationfor @narrow@ for more information.Related Functions: @widen_region@, @narrow@
Fwiden_region :widen_region:V:0Prototype: Void widen_region ();This function undoes the effect of @narrow_to_region@.  Consult the documentation for @narrow_to_region@ for more information.Related Functions: @widen@, @narrow_to_region@
Fwindow_info :window_size_intrinsic:I:1Prototype: Integer window_info(Integer item);The @window_info@ function returns information concerning the currentwindow.  The actual information that is returned depends on the @item@parameter.  Acceptable values of @item@ and the description of theinformation returned is given in the following table:@ 'r'  : Number of rows@ 'w'  : Width of window @ 'c'  : Starting column (from 1)@ 't'  : Screen line of top line of window (from 1)Related Functions: @otherwindow@, @nwindows@Related Variables: @SCREEN_HEIGHT@, @SCREEN_WIDTH@
Fwindow_line :window_line:I:0Prototype: Integer window_line ();This function returns the number of rows from the top of the currentwindow for the current line.  If the current line is the very first linein the window, a value of @1@ will be returned, i.e., it is the firstline of the window.Related Functions: @window_info@, @nwindows@Related Variables: @TOP_WINDOW_ROW@
Fwrite_buffer :write_buffer_cmd:I:1Prototype: Integer write_buffer (String filename);This function may be used to write the current buffer out to a file specified by @filename@.  The buffer will then become associated with that file.  The number of lines written to the file is returned.  Anerror condition will be signaled upon error.Related Functions: @write_region_to_file@, @setbuf_info@
Fwrite_region_to_file :write_region_cmd:I:1Prototype: Integer write_region_to_file (String filename);This function may be used to write a region of the current buffer tothe file specified by @filename@.  It returns the number of lineswritten to the file or signals an error upon failure.Related Functions: @write_buffer@, @append_region_to_file@, @push_mark@
Fxform_region :transform_region:V:1Prototype: Void xform_region (Integer how);This function changes the characters in the region in a way specified by the parameter @how@.  This is an integer that can be any of of thefollowing:@ 'u'       Upcase_region@ 'd'       Downcase_region@ 'c'       Capitalize regionAnything else will change case of region.Related Functions: @translate_region@, @define_case@
VADD_NEWLINE Prototype: Integer ADD_NEWLINE = 1;If this variable is non-zero, a newline character will be silentlyadded to the end of a buffer when the buffer is written out to a fileif the buffer does not end with a newline character.  If it is zero,one will not be added.
VALT_CHAR If this variable is non-zero, characters pressed in combinationthe ALT key will generate a two character sequence: the first character is the value of the ALT_CHAR itself followed by the character pressed. For example, if ALT-X is pressed and ALT_CHAR has a value of 27, the characters ESCAPE X will be generated.
VBATCH non-zero if JED is running in batch mode.  This variable is read only.
VBLINK Prototype: Integer BLINK = 1;The @BLINK@ variable determines whether or not matching parenthesisare blinked.  If its value is one, they are blinked; otherwise, theyare not.Related Variable: @C_INDENT@, @C_BRA_NEWLINE@
VCASE_SEARCH if 1, searches are case sensitive.  If 0, they are not
VCHEAP_VIDEO non zero if snow appears on screen when updating it.
VCURRENT_KBD_COMMAND
VC_BRACE Prototype: Integer C_BRACE;This is a C-mode variable that specifies how much an opening braceshould be indented compared its surrounding block. Related Variables: @C_INDENT@, @C_BRA_NEWLINE@
VC_BRA_NEWLINE Prototype: Integer C_BRA_NEWLINE = 1;This variable is used by the indentation routines for the C langauge.If it is non-zero, the @'{'@ character will be placed on a line byitself when one presses the @'{'@ character.  For K&R indentation style, set this variable to zero.Related Variables: @C_INDENT@, @C_BRACE@
VC_COMMENT_HINT
VC_INDENT Prototype: Integer C_INDENT = 3;This value determines the number of columns the current line is indentedpast the previous line containing an opening @'{'@ character.Related Variables: @C_BRACE@, @C_BRA_NEWLINE@.
VDEC_8BIT_HACK Prototype: Integer DEC_8BIT_HACK = 1;If set to a non-zero value, a input character between 128 and 160will be converted into a two character sequence: @ESC@ and thecharacter itself stripped of the high bit + 64.  The motivationbehind this variable is to enable the editor to work with VTxxxterminals that are in eight bit mode.Related Variables: @META_CHAR@
VDEFINING_MACRO
VDISPLAY_EIGHT_BIT Prototype: Integer DISPLAY_EIGHT_BIT;This variable determines how characters with the high bit set are tobe displayed.  Specifically, any character whose value is greater thanor equal to the value of @DISPLAY_EIGHT_BIT@ is output to the terminalas is.  Characters with the high bit set but less than this value aresent to the terminal in a multiple character representation. For Unixand VMS systems the value should be set to 160.  This is because manyterminals use the characters with values between 128 and 160 as eightbit control characters.  For other systems, it can be set to zero.Related Variables: @META_CHAR@
VDISPLAY_TIME Prototype: Integer DISPLAY_TIME = 1;If this variable is non-zero, the current time will be displayed on thestatus line if the format for the status line permits it.  If it is zero,the time will not be displayed even if the @%t@ format string is partof the status line format.Related Functions: @set_status_line@
VDOLLAR_CHARACTER Prototype: Integer DOLLAR_CHARACTER = '$';Character that is to be used to indicate that text extends to the leftor right of the window.  This character is traditionally a dollar sign.The @"dollar"@ object may be used to assign it a color.Related Functions: @set_color@
VEXECUTING_MACRO
VHIGHLIGHT Set this variable non-zero to highlight marked regions
VHORIZONTAL_PAN If this variable is non-zero, the window pans with the Point.  Actuallyif the value is less than zero, the entire window pans.  If the value is positive, only the current line will pan.  The absolute value of the number determines the panning increment.
VIGNORE_BEEP Prototype: Integer IGNORE_BEEP = 3;This variable determines how the terminal is to be ``beeped''.  It maybe any one of the following values:@ 0    Do not beep the terminal in any way.@ 1    Produce an audible beep only.@ 2    Produce an visible beep only by flashing the display.@ 3    Produce both audible and visible bells.Note: Not all terminals support visible bells.
VIGNORE_USER_ABORT If set to a non-zero value, the Abort Character will not trigger aS-Lang error.  When JED starts up, this value is set to 1 so that the user cannot abort the loading of site.sl.  Later, it is set to 0
VJED_CSI Control Sequence Introducer. --- reserved for future use
VJED_LIBRARY Read only string variable indicating the directory where JED libraryfiles are kept.  This variable may be set using an environment variable
VJED_ROOT Read only string variable indicating JED's root directory.This variable may be set using an environment variable
VKILL_ARRAY_SIZE Prototype: Integer KILL_ARRAY_SIZE;This variable contains the value of the size of of the internal killarray of character strings.  Any number from zero upto but notincluding the value of @KILL_ARRAY_SIZE may be used as an argument inthe functions that manipulate this array.Note: This variable is a read-only varaible and it is not available on16 bit systems. Related Functions: @insert_from_kill_array@, @copy_region_to_kill_array@, @append_region_to_kill_array@
VKILL_LINE_FEATURE If non-zero, kill_line will kill through end of line character ifPoint is at beginning of the line.  Otherwise, it will kill only untilthe end of the line.  By default, this feature is turned on.
VLASTKEY Prototype: String LASTKEY;The LASTKEY variable contains the most recently entered keyboardsequence.Note: Key sequences using the null character will not be recorded accurately.Related Variable: @LAST_CHAR@
VLAST_CHAR Last character entered from the keyboard
VLAST_KBD_COMMAND
VLINENUMBERS If set to 0, line numbers are not displayed on the screen. If set to 1, line numbers will be displayed.  If set to anything else, the %c column format specifier will be parsed allowing the column numberto be displayed on the screen.
VMAIN_ARGC Prototype: Integer MAIN_ARGC;@MAIN_ARGC@ is a global read-only variable that indicates the numberof command line parameters.Related Functions: @command_line_argv@
VMAX_HITS maximum number of @hits@ on a buffer before an autosave is performed.
VMESSAGE_BUFFER Read only string indicating current message to be displayed oris displayed in the message buffer
VMETA_CHAR Prototype: Integer META_CHAR;This variable determines how input characters with the high bit setare to be treated.  If @META_CHAR@ is less than zero, the characteris passed through un-processed.  However, if @META_CHAR@ is greaterthan or equal to zero, an input character with the high bit set ismapped to a two character sequence.  The first character of thesequence is the character whose ascii value is @META_CHAR@ and thesecond character is the input with its high bit stripped off.
VMINIBUFFER_ACTIVE A read-only variable that is non-zero when the MiniBuffer is activelybeing used.
VMOUSE_BUTTON
VMOUSE_DELTA_TIME
VMOUSE_EVENT_TYPE Value is 1 if the event is a keypress and 0 if a release.
VMOUSE_STATE The state of the shift, control, and button keys BEFORE the event.This is an integer with the following meaning for the bits:   0: left button pressed   1: middle button pressed   2: right button pressed   3: shift key pressed   4: control key pressed
VMOUSE_X
VMOUSE_Y
VNUMLOCK_IS_GOLD
VOUTPUT_RATE Terminal baud rate
VPOINT
VSCREEN_HEIGHT number of rows on the screen.
VSCREEN_WIDTH number of columns on the screen
VSELECTIVE_DISPLAY If negative, ^M (RET) makes rest of line invisible.  Hidden text is indicated by @...@.
VStatus_Line_String A read-only String variable containing the format of the status lineapplied to newly created buffers.Related Functions: set_status_line
VTAB Tab setting for the current buffer.
VTAB_DEFAULT Prototype: Integer TAB_DEFAULT = 8;@TAB_DEFAULT@ is the default tab setting given to all newly createdbuffers.  The variable @TAB@ may be used to change the currentbuffer's tab setting.  A value of zero means that tab characters arenot expanded and that tabs are never used to produce whitespace.Related Variables: @TAB@, @DISPLAY_EIGHT_BIT@
VTERM_BLINK_MODE Prototype: Integer TERM_BLINK_MODE = 1;If this variable is non-zero, jed will interpret high-intensity background colors as blinking characters.  On some terminals, the blinkbit will be mapped to an actual high intensity background color.Set this variable to zero if you want to disable blinking characters.Note: This variable is used only on VMS and DOS systems.
VTERM_CANNOT_INSERT Set this variable to 1 in your jed startup file (jed.rc) if your terminal is unable to insert (not vt102 compatable)
VTERM_CANNOT_SCROLL Set this variable to 1 in your jed startup file (jed.rc) if your terminal is unable to scroll.
VTOP_WINDOW_ROW This read-only variable gives the value of the starting row of the topwindow.  
VUSE_ANSI_COLORS
VWANT_EOB Prototype: Integer WANT_EOB = 0;If this variable is non-zero, an ``end of buffer'' indicator @"[EOB]"@will be displayed at the end of the buffer.  Such an indicator is used for various editor emulations such as the VAX/VMS EDT editor.
VWANT_SYNTAX_HIGHLIGHT
VWRAP Prototype: Integer WRAP = 78;The @WRAP@ variable determines the column number where text iswrapped at.  When entering text, if the current point goes beyondthis column, the text will automatically wrap to the next line.This will only happen for those buffers for which the wrap flag is set.Related Functions: @getbuf_info@, @setbuf_info@, @set_mode@Related Variables: @WRAP_INDENTS@
VWRAP_INDENTS Prototype: Integer WRAP_INDENTS = 1;If this variable is non-zero, after a line is wrapped, the new linewill start at the same indentation as the current one.  On the otherhand, if the value of @WRAP_INDENTS@ is zero, the new line will beginin the first column.Related Variables:
V_jed_version Prototype: Integer _jed_version;
Vwhat_line Prototype: Integer what_line ();This function returns the value of the current line number.  Lines arenumbered from one. Note: The actual number is measured from the top ofthe buffer which is itself is affected by whether the buffer isnarrowed or not.  For example, @ define one ()@ {@   push_mark (); narrow@   push_mark (); narrow ();@   return what_line ();@ }always returns 1.Related Functions: @goto_line@, @what_column@, @whatbuf@
html.sl
Fhtml_bskip_tag() skip backward past html tag
Fhtml_mark_next_tag() mark the next html tag forward
Fhtml_mark_prev_tag() mark the previous html tag
Fhtml_mode Prototype: Void html_mode (); @html_mode@ is a mode designed for editing HTML files.   If a region is defined (i.e., if a mark is set), many HTML tags will insert around the region, e.g. '<B>' and '</B>'.  if the variable 'HTMLModeWraps' is set to 1, this mode will wrap (like @text_mode@ does); otherwise, this mode won't wrap (like @no_mode@).  Keybindings begin with ^C and are grouped according to function:     ^CA...  Anchors (<A>...</A>)     ^CD...  Definition lists (<DL>...</DL>)     ^CF...  Forms (<form>...</form>)     ^CH...  Headings, document type, etc.     ^CI...  Images     ^CL...  Lists (<UL>...</UL>)     ^CP...  Paragraph styles, etc. (<P>, <BR>, <HR>, <ADDRESS>, etc.)     ^CS...  Character styles (<EM>, <STRONG>, <B>, <I>, etc.) Additionally, some special movement commands and miscellaneous characters are defined:     ^C^B    skip to beginning of prior HTML tag     ^C^F    skip to end of next HTML tag     ^C^N    mark next HTML tag from '<' to '>'     ^C^P    mark prior HTML tag from '<' to '>'     ^C&     insert HTML text for '&'     ^C>     insert HTML text for '>'     ^C<     insert HMTL text for '<'     ^CC     insert HTML comment (around region, if marked)  For a complete list of keybindings, use @describe_bindings@.  This function calls @html_mode_hook@ if it exists.
Fhtml_skip_tag() skip forward past html tag
untab.sl
Funtab Prototype: Void untab (); This function may be used either to convert tabs to spaces or, if called with a prefix argument, it will perform the opposite conversion from  spaces to tabs.  This function operates on a region.
cmisc.sl
slmode.sl
cmode.sl
Fc_mode () Protoytype: Void cmode (); This is a mode that is dedicated to facilitate the editing of C language files.   Functions that affect this mode include: @ function:             default binding: @ c_insert_bra               { @ c_insert_ket               } @ newline_and_indent         RETURN @ indent_line                TAB @ goto_match                 Ctrl-\  @ c_make_comment             ESC ; @ c_format_paragraph         ESC q @ c_top_of_function          ESC Ctrl-A @ c_end_of_function          ESC Ctrl-E @ c_mark_function            ESC Ctrl-H Variables affecting indentation include: @ C_INDENT @ C_BRACE @ C_BRA_NEWLINE @ C_CONTINUED_OFFSET @ C_Comment_Column  (used by c_make_comment)
tex.sl
Ftex_mode () Mode useful for editing TeX and LaTeX modes.   Useful bindings:  '"'  :  tex_insert_quote  '\'' :  tex_insert_quote  '$'  :  tex_blink_dollar  '.'  :  tex_ldots.  Inserts a '.' except if preceeded by two dots.  In            this case, the dots are converted to \ldots.  When tex mode is loaded, 'tex_mode_hook' is called.  This hook will allow  users to customize the mode.  In particular, certain functions here have  no keybindings, e.g., 'latex_do_environment'.  So, in your jed.rc file,  add something like:    define tex_mode_hook () {       local_setkey ("latex_do_environment", "^C^E");    }  which binds the function to Ctrl-C Ctrl-E.
misc.sl
Fappend_string_to_file Prototype: Integer append_string_to_file (String str, String file); The string 'str' is appended to file 'file'.  This function returns -1 upon failure or the number of lines written upon success. See append_region_to_file for more information.
Fmake_tmp_buffer_name Prototype: String make_tmp_buffer_name (String base); Generates a unique buffer name using the string 'base' for the beginning of the name.  The buffer name is returned.  The buffer is not created.
Fwrite_string_to_file Prototype: Integer write_string_to_file (String str, String file); The string 'str' is written to file 'file'.  This function returns -1 upon failure or the number of lines written upon success. This function does not modify a buffer visiting the file.
fortran.sl
Ffortran_mode () Mode designed for the purpose of editing FORTRAN files. After the mode is loaded, the hook 'fortran_hook' is called. Useful functions include  Function:                    Default Binding:   fortran_continue_newline          ESC RETURN     indents current line, and creates a continuation line on next line.   fortran_comment                   ESC ;     comments out current line   fortran_uncomment                 ESC :     uncomments current line   fortran_electric_label            0-9     Generates a label for current line or simply inserts a digit.   fortran_next_statement            ^C^N     moves to next fortran statementm skips comment lines   fortran_previous_statement        ^C^P     moves to previous fortran statement, skips comment lines   fortran_ruler                     ^C^R     inserts a ruler above the current line. Press any key to continue   fortran_beg_of_subprogram         ESC ^A     moves cursor to beginning of current subroutine/function   fortran_end_of_subprogram         ESC ^E     moves cursor to end of current subroutine/function   fortran_mark_subprogram           ESC ^H     mark the current subroutine/function Variables include:   Fortran_Continue_Char   --- character used as a continuation character.     By default, its value is "&"   Fortran_Comment_String  --- string used by 'fortran_comment' to     comment out a line.  The default string is "C ";   Fortran_Indent_Amount   --- number of spaces to indent statements in                               a block.  The default is 2.
most.sl
Fmost_mode () Emulates MOST fileviewer The following keys are defined: SPACE            next screen DELETE           previous screen /                search_forward ?                search_backward n                find next occurrence q                quit most mode  (usually kills buffer if not modified) e                edit buffer h                help summary t                Top of Buffer b                End of Buffer
dired.sl
Fdired ()Mode designed for maintaining and editing a directory.To invoke Dired, do @M-x dired@ or @C-x d@ (emacs)Dired will prompt for a directory name and get a listing of files in therequested directory.The primary use of Dired is to "flag" files for deletion and then deletethe previously flagged files. @d@	Flag this file for deletion. @u@	Remove deletion flag on this line. DEL	Move point to previous line and remove deletion flag. @~@	Flag all backup files for deletion. @x@	eXpunge all flagged files.  Dired will show a list of the	files tagged for deletion and ask for confirmation before actually	deleting the files. @r@	Rename file on the current line; prompts for a newname @m@	Move tagged files to a new dir; prompts for dir name @g@	Update the entire contents of the Dired buffer @f@	Visit the file described on the current line, like typing	@M-x find_file@ and supplying that file name.  If current line is a	directory, runs dired on the directory and the old buffer is killed. @v@	View the file described on the current line in MOST mode. @M-x dired_search@	use fsearch to perform a search through the files listed in the	dired buffer from the current point forward.  @M-x dired_search@	from the visited file will revert to the dired buffer and continue	the search from the next file in the list.all the usual motion commands plus some extras: @C-n@ @n@ SPC	move point to the next line (at the beginning of the file name) @C-p@ @p@	move point to the previous line (at the beginning of the file name) @M-x dired_kill_line@	@^K@ (emacs)	removes a line from the dired buffer
util.sl
help.sl
Fexpand_keystring Prototype: String expand_keystring (String key) This function takes a key string that is suitable for use in a 'setkey' definition and expands it to a human readable form.   For example, it expands ^X to the form "Ctrl-X", ^[ to "ESC",  ^[[A to "UP", etc... See also: setkey
buf.sl
site.sl
Fadd_mode_for_extension Prototype: Void add_mode_for_extension (String mode, String ext); This function modifies Mode_List in such a way that when a file with  filename extension `ext' is read in, function strcat (mode, "_mode") will be called to set the mode.   That is, the first parameter 'mode'  is the name of a mode without the '_mode' added to the end of it.
Fbol_skip_white Prototype: Void bol_skip_white (); This function combines the two functions @bol@ and @skip_white@ into a single operation.  That is, it moves the point to the beginning of the line and then skips over whitespace to the first non-whitespace character. See also: @bol@, @skip_white@, @skip_chars@
Fbskip_white Prototype: Void bskip_white (); This function skips backward over whitespace. Note: it does not cross lines. See also: @skip_white@, @bskip_chars@
Fbuffer_filename Prototype: String buffer_filename (); Returns the name of the file associated with the current buffer.  If  there is none associated with it, the empty string is returned.
Fbuffer_format_in_columns() Prototype Void buffer_format_in_columns(); takes a buffer consisting of a sigle column of items and converts the buffer to a multi-column format.
Fbuffer_modified ()  returns non-zero if the buffer modified flag is set.  It returns zero  if the buffer modified flag is not been set.  This works on the   current buffer.  See also 'set_buffer_modified_flag'.
Fbufsubstr_delete Prototype: String bufsubstr_delete () This functions returns the contents of a region defined my the mark and the current point.  The region will be deleted. See also: @bufsubstr@
Fdel_eol Prototype: Void del_eol (); This function deletes from the current position to the end of the line. See also: @del@, @delete_line@, @del_through_eol@
Fdel_through_eol Prototype: del_through_eol (); This function deletes all text from the current point through the end of the line. See also: @del@, @del_eol@, @del_region@
Fdeln Prototype: Void deln (Integer n); delete the next 'n' characters.
Fdircat(dir, file) A function to contat a directory with a filename.  Basically checks for the final slash on the dir and adds on if necessary
Fdown_1 Prototype: Void down_1 (); Move down exactly one lines.  If sucessful, 1 is returned otherwise zero is returned. See also: @go_up@, @down@, @go_down_1@
Fexpand_jedlib_file(f) Search for FILE in directories specified by JED_LIBRARY returning expanded pathname if found or the Null string otherwise.
Ffile_type(file) returns type of file.  e.g., /usr/a.b/file.c --> c
Ffind_jedlib_file(file) find a file from JED_LIBRARY, returns number of lines read or 0 if not  found.
Fget_y_or_n Prototype: Integer get_y_or_n (prompt_str); This function may be used to get a `y' or `n' response from the user using @prompt_str@ to construct the prompt.  It returns @1@ if the user responds with @y@, or @0@ if the response is @n@. See also: @get_yes_no@, @read_mini@, @message@, @flush@, @getkey@
Fgo_down Prototype: Void go_down (Integer n); Move down 'n' lines. See also: go_up, down
Fgo_down_1 Prototype: Void go_down_1 (); Move down one lines. See also: go_up, down
Fgo_left Prototype: Void go_left (Integer n); Move backward 'n' characters. See also: left, go_right
Fgo_left_1 Prototype: Void go_left_1 (); Move forward 1 characters. See also: left, go_left
Fgo_right Prototype: Void go_right (Integer n); Move forward 'n' characters. See also: right, go_left
Fgo_right_1 Prototype: Void go_right_1 (); Move forward 1 characters. See also: right, go_left
Fgo_up Prototype: Void go_up (Integer n); Move up 'n' lines. See also: up, go_down
Fgo_up_1 Prototype: Void go_up_1 (); Move up exactly 1 line if possible. See also: up, go_down
Fhelp Prototype: Void help (); Pop up a window containing a help file.  The help file that is read in is given by the variable Help_File.
Finsert_char () insert a character into a buffer. This function should be called instead of 'insert' when it is desired to insert a 1 character string.  Unlike 'insert', insert_char takes an integer argument.  For example,     'x' insert_char and     "x" insert are functionally equivalent but insert_char is more memory efficient.
Finsert_single_space () insert a single space into the buffer.
Fjed_startup_hook() Function that gets executed right before JED enters its main editing loop.  This is for last minute modifications of data structures that did not exist when startup files were loaded (e.g., minibuffer keymap)
Fline_as_string Prototype: String line_as_string () This function returns the current line as a string.  This does not include the newline character at the end of the line.  The editing point is left at the end of the line.  That is, this function does not preserve the point. See also: @bufsubstr@
Flocal_setkey Prototype: Void local_setkey (String fun, String key); This function is like 'setkey' but unlike 'setkey' which operates on the global keymap, 'local_setkey' operates on the current keymap which may or may not be the global one. See also: setkey, definekey, local_unsetkey
Flocal_unsetkey Prototype: Void local_unsetkey (String key); This function is like 'unsetkey' but unlike 'unsetkey' which unsets a key from the global keymap, 'local_unsetkey' operates on the current keymap which may or may not be the global one. See also: unsetkey, undefinekey, local_setkey
Flooking_at_char Prototype: Integer looking_at_char (Integer ch); This function returns non-zero if the character at the current editing point is 'ch' otherwise it retuns zero.  This function performs a case  sensitive comparison.
Fmake_tmp_file Prototype: String make_tmp_file (String base); This function returns a unique file name that begins with @base@.
Fmode_hook (ext) This is a hook called by find_file routines to set the mode for the buffer. This function takes one parameter, the filename extension and returns nothing.
Fmodeline_hook() check first line for the simplest Emacs mode statement -*- modename -*-
Fnewline Prototype: Void newline (Void); insert a newline in the buffer at point. See also: insert, insert_char
Fno_mode()  Generic mode not designed for anything in particular.  See:  text_mode, c_mode
Fparse_filename Prototype: (dir, file) = define parse_filename(fn) breaks a filespec into dir filename---  this routine returns dir and filename such that a simple strcat will suffice to put them together again.  For example, on unix, /a/b/c returns /a/b/ and c
Fpop_mark_0 Prototype: Void pop_mark_0 (); Since @pop_mark@ is used so often with an argument of @0@, this function  is simply equivalent to @pop_mark(0)@. See also: @pop_mark@, @pop_mark_1@
Fpop_mark_1 Prototype: Void pop_mark_1 (); Since @pop_mark@ is used so often with an argument of @1@, this function  is simply equivalent to @pop_mark(1)@. See also: @pop_mark@, @pop_mark_0@
Fpop_n Prototype: Void pop_n (Integer n);
Fread_file_from_mini Prototype: String read_file_from_mini (String p); This function prompts the user for a file name using @p@ as a prompt. It reads a filename with completion from the mini-buffer and returns it. Related Functions: @read_with_completion@, @read_mini@
Fread_string_with_completion Prototype: String read_string_with_completion (prompt, dflt, list) This function takes 3 String parameters and returns a String.  The first parameter is used as the prompt, the second parameter is the  default value to be returned and the third parameter is a list to be used for completions.  This list is simply a comma separated list of strings.
Frunhooks Prototype: Void runhooks (String fun) if S-Lang function 'fun' is defined, execute it.  It does nothing if 'fun' does not exist.
Fset_buffer_modified_flag(modif) sets buf modified flag. If argument is 1, mark buffer as modified.  If argument is 0, mark buffer as unchanged.
Fset_buffer_no_autosave Prototype: Void set_buffer_no_autosave ();
Fset_buffer_no_backup Prototype: Void set_buffer_no_backup ();
Fset_buffer_undo(modif) set undo mode for buffer.  If argument is 1, undo is on.  0 turns it off
Fset_overwrite(n) Takes 1 parameter: 0 turn off overwrite                    1 turn on overwrite
Fset_readonly(n) Takes 1 parameter: 0 turn off readonly                    1 turn on readonly
Fstrncat Prototype: Void strncat (String a, String b, ..., Integer n); Returns concatenated string "abc..."
Ftext_mode()  Mode for indenting and wrapping text  Functions that affect this mode include:    Function:                     Default Binding:      indent_line                 TAB      newline_and_indent          RETURN      format_paragraph                ESC Q      narrow_paragraph                ESC N  Variables include:      WRAP_INDENTS, WRAP      TAB, TAB_DEFAULT
Fup_1 Prototype: Void up_1 (); Move up 1 line.  If successful, returns 1 otherwise it returns 0. See also: @up@, @go_down@, @go_up@, @go_up_1@
Fverror Prototype: Void verror (String fmt, ..., Integer n) This function is like @error@ except that it takes a variable number of arguments.  This function is equivalent to @error (Sprintf (fmt,...,n))@ See also: @vmessage@, @error@, @message@, @Sprintf@
Fvinsert Prototype: Void vinsert (String, fmt,... Integer n); This function is like @insert@ except that it takes a variable number of arguments and a format string.  Formally, it is equivalent to @insert (Sprintf (fmt,...n))@. See also: @insert@, @Sprintf@, @insert_char@
Fvmessage Prototype: Void vmessage (String fmt, ..., Integer n) This function is like @message@ except that it takes a variable number of arguments.  This function is equivalent to @error (Sprintf (fmt,...,n))@ See also: @message@, @error@, @message@, @Sprintf@, @flush@, @verror@
Fwhatpos () display row and column information in minibuffer
VC_CONTINUED_OFFSET  Prototype: Integer C_CONTINUED_OFFSET = 2; This variable controls the indentation of statements that are continued onto the next line as in the following example: @ if (something) @   continued_statement (); @ else @   another_continued_statement (); Related Variables: @C_BRA_NEWLINE@, @C_BRACE@, @C_INDENT@, @C_Colon_Offset@
VC_Colon_Offset  Integer C_Colon_Offset = 1; This variable may be changed to adjust the indentation of @case@ statements in C-Mode. See also: @c_mode@ Related Variables: @C_BRA_NEWLINE@, @C_BRACE@, @C_INDENT@, @C_Colon_Offset@
VC_Comment_Column  Column to begin a C comment--- used by c_make_comment
VC_Preprocess_Indent  Prototype: Integer C_Preprocess_Indent = 1; This variable controls the indentation of preprocessor directives in C-mode.   See also: @c_mode@ Related Variables: @C_BRA_NEWLINE@, @C_BRACE@, @C_INDENT@, @C_Colon_Offset@
VHelp_File  name of the file to load when the help function is called.
VInfo_Directory  A Comma separated list of info directories to search.
VStartup_With_File  If non-zero, startup by asking user for a filename if one was not specified on the command line.
Vhelp_for_help_string  string to display at bottom of screen upon JED startup and when user executes the help function.
Vmode_hook_pointer  called from mode_hook.  Returns 0 if it is desired that control return to mode_hook or 1 if mode hook should exit after calling mode_hook_ptr
