%   User Initialization file for the JED editor  -*- slang -*-
%   If a user does not have a startup file in the user's home directory,
%   JED will automatically load this from JED_LIBRARY.   Thus is is easier
%   for a system manager to make defaults for all users.

%   Do not edit this file directly.  Instead, copy it to your home 
%   directory (sys$login:jed.rc on VMS or $HOME/.jedrc on Unix) and edit
%   the resulting file.  

%   To uncomment a line, simply remove any leading '%' characters.

%   This file is divided into various sections.  The first section pertains
%   to keybindings (e.g., Wordstar, Emacs, EDT, etc...) and the following
%   sections pertain to user preferences such as default TAB sizes, line 
%   and column numbers on status line, colors, indentation style, etc...

if (BATCH == 0)
{
%----------------------------------------------------------------------
%  Keybindings  (not loaded for batch processes)
%  
%    Default bindings are Emacs-like with EDT emulation on Unix and VMS.
%    For the PC, only Emacs is enabled by default.  If you do not want EDT
%    bindings, simply coment out the appropriate line.   
%
%    For Wordstar like bindings, comment out EDT and Emacs lines and
%    uncomment Wordstar line.
%

   () = evalfile("emacs");           % Emacs-like bindings
#ifndef MSDOS OS2
   () = evalfile("edt");             % EDT--- Unix and VMS
%  setkey ("bol", "^H");               % causes ^H to go to beg of line (EDT) 
#else
%  
%  Note: jed386.exe uses the F1-F12 keys for the edt keypad. 
%        For a discussion of this fact and a diagram of the bindings, see
%        jed/doc/jed_faq.txt.
%   
%      () = evalfile("edt");         % EDT--- IBMPC
#endif

%     evalfile("wordstar"); pop();     % Wordstar
   
   %  !!!!  ^S/^Q flow control problems !!!!
   %  if you experience problems with JED suddenly going into search 
   %  for some reason then you are a victim of emacs brain dead binding of ^S
   %  to search.  TO prevent this from happening, either find out how to 
   %  prevent unwanted ^S/^Q characters or uncomment the next line:
   
   %enable_flow_control (1);
   
   
%----------------------------------------------------------------------
%
%   TAB key setting  -- by default, the tab key is bound to 'indent_line_cmd'.
%                       If you want a real tab inserted, uncomment next line.
%
%   setkey("self_insert_cmd", "^I");

%----------------------------------------------------------------------

%  Initial help screen --- comment out to disable.
%  Note that for the help to be valid, it must occur AFTER bindings are 
%  loaded.
   
% help();               % Pops up a help window-- bound to Control-H Control-H

}  %Batch

%%%%%%%%%%%%%%%% top menu bar %%%%%%%%%%%%%%%

% To disable it, uncomment the next line.
% enable_top_status_line (0);


%----------------------------------------------------------------------
% JED global variables  --- defaults shown
%
#ifdef VMS UNIX
USE_ANSI_COLORS = 1;   % if non-zero, JED will display colors on a color
                        % terminal (Unix and VMS only) See doc/color.txt 
                        % for more discussion and look below for setting
                        % the colors.
#endif
No_Backups = 0;         % If non-zero, backup files will not be created.
Startup_With_File = 1;  % if greater then zero, force JED to prompt for a file
                        %   if none is specified on the command line.  If 
                        %   negative, inhibit startup message.
DISPLAY_TIME    = 1;    % non-zero enables the time to be displayed on 
                        %  status line, zero disables it.  If this value
                        %  is -1, 24 hour time will be used.
HIGHLIGHT	= 1;	% non-zero for region highlighting
WANT_SYNTAX_HIGHLIGHT = 1;
                        % Highlight syntax in C, Fortran, and TeX modes.
                        % See section on colors
                        %  below for choosing how to highlight.  On Unix and 
                        %  VMS systems, USE_ANSI_COLORS must also be non-zero.
HORIZONTAL_PAN	= 20;	% if zero, no automatic panning.  If positive, only
                        % the current line is panned.  If negative, pan window.
#ifdef MSDOS		% For msdos, panning window might be better:
  HORIZONTAL_PAN  = -1;
#endif

