************************************************************************
(6).INI file.
************************************************************************
    - Place xe.ini in your working directory. (::xe.ini)
    - The default value template can be re-output by INI command after started by with "xe -i".     
      Do this if you modified the INI file and it went wrong.
      "#" is the beginning of a comment, use it instead of deleting a line,

   - [FUNCTION] section.
      .Coding sample

       (function name)       (key name)  (cmd verb)    (cmd alias)
        Swap              =   F9        = SWA        =  W

      .Assign function key to a function.
       Duplicated assign is not allowed except following two case.
       First is between Graphic char of English mode and Japanese mode.
       Second is between two functions,effective screen type is not
       duplicated. Such as F10 is shift right on edit screen and
       command copy on dirlist screen.
      .See INI file for detail how to assign.
       Warning. Shift+Esc etc. may be intercepted by OS/2 or Win95.
                Difference may exist between key board type when use
                Alt+char key other than alphabetic like as (-) (:).
      .To reset default assignment you must assign other key or
       assign null by typing (#) after (=).Default is yet effective
       even if you nullify the whole line putting (#) before function name.
       Check duplication with also default assignment when duplication
       error msg is issued.
       You cannot reset fixed assignment indicated by (*).
       Functions require operand is basically for command name only,
       key may not be assigned.
      .Combinations keys Alt+, Ctrl+, Shift+Alt+ and Shift+Ctrl+ are available.
       Shift+Alt+ and Shif+Ctrl+ combination are available only to Fn, Ins, Del and
       destination keys(Up, Down, Left, Right).
      .Linux may define those keys as shortcut.
       In that case, to utilize these keys change Linux Settings->Shortcut.
       When key without Shift(A+Fn,C+Fn) is defined as shortcut,
       it mey be required to set it disable.
      .Changes on =0.2 panel are saved to ::xe!save! at end of process,
       and effective at next startup, INI file is not updated.
       When you are using INI file(::xe.ini exists), assignment by INI file is
       effective(override up to number of defined key on INI file).
       After restart, INI file can be updated by INI cmd.

   - [OTHER] section
       Some of following option can be override by exe parameter.
       (Check exe parameter by "xe /?")
       Format   Keyword = Value.
       or       Keyword =CID column=CID flag=CID type (for CID list)
       In the following,default value is typed as right value.
       But in the INI file written by INI command,default value is
       typed in the parenthesis after the comment sign(#)

       .Command_Stack      =20
         command stack depth for command retrieve.

       .Init_Heap_Block    =5
         initial memory allocation block count by unit of 64KB
         (effective for OS/2 version only,debug purpose only)

       .Confirm_CANCEL     =1
         confirm(1) or not(0) when CANCEL update

       .Confirm_SAVE       =1
         confirm(1) or not(0) when override file by SAVE file command.

       .Confirm_UNDO       =1
         confirm(1) or not(0) when UNDO updated line.

       .Dump_When_Err      =1
         write dump(1) or not(0) for debug when internal error detected.
         (cause abend for OS/2 and WIN version)

#ifdef UNX
#else
       .R-Ctl_ENTER        =0
         assign(1) Right-Ctrl key to function "Execute+Next line" and
         Enter key to function "Next line",or not(0).
         Alternative of "R-Ctrl_ENTER=1" is -Yr command line option.
         Or use "OPT RCTL ON" command or set checkbox "R-Ctrl" to ON
         for gxe/wxe.
#endif
       .R-Ctl_NewLine =0
         assign Right-Ctrl key to function "Next-Line".
         Enter key is yet assigned to function "Execute+Next-line". 
         Note)Typamatic for Right-Ctrl key is not effective for OS/2 and
         gxe version. R-Ctrl is not used for Linux console version.

       .InsertLine_Indent  =1
         Indent cursor positioning under the first non space char of
         preceding line when line inserted(1),or not(0).

       .Change_ID_Type_C   =68="//"= C,H,CPP,HPP
        Change_ID_Type_ASM =68=";;"= ASM
        Change_ID_Type_DOC =71="||"= DOC,ME
        Change_ID_Type_4 --->Change_ID_Type_9
         "CID column position,2 byte prefix and file extension" list.
         Up to 2 byte postfix can be specified like as "//,??".
         "//" is prefix,"??" is postfix.
         The line with position=0 is ignored.

       .Fixed_CID_prefix   ="CID:"
         Fixed CID specification prefix ID(Used on first line of each
         file,max 15 byte prefix).String following this string is used
         as CID.(") is only needed when use space char.
         see (0)-(E)."CID (Change ID)".

       .Initial_Ins_Mode   =0
         Insert(1) or Replace(0) mode at start.

       .Box_Ins_Cursor     =1
         Use box type cursor(half height) for insert(1) or rep(0) mode.

#ifdef UNX
#else
       .EOF(^Z)_Write      =3
         EOF id(0x1a) write option when file save.
         0:write no EOF
         1:write EOF
         2:write when input file has it and write for new file
         3:write when input file has it and write no EOF for new file
         (note)When partial file edit case by end line parameter
               last part of file is copied,so this parm is ignored and
               EOF char is written when input file has it.
#endif

       .ASCII_only         =0
         Accept char 0x01-->0x1f by Ctrl+a etc. which is not assigned
         to any function(0) or reject(1).

       .Beep               =1
         Set 0 if you feel beep sound is noisy.

#ifdef UTF8SUPP

       .UnicodeTbl        =filename
          Specify unicode table filename if you want change the unicode codepoint attribute
          of char width and unprintable.
          See "UTF8 support" about file format.
       .UnicodeTbl_Console=filename
          for console version (xe)
#endif
       .EBCDIC translation definition file name.
          EBCDIC_cfg        ="" #("::xeebc.map")# EBCDIC translation config filename

       .(J)Valid_Ctrl_char = 00000000000000000000000000000000
        (E)Valid_Ctrl_char = 00000000000000000000000000000000
                        x--> 0123456789ABCDEF0123456789ABCDEF
                     ctrl+   2abcdefghijklmnopqrstuvwxyz[\]6-
         (J):for Japanese mode screen, (E):for English mode screen
         first byte is corresponding to 0x00 and last is to 0x1f.
         0 mean accept and 1 mean reject corresponding char.
         If Ctrl key combination assigned to a function,it is not avail
         as input char.
   (Note)0x1a is EOF for text mode API on Windows.
         "type" cmd, for ex, stop to read at 0x1a.
         xe use binary mode API, so xe can read beyond 0x1a.
         You may be better to set 0x1a as invalid char if you pass the file to another program

#ifdef UNX
       .(J)Disp_trans_tbl = 00 = 1111111111111111
        (J)Disp_trans_tbl = 10 = 1111111111111111
        (J)Disp_trans_tbl = 70 = 0000000000000001
        (J)Disp_trans_tbl = 80 = 1000000000000000
        (J)Disp_trans_tbl = A0 = 1000000000000000
        (J)Disp_trans_tbl = F0 = 0000000000000111

       .(E)Disp_trans_tbl = 00 = 1000000011101111
        (E)Disp_trans_tbl = 10 = 0000000000010000
        (E)Disp_trans_tbl = 70 = 0000000000000001
        (E)Disp_trans_tbl = 90 = 0000000000010000
        (E)Disp_trans_tbl = F0 = 0000000000000001
#else
       .(J)Disp_trans_tbl = 00 = 1000000010101100
        (J)Disp_trans_tbl = 10 = 0101000010000000
        (J)Disp_trans_tbl = 70 = 0000000000000001
        (J)Disp_trans_tbl = 80 = 1000000000000000
        (J)Disp_trans_tbl = A0 = 1000000000000000
        (J)Disp_trans_tbl = F0 = 0000000000000111

        (E)Disp_trans_tbl = 00 = 1000000000000000
        (E)Disp_trans_tbl = F0 = 0000000000000001
#endif

#if defined(WXE)||defined(XXE)
    #ifdef WXE
        (J)Disp_tr_tb_wxe = 00 = 1000000000001100
        (J)Disp_tr_tb_wxe = 10 = 0000000000001000
    #else
        (J)Disp_tr_tb_wxe = 00 = 1000000000000000
        (J)Disp_tr_tb_wxe = 10 = 0000000000000000
    #endif
        (J)Disp_tr_tb_wxe = 70 = 0000000000000001
        (J)Disp_tr_tb_wxe = 80 = 1000000000000000
        (J)Disp_tr_tb_wxe = A0 = 1000000000000000
        (J)Disp_tr_tb_wxe = F0 = 0000000000000111

        (E)Disp_tr_tb_wxe = 00 = 1000000000000000
        (E)Disp_tr_tb_wxe = F0 = 0000000000000001
#endif


         (J):for Japanese mode screen, (E):for English mode screen
         Specify un-displayable char table. Un-displayable char is
         displayed using special char specified on Disp_trans_char
         parameter.
         Use xxx_wxe parameter for wxe and gxe.

         Format: x0 = yyyyyyyyyyyyyyyy
         x : 0 to F (mean offset 00 to F0)
         y : 0 or 1 (1 mean un-displayable char),just 16 byte string.
         You need not specify all '0' line.
         But specify at least a line to deny default.
         For Windows Console version,depending Font setting of CommandPrompt profile,
         control character(<0x20) may be displayed by shifted column.
         Adjust font setting,
         or set unprintable by Disp_trans_tbl on ini file,
         or set /Disp_trans_char/Tab_disp_char to other than 0xff.

#ifdef AIX    //**** AIX ****
       .(J)Disp_trans_char =2E
        (E)Disp_trans_char =2E
#else
       .(J)Tab_disp_char  =FFFF #(FFFF)# Tab display char for Japanese mode. (FFFF means U-21be & U-21c0)
       .(E)Tab_disp_char  =FFFF #(FFFF)# Tab display char for English  mode. (FFFF means U-21be & U-21c0)
#endif
          (J):for Japanese mode screen, (E):for English mode screen
          Specify alternative char of un-displayable char specified
          on Disp_trans_tbl parameter.
          Use other than 0x30-->0x39.
          FF means to use internal default value.

#ifdef AIX    //**** AIX ****
       .(J)Tab_disp_char   =5E2C    // ^,
        (E)Tab_disp_char   =5E2C    // ^,
#else
       .(J)Tab_disp_char  =FFFF #(FFFF)# Tab display char for Japanese mode. (FFFF means U-25b8 & U-25b9)
       .(E)Tab_disp_char  =FFFF #(FFFF)# Tab display char for English  mode. (FFFF means U-25b8 & U-25b9)
#endif
          (J):for Japanese mode screen, (E):for English mode screen
          Specify display Tab(0x09) and its following space by Tab.
          Use other than 0x30-->0x39.
          TAB cmd can override this parameter without updating INI file.
#ifdef AIX    //**** AIX ****
          Default is Tab       :'^('
                     Tab-skip  :','
#else
          Default is Tab       :Up-arrow    :(E)0x18,(J)0x1c
                     Tab-skip  :Right arrow :(E)0x1a,(J)0x1e
#endif

       .DBCSspace_dispchar=FF #(FF)# DBCS space display char. (FF means U-2591)

          U-2591 is canged by "TAB" cmd.

#ifdef LNX
          Japanese mode only. Use to display DBCS space(EUC:0xa1a1).
#else
          Japanese mode only. Use to display DBCS space(SJIS:0x8140).
#endif
          Use other than 0x30-->0x39.

#ifdef UNX
#else
       .Keyboard_Speed     =30
        Keyboard_Delay     =250
        Kbd_Speed_at_exit  =30
        Kbd_Delay_at_exit  =250
         Keyboard type speed for entry to and exit from editor.
         Speed:acceptable char count per second when continue to press the same key.
               Specify value from 0 to 31.
         Delay:delay time to accept second char when continue to press the same key.
               Specify 4 level value 250,500,750 and 1000.
         (If both Speed and Delay is 0,no change is done)
#endif

       .DirList_Indent     =1
         How display file name on directory list,
         same start column for all(0),or set indentation by path level.

#ifdef UNX
    #ifdef LNX
       .XPrint_Command     ="xprint.sh"
    #else
       .XPrint_Command     ="xprint"
    #endif
#else
       .XPrint_Command     ="XPRINT.EXE"
#endif
        XPrint_Command_DOS =""
        XPrint_Command_GCC =""
        XPrint_Command_WIN =""
        XPrint_Command_OS2 =""
#ifdef UNX
        XPrint_Command_LNX =""
#else
#endif
         Specify command string for XPRint command.
         %1-->%9 can be used. If no % is used,command is issued with
         XPRint command operand simply concatenated with this string.
         Use parm with OS version suffix when a Print command is specific
         to the OS.
       (note).Specify this option before next Print_Command option.

       .Print_Command      =""
        Print_Command_DOS  =""
        Print_Command_GCC  =""
        Print_Command_WIN  =""
        Print_Command_OS2  =""
#ifdef UNX
        Print_Command_LNX  =""
#else
#endif
         Specify command string for "P" dir line command.
         %1 can be used for file name position.
         Default(when "" is specified) is "XPRINT.EXE".
         When Print_Command is "" ,same as XPrint_Command or containing
         string "XPRINT","P" line command print files ascending order
         using xprint indirect filename specification function.
         In other case "P" line command call this command string in the
         reverse order on directory list.
         Use parm with OS version suffix when the Print command is
         specific to the OS.
       (note).Specify this option after previous XPrint_Command option.

#ifdef UNX
#else
       .Sub_Shell_Init     ="prompt $p$l"
         Initial command for sub shell started by DOS command without
         command string.
         Default value is to change prompt for identity of sub-shell.
         ($p mean prompt drive and path,$l display "<").
       (note).DOS version ignore this parameter under WindowsNT.
#endif

#ifdef LNX
       .LNX_Subshell_xe   =""
         xe(curses) shell pgm name for ">" cmd.
         default is bash if dash exist else sh.
         (check also to which /bin/sh is slinked.
          to bash under RH9,FC%. to dash under Kubuntu6,ubuntu7.)
       .LNX_ShellTerm_gxe =""
          terminal program for sub shell opened by DOS (abbreviation is ">") cmd or Menu:File->Term.
          Default depends terminal emulator installed(check it in the following sequence),
          Specify if option required. e.g. "gnome-terminal --maximize".
              "gnome-terminal",
              "konsole -ls",
              "xfce4-terminal",
              finally use "xterm".

       .LNX_CmdTerm_gxe   =""
          terminal program used by DOS cmd with cmd-string(e.g. ">ls") except on =6 panel.
          Default is
          "gnome-terminal -e",
          "konsole -e",
          "xfce4-terminal e"
#endif

       .Utility command name.
          Specify command string used by dir-list line command "=","g"
          or utility panel 3.12/3.14.

          CompareFile_Cmd   ="xfc"   :File compare.
          CompareDir_Cmd    ="xdc"   :Directory compare.
          Search_Cmcd       ="grep"  :String search.

       .Bounds
          Set default boundary by directory name or extension name.
          File name itself is also available.
        Bounds            = .cob     =  7  72    # start by "." to set default by extension name.
        Bounds            = "g:\src\xe" = 10 80  # specify fullpath name for the file or directory.

       .Issue confirmation msg for large file when open.
        (Default is 100MB for 32 bit OS, 1GB for 64 bit OS.)
            LargeFileSize(MB) =1    #(100)# Size of large file to issue warning when open, 0 means no limit. ||vazd

*** 2022/12/04