globals.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 428 行
C
428 行
/****************************************************************************
*
* Open Watcom Project
*
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
* ========================================================================
*
* This file contains Original Code and/or Modifications of Original
* Code as defined in and that are subject to the Sybase Open Watcom
* Public License version 1.0 (the 'License'). You may not use this file
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
* provided with the Original Code and Modifications, and is also
* available at www.sybase.com/developer/opensource.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
* NON-INFRINGEMENT. Please see the License for the specific language
* governing rights and limitations under the License.
*
* ========================================================================
*
* Description: Definition of editor's global variables.
*
****************************************************************************/
#include <stdio.h>
#include "vi.h"
#include "colors.h"
#include "keys.h"
#include "rxsupp.h"
/* strings */
char _NEAR MSG_CHARACTERS[] = "characters";
char _NEAR MSG_LINES[] = "lines";
char _NEAR MSG_PRESSANYKEY[] = "Press any key";
char _NEAR MSG_DELETEDINTOBUFFER[] = " deleted into buffer ";
char _NEAR MEMORIZE_MODE[]="Memorize Mode ";
char _NEAR CONFIG_FILE[] = CFG_NAME;
char _NEAR SingleBlank[] = " ";
char _NEAR SingleSlash[] = "/";
char _NEAR * _NEAR BoolStr[] = { "FALSE", "TRUE" };
/* edit options */
char _NEAR * _NEAR EditOpts[] = {
"<F1> Go To",
"<F2> Edit",
"<F3> Get All"
};
int NumEditOpts = (sizeof( EditOpts )/sizeof( char _NEAR * ) );
/* mouse data */
#if !defined( __LINUX__ ) || defined( PREBUILD )
int MouseRow;
int MouseCol;
int MouseStatus;
#endif
int MouseSpeed=4;
int MouseDoubleClickSpeed=3;
int MouseRepeatStartDelay=5;
int MouseRepeatDelay;
int LastMouseEvent=-1;
/* generic editing data */
char *FileEndString=NULL;
char *StatusString=NULL;
int MaxPush=15;
int Radix=10;
char *WordDefn;
char *WordAltDefn;
int AutoSaveInterval=30;
long NextAutoSave;
int PageLinesExposed=1;
int HalfPageLines;
char *GrepDefault;
int LastEvent;
int StackK=MIN_STACK_K;
char SpinCount;
char _NEAR SpinData[]="腬\|/";
char ExitAttr=7;
char VideoPage;
char *EXEName;
char *Majick;
char *BndMemory;
char *HistoryFile;
char *TagFileName;
char *StaticBuffer;
int SystemRC;
int FcbBlocksInUse;
int CurrFIgnore;
char *FIgnore;
mark *MarkList;
fcb *FcbThreadHead;
fcb *FcbThreadTail;
info *InfoHead;
info *InfoTail;
info *CurrentInfo;
file *CurrentFile;
fcb *CurrentFcb;
line *CurrentLine;
line *WorkLine;
linenum CurrentLineNumber=1;
linenum TopOfPage=1;
int CurrentColumn=1;
int LeftColumn;
int ColumnDesired=1;
window_id CurrentWindow=-1;
window_id MessageWindow=-1;
window_id StatusWindow=-1;
window_id MenuWindow=-1;
window_id CurrNumWindow=-1;
int LastEvent;
select_rgn SelRgn;
int CursorBlinkRate=-1;
/*
* directory data
*/
direct_ent * _NEAR DirFiles[MAX_FILES];
int DirFileCount;
/*
* bang history
*/
history_data FilterHist = {
10,
0,
NULL
};
/*
* cmdline history
*/
history_data CLHist = {
10,
0,
NULL
};
/*
* find history
*/
history_data FindHist = {
10,
0,
NULL
};
/*
* last files edited
*/
history_data LastFilesHist = {
4,
0,
NULL
};
/*
* key map data
*/
int CurrentKeyMapCount;
vi_key *CurrentKeyMap;
key_map *KeyMaps;
key_map *InputKeyMaps;
/*
* savebuf data
*/
int _NEAR SavebufBound[ MAX_SAVEBUFS ] =
{ VI_KEY( CTRL_F1 ), VI_KEY( CTRL_F2 ),
VI_KEY( CTRL_F3 ), VI_KEY( CTRL_F4 ),
VI_KEY( CTRL_F5 ), VI_KEY( CTRL_F6 ),
VI_KEY( CTRL_F7 ), VI_KEY( CTRL_F8 ),
VI_KEY( CTRL_F9 ) };
int CurrentSavebuf = 0; /* this is 0 based */
char LastSavebuf; /* this is 1 based - users see it */
savebuf _NEAR Savebufs[ MAX_SAVEBUFS ];
savebuf _NEAR SpecialSavebufs[ MAX_SPECIAL_SAVEBUFS+1 ];
savebuf *WorkSavebuf = &SpecialSavebufs[ MAX_SPECIAL_SAVEBUFS ];
int SavebufNumber=NO_SAVEBUF; /* this is 0 based */
/*
* undo data
*/
undo_stack *UndoStack;
undo_stack *UndoUndoStack;
/*
* windows data
*/
#ifndef __WIN__
window_info cmdlinew_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 24, 79, 24 };
window_info statusw_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 69, 24, 79, 24 };
window_info repcntw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 28, 20, 43, 32 };
window_info editw_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 0, 79, 24 };
window_info extraw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 26, 2, 51, 18 };
window_info filecw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 4, 8, 75, 17 };
window_info linenumw_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 1, 21, 8, 24 };
window_info dirw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 10, 2, 69, 17};
window_info filelistw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 26, 2, 78, 18 };
window_info setw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 12, 2, 40, 21 };
window_info setvalw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 43, 6, 70, 9 };
window_info messagew_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 24, 79, 24 };
window_info menuw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 1, 0, 0 };
window_info menubarw_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 0, 79, 0 };
window_info defaultw_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 1, 79, 22 };
window_info activemenu_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 0, 0, 0 };
window_info greyedmenu_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 0, 0, 0 };
window_info activegreyedmenu_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 0, 0, 0 };
#else
/* the ONE TRUE configuration - do not change this or nothing will work */
window_info cmdlinew_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 23, 69, 25 };
window_info statusw_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 69, 24, 79, 24 };
window_info repcntw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 28, 20, 43, 32 };
window_info editw_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 0, 79, 23 };
window_info extraw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 26, 2, 51, 18 };
window_info filecw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 4, 8, 75, 17 };
window_info linenumw_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 1, 21, 8, 24 };
window_info dirw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 10, 2, 69, 17};
window_info filelistw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 26, 2, 78, 18 };
window_info setw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 12, 2, 40, 21 };
window_info setvalw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 43, 6, 70, 9 };
window_info messagew_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 25, 69, 25 };
window_info menuw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 1, 0, 0 };
window_info menubarw_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 0, 79, 0 };
window_info defaultw_info = { 1, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 1, 79, 22 };
window_info activemenu_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 0, 0, 0 };
window_info greyedmenu_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 0, 0, 0 };
window_info activegreyedmenu_info = { 0, WHITE, BLACK, { WHITE, BLACK, 0 },
{ BRIGHT_WHITE, BLACK, 0 }, 0, 0, 0, 0 };
#endif
/*
* file io data
*/
char *TmpDir;
char *CommandBuffer=NULL;
char *CurrentDirectory;
char *HomeDirectory;
char *ReadBuffer;
char *WriteBuffer;
char *SwapBlocks;
int SwapFileHandle=-1;
int SwapBlockArraySize;
int SwapBlocksInUse;
int MaxSwapBlocks=2048;
int MaxLine=512,MaxLinem1=511;
char *Comspec;
/*
* misc data
*/
int WrapMargin;
short *StatusSections;
int NumStatusSections;
int LastRetCode;
long LastRC;
long MaxMemFree;
long MaxMemFreeAfterInit;
int RegExpError;
regexp *CurrentRegularExpression;
char _NEAR crlf[] = { 13,10 };
cursor_type OverstrikeCursorType={100,100};
cursor_type InsertCursorType={50,0};
cursor_type NormalCursorType={7,0};
char * _NEAR MatchData[ MAX_SEARCH_STRINGS*2 ];
int MatchCount=INITIAL_MATCH_COUNT;
int LastError;
int LineNumWinWidth = 8;
int TabAmount = 8;
int ShiftWidth = 4;
int HardTab = 8;
int maxdotbuffer=1024;
vi_key *DotBuffer;
vi_key *AltDotBuffer;
vi_key *DotCmd;
int DotDigits;
int DotCount;
int DotCmdCount;
int AltDotDigits;
int AltDotCount;
volatile long ClockTicks;
int RepeatDigits;
bool NoRepeatInfo;
char _NEAR RepeatString[MAX_REPEAT_STRING];
int SourceErrCount;
char _NEAR SpawnPrompt[ MAX_STR ];
/*
* windowing data
*/
int CurrentStatusColumn=56;
int ClockX=74,ClockY;
int SpinX=68,SpinY;
char *TileColors;
int MaxTileColors=10;
int MaxWindowTileX = 3;
int MaxWindowTileY=1;
int MoveColor=CYAN;
int ResizeColor=YELLOW;
int InactiveWindowColor=WHITE;
char WindMaxWidth=80;
char WindMaxHeight=25;
int ToolBarButtonHeight = 24;
int ToolBarButtonWidth = 24;
int ToolBarColor = 1;
char EndOfLineChar = 0;
/*
* edit flags
*/
eflags EditFlags = {
#define PICK( a,b,c,d,e ) d,
#include "setb.h"
/*
* internal booleans are here
*/
FALSE /* DisplayHold */,
FALSE /* Starting */,
FALSE /* DotMode */,
FALSE /* Dotable */,
FALSE /* KeyMapMode */,
FALSE /* ClockActive */,
FALSE /* KeyOverride */,
FALSE /* ViewOnly */,
FALSE /* NewFile */,
FALSE /* SourceScriptActive */,
FALSE /* InputKeyMapMode */,
FALSE /* LineWrap */,
FALSE /* Monocolor */,
FALSE /* BlackAndWhite */,
FALSE /* Color */,
FALSE /* KeyMapInProgress */,
FALSE /* ResetDisplayLine */,
FALSE /* GlobalInProgress */,
FALSE /* ExtendedKeyboard */,
FALSE /* BreakPressed */,
FALSE /* AllowRegSubNewline */,
FALSE /* BoundData */,
FALSE /* SpinningOurWheels */,
FALSE /* ReadOnlyError */,
FALSE /* WindowsStarted */,
FALSE /* CompileScript */,
FALSE /* ScriptIsCompiled */,
FALSE /* CompileAssignments */,
FALSE /* OpeningFileToCompile */,
FALSE /* InsertModeActive */,
FALSE /* WatchForBreak */,
TRUE /* EchoOn */,
FALSE /* LoadResidentScript */,
FALSE /* CompileAssignmentsDammit */,
FALSE /* ExMode */,
FALSE /* Appending */,
FALSE /* LineDisplay */,
FALSE /* NoSetCursor */,
FALSE /* NoInputWindow */,
FALSE /* ResizeableWindow */,
FALSE /* BndMemoryLocked */,
FALSE /* MemorizeMode */,
FALSE /* DuplicateFile */,
FALSE /* NoReplaceSearchString */,
TRUE /* LastSearchWasForward */,
FALSE /* UndoLost */,
FALSE /* NoAddToDotBuffer */,
FALSE /* Dragging */,
FALSE /* NoCapsLock */,
FALSE /* RecoverLostFiles */,
FALSE /* IgnoreLostFiles */,
FALSE /* UseIDE */,
FALSE /* HasSystemMouse */,
FALSE /* UndoInProg */,
FALSE /* StdIOMode */,
FALSE /* NoInitialFileLoad */,
FALSE /* WasOverstrike */,
FALSE /* ReturnToInsertMode */,
FALSE /* AltMemorizeMode */,
FALSE /* AltDotMode */,
FALSE /* EscapedInsertChar */,
FALSE /* HoldEverything */,
FALSE /* IsWindowedConsole */,
FALSE /* ModeInStatusLine */,
FALSE /* IsChangeWord */,
FALSE /* OperatorWantsMove */,
FALSE /* ScrollCommand */,
FALSE /* FileTypeSource */,
};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?