#ifdef MSDOS
  LINENUMBERS	= 1;	% A value of zero means do NOT display line number on 
#else                   % status line line.  A value of 1, means to display
  LINENUMBERS	= 2;	% the linenumber. A value greater than 1 will also
#endif			% display column number information.  I recommend a 
			% value of 2 only at high baud rates

BLINK		= 1;	% if non zero, blink matching parenthesis
TAB_DEFAULT	= 8;	% Tab size  (also try edit_tab_stops)
WRAP		= 78;	% wrap column
ADD_NEWLINE	= 1;	% add newline to file when writing if one not present
IGNORE_BEEP	= 3;	% Beep terminal during error messages---
                        %  1 == sound only, 2 = visible bell only, 3 = both
_traceback	= 0;	% Non zero means dump traceback on S-Lang errors
WRAP_INDENTS	= 0;	% Non zero indents next line after wrapping current.
			%  Make this a 1 if you want indented text mode.
%KILL_LINE_FEATURE = 0;
			% If non-zero, kill line will kill through end of the 
			%  line if Point is at the beginning of the line. For
			%  emacs-like behavior, set this to zero.
#ifndef MSDOS OS2
OUTPUT_RATE    = 0;     % Should be set automatically by JED. It is the 
                        % of chars sent to terminal / second.  (0 = Infinity)
			% 
			% If JED pauses during screen updates, then you need
			% to set your baud rate properly or simply set this
			% variable to zero.  JED is not slow, rather it assumes
			% your terminal is, so JED sleeps when writing to the
			% terminal.  By default, this is set to zero.  I 
			% suggest that you comment it out and let JED set it 
			% ASSUMING YOUR BAUD RATE IS CORRECT.  For example, on
                        % Unix, enter 'stty 2400' at the shell prompt to set
			% the baud rate to 2400.  Setting this variable
			% properly will synchronize JED's screen writes to
			% your terminal output rate for increased performance.
#endif

%                           C-mode variables:

C_INDENT	= 3;	% amount of space to indent within block.
C_BRACE		= 2;	% amount of space to indent brace
C_BRA_NEWLINE   = 0;    % If non-zero, insert a newline first before inserting
                        % a '{'.  Many C programmers like this to be 0. A zero
			% value will force '{' to be on same line as insertion.
				
			% Note that in C mode, the keys '{' and '}' are bound
			% to the commands 'brace_bra_cmd' and 'brace_ket_cmd'
			% respectively. '}' '}'

variable C_No_Brace_Offset = 1;   
                        % Set this variable to the amount of EXTRA space to
                        % add for the indentation of lines following 'if', 
                        % 'else', etc....   Try 0 if you set C_BRA_NEWLINE to
                        % 1.

#ifdef UNIX
% JED Email.  JED uses the UC Berkeley mail program for Email.   Most systems
% have this.  Try ^Xm mail and you get an error, uncomment this next line 
% restart JED and try again.  This is definitely the case for Linux.  Again,
% only uncomment out this line if mail fails!

% variable UCB_Mailer; UCB_Mailer = "/bin/mail";
#endif

#ifdef MSDOS XWINDOWS
% Alt-key handling.  Setting this variable controls how the
% Alt key is handled.  By default it is set to 27 (Ascii ESCAPE).  This means
% that any key pressed in conjunction with the alt key produces ESCAPE 
% followed by the key itself.  If ALT-X is pressed, an ESCAPE-X is generated.
% Set it to zero to turn off Alt key processing.  On XWindow systems, setting
% this to zero will cause the high bit to be set on the character.
ALT_CHAR = 27;

#endif

%    Mute (dead or accent) keys 
%    Valid Mute keys are:
%      ^, ~, ', `, \d168 (ISO Diaeresis), \d180 (ISO Acute), and \".
%    This means pressing this key then the key you want to accent yields
%     the accented character.  If you do not know what this is, you do not
%     need them.  By default, they are turned off.

%mute_set_mute_keys (" ^ ~ ' ` \d168 \d180 \"  ");  % choose all or subset

%
% 8 bit stuff  -- see documentation for a complete discussion
%

META_CHAR	= -1;	% All chars with hi bit set will self insert

#ifdef MSDOS OS2
  DISPLAY_EIGHT_BIT = 1;
#else
  DISPLAY_EIGHT_BIT = 160; % Other systems assume ISO Latin 1
#endif

#ifndef XWINDOWS
%  COLORS: 
%
%  Note that to use the colors below with MS-Kermit, do 
%  'set term color 30 47' at the MS-Kermit prompt.
%  (See the file 'colors.txt' for a description of using JED with color 
%  terminals.)

%  Foreground and background:
%    "black", "blue", "green", "cyan", "red", "magenta", "brown", "lightgray"
%  Foreground Only:
%    "gray", "brightblue", "brightgreen", "brightcyan", "brightred", 
%    "brightmagenta", "yellow", "white"
%  This is a limitation of video adapters on PC systems.  For MSDOS, I 
%  reprogram the controller so that high intensity background colors may be
%  displayed.  There does not seem to be a way to do this in MS-Kermit.

   $1 = "black"; $2 = "white";
   set_color("menu", "white", "blue"); 		  % menu bar    
   set_color("normal", $1, $2);	                  % default fg/bg
   set_color("status", "yellow", "blue");	  % status or mode line
   set_color("region", "yellow", "brightmagenta");% for marking regions
   set_color("operator", $1, $2);      		  % +, -, etc..  
   set_color("number", "brightblue", $2);	  % 10, 2.71,... TeX formulas
   set_color("comment", "magenta", "brightcyan"); % /* comment */  
   set_color("string", "brightblue", $2);	  % "string" or 'char'  
   set_color("keyword", "brightred", $2);	  % if, while, unsigned, ...  
   set_color("delimiter", $1, $2);     		  % {}[](),.;...  
   set_color("preprocess", "magenta", $2);	  % #ifdef ....  
   set_color("message", "blue", $2);              % color for messages
   set_color("error", "brightred", $2);           % color for errors
   set_color("dollar", "magenta", $2);            % color dollar sign continuation

#ifdef UNIX VMS
if (USE_ANSI_COLORS) call ("redraw");
#else
   call("redraw");
#endif
#endif  XWindows

#ifdef UNIX
%
%  Terminal type.  By default, on Unix termcap is used.  However, some
%  (if not all) termcaps do not include AL, DL strings for vtxxx terminals.
%
%  True blue vt100 terminals cannot insert and delete lines so the AL and DL
%  termcap entries are not appropriate for them.  However, almost no one
%  uses a true vt100 terminal anymore but they set their TERM variable to
%  vt100 just the same.  If you do not like the way your terminal scrolls,
%  and it is more than a vt100, either set your TERM variable appropriately
%  or add vt100 to the list below. 
%  
  $1 = "vt102 vt200 vt220 vt300 vt320 vt420 xterms";

  if (is_substr($1, getenv("TERM"))) set_term_vtxxx(0);

#endif
  

variable compile_parse_error_function;
%
%  Compiler interface --- uncomment one of the following:
%
% compile_parse_error_function = "gcc";           % GNU compiler
% compile_parse_error_function = "Ultrix_cc";     % cc on Ultrix
% compile_parse_error_function = "bcc";           % Borlands BCC
% compile_parse_error_function = "sun_acc";       % SunOS C++ and ACC
% compile_parse_error_function = "hp_cc";         % HPUX cc


%
%  Hooks:  read jed/doc/hooks.sl for more information
%
define dired_hook ()
{
   local_unsetkey ("^K");
   local_setkey ("dired_kill_line", "^K");
}

%define text_mode_hook ()
%{
%}
%
%define fortran_hook ()
%{
%}
%
%define tex_mode_hook ()
%{
%}
%
%define c_mode_hook ()
%{
%}
%
%define mail_hook ()
%{
%   local_unsetkey ("^C");
%   local_setkey ("send", "^C^C");   %emacs-like
%}
%
%define slang_mode_hook ()
%{
%}
%
%define dired_mode_hook ()
%{
%}

%-----------------------------------------------------------------------
%
%  Insert contents of other window
%
define insert_other_window()
{
  if (nwindows() != 2) return;
  otherwindow();
  whatbuf();
  otherwindow();
  insbuf();
}

