⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nedit.c

📁 nedit 是一款linux下的开发源码的功能强大的编辑器
💻 C
📖 第 1 页 / 共 3 页
字号:
static const char CVSID[] = "$Id: nedit.c,v 1.49.2.1 2003/06/27 17:49:25 tringali Exp $";/********************************************************************************									       ** nedit.c -- Nirvana Editor main program				       **									       ** Copyright (C) 1999 Mark Edel						       **									       ** This is free software; you can redistribute it and/or modify it under the    ** terms of the GNU General Public License as published by the Free Software    ** Foundation; either version 2 of the License, or (at your option) any later   ** version.							               ** 									       ** This software is distributed in the hope that it will be useful, but WITHOUT ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or        ** FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License        ** for more details.							       ** 									       ** You should have received a copy of the GNU General Public License along with ** software; if not, write to the Free Software Foundation, Inc., 59 Temple     ** Place, Suite 330, Boston, MA  02111-1307 USA		                       **									       ** Nirvana Text Editor	    						       ** May 10, 1991								       **									       ** Written by Mark Edel							       **									       ** Modifications:							       **									       **	8/18/93 - Mark Edel & Joy Kyriakopulos - Ported to VMS		       **									       ********************************************************************************/#ifdef HAVE_CONFIG_H#include "../config.h"#endif#include "nedit.h"/* #include "textBuf.h" */#include "file.h"#include "preferences.h"#include "regularExp.h"#include "selection.h"#include "tags.h"#include "menu.h"#include "macro.h"#include "server.h"#include "interpret.h"#include "parse.h"#include "help.h"#include "../util/misc.h"#include "../util/printUtils.h"#include "../util/fileUtils.h"#include "../util/getfiles.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#ifndef NO_XMIM#include <X11/Xlocale.h>#else#include <locale.h>#endif#include <X11/Intrinsic.h>#include <Xm/Xm.h>#if XmVersion >= 1002#include <Xm/RepType.h>#endif#ifdef VMS#include <rmsdef.h>#include "../util/VMSparam.h"#include "../util/VMSUtils.h"#else#ifndef __MVS__#include <sys/param.h>#endif#endif /*VMS*/#ifdef HAVE_DEBUG_H#include "../debug.h"#endifstatic void nextArg(int argc, char **argv, int *argIndex);static int checkDoMacroArg(const char *macro);static String neditLanguageProc(Display *dpy, String xnl, XtPointer closure);static void maskArgvKeywords(int argc, char **argv, const char **maskArgs);static void unmaskArgvKeywords(int argc, char **argv, const char **maskArgs);static void patchResourcesForVisual(void);static void patchResourcesForKDEbug(void);static void patchLocaleForMotif(void);WindowInfo *WindowList = NULL;Display *TheDisplay = NULL;char *ArgV0 = NULL;Boolean IsServer = False;/* iso8859 appears to be necessary for newer versions of XFree86 that   default to Unicode encoding, which doesn't quite work with Motif.   Otherwise Motif puts up garbage (square blocks).   (This of course, is a stupid default because there are far more iso8859   apps than Unicode apps.  But the X folks insist it's a client bug.  Hah.)   RedHat 7.3 won't default to '-1' for an encoding, if left with a *,   and so reverts to "fixed".  Yech. */#define NEDIT_DEFAULT_FONT      "-*-helvetica-medium-r-normal-*-*-120-*-*-*-iso8859-1"#define NEDIT_FIXED_FONT        "-*-courier-medium-r-normal-*-*-120-*-*-*-iso8859-1"#define NEDIT_DEFAULT_BG        "#b3b3b3"static char *fallbackResources[] = {    /* Try to avoid Motif's horrificly ugly default colors and fonts,       if the user's environment provides no usable defaults.  We try       to choose a Windows-y default color setting here.  Editable text        fields are forced to a fixed-pitch font for usability. */    "*FontList: "               NEDIT_DEFAULT_FONT,    "*XmText.FontList: "        NEDIT_FIXED_FONT,    "*XmTextField.FontList: "   NEDIT_FIXED_FONT,    "*XmList.FontList: "        NEDIT_FIXED_FONT,    "*XmFileSelectionBox*XmList.FontList: "                                 NEDIT_FIXED_FONT,    "*background: "             NEDIT_DEFAULT_BG,    "*foreground: "             NEDIT_DEFAULT_FG,    "*XmText.foreground: "      NEDIT_DEFAULT_FG,    "*XmText.background: "      NEDIT_DEFAULT_TEXT_BG,    "*XmList.foreground: "      NEDIT_DEFAULT_FG,    "*XmList.background: "      NEDIT_DEFAULT_TEXT_BG,    "*XmTextField.foreground: " NEDIT_DEFAULT_FG,    "*XmTextField.background: " NEDIT_DEFAULT_TEXT_BG,    "*XmText.translations: #override\\n"        "Ctrl~Alt~Meta<KeyPress>v: paste-clipboard()\\n"        "Ctrl~Alt~Meta<KeyPress>c: copy-clipboard()\\n"        "Ctrl~Alt~Meta<KeyPress>x: cut-clipboard()\\n"        "Ctrl~Alt~Meta<KeyPress>u: delete-to-start-of-line()\\n",    "*XmTextField.translations: #override\\n"        "Ctrl~Alt~Meta<KeyPress>v: paste-clipboard()\\n"        "Ctrl~Alt~Meta<KeyPress>c: copy-clipboard()\\n"        "Ctrl~Alt~Meta<KeyPress>x: cut-clipboard()\\n"        "Ctrl~Alt~Meta<KeyPress>u: delete-to-start-of-line()\\n",    /* Prevent the file selection box from acting stupid. */    "*XmFileSelectionBox.resizePolicy: XmRESIZE_NONE",    "*XmFileSelectionBox.textAccelerators:",    /* NEdit-specific widgets.  Theses things should probably be manually       jammed into the database, rather than fallbacks.  We really want       the accelerators to be there even if someone creates an app-defaults       file against our wishes. */    "*text.lineNumForeground: " NEDIT_DEFAULT_LINENO_FG,    "*text.background: " NEDIT_DEFAULT_TEXT_BG,    "*text.foreground: " NEDIT_DEFAULT_FG,    "*text.highlightForeground: " NEDIT_DEFAULT_HI_FG,    "*text.highlightBackground: " NEDIT_DEFAULT_HI_BG,    "*textFrame.shadowThickness: 1",    "*menuBar.marginHeight: 0",    "*menuBar.shadowThickness: 1",    "*pane.sashHeight: 11",    "*pane.sashWidth: 11",    "*pane.marginWidth: 0",    "*pane.marginHeight: 0",    "*scrolledW*spacing: 0",    "*text.selectionArrayCount: 3",    "*helpText.background: " NEDIT_DEFAULT_HELP_BG,    "*helpText.foreground: " NEDIT_DEFAULT_HELP_FG,    "*helpText.selectBackground: " NEDIT_DEFAULT_BG,    "*statsLine.background: " NEDIT_DEFAULT_BG,    "*statsLine.FontList: " NEDIT_DEFAULT_FONT,    "*helpText.font: " NEDIT_FIXED_FONT,    "*calltip.background: LemonChiffon1",    "*calltip.foreground: black",    "*iSearchForm*highlightThickness: 1",    "*fileMenu.tearOffModel: XmTEAR_OFF_ENABLED",    "*editMenu.tearOffModel: XmTEAR_OFF_ENABLED",    "*searchMenu.tearOffModel: XmTEAR_OFF_ENABLED",    "*preferencesMenu.tearOffModel: XmTEAR_OFF_ENABLED",    "*windowsMenu.tearOffModel: XmTEAR_OFF_ENABLED",    "*shellMenu.tearOffModel: XmTEAR_OFF_ENABLED",    "*macroMenu.tearOffModel: XmTEAR_OFF_ENABLED",    "*helpMenu.tearOffModel: XmTEAR_OFF_ENABLED",    "*fileMenu.mnemonic: F",    "*fileMenu.new.accelerator: Ctrl<Key>n",    "*fileMenu.new.acceleratorText: Ctrl+N",    "*fileMenu.open.accelerator: Ctrl<Key>o",    "*fileMenu.open.acceleratorText: Ctrl+O",    "*fileMenu.openSelected.accelerator: Ctrl<Key>y",    "*fileMenu.openSelected.acceleratorText: Ctrl+Y",    "*fileMenu.close.accelerator: Ctrl<Key>w",    "*fileMenu.close.acceleratorText: Ctrl+W",    "*fileMenu.save.accelerator: Ctrl<Key>s",    "*fileMenu.save.acceleratorText: Ctrl+S",    "*fileMenu.includeFile.accelerator: Alt<Key>i",    "*fileMenu.includeFile.acceleratorText: Alt+I",    "*fileMenu.print.accelerator: Ctrl<Key>p",    "*fileMenu.print.acceleratorText: Ctrl+P",    "*fileMenu.exit.accelerator: Ctrl<Key>q",    "*fileMenu.exit.acceleratorText: Ctrl+Q",    "*editMenu.mnemonic: E",    "*editMenu.undo.accelerator: Ctrl<Key>z",    "*editMenu.undo.acceleratorText: Ctrl+Z",    "*editMenu.redo.accelerator: Shift Ctrl<Key>z",    "*editMenu.redo.acceleratorText: Shift+Ctrl+Z",    "*editMenu.cut.accelerator: Ctrl<Key>x",    "*editMenu.cut.acceleratorText: Ctrl+X",    "*editMenu.copy.accelerator: Ctrl<Key>c",    "*editMenu.copy.acceleratorText: Ctrl+C",    "*editMenu.paste.accelerator: Ctrl<Key>v",    "*editMenu.paste.acceleratorText: Ctrl+V",    "*editMenu.pasteColumn.accelerator: Shift Ctrl<Key>v",    "*editMenu.pasteColumn.acceleratorText: Ctrl+Shift+V",    "*editMenu.delete.acceleratorText: Del",    "*editMenu.selectAll.accelerator: Ctrl<Key>a",    "*editMenu.selectAll.acceleratorText: Ctrl+A",    "*editMenu.shiftLeft.accelerator: Ctrl<Key>9",    "*editMenu.shiftLeft.acceleratorText: [Shift]Ctrl+9",    "*editMenu.shiftLeftShift.accelerator: Shift Ctrl<Key>9",    "*editMenu.shiftRight.accelerator: Ctrl<Key>0",    "*editMenu.shiftRight.acceleratorText: [Shift]Ctrl+0",    "*editMenu.shiftRightShift.accelerator: Shift Ctrl<Key>0",    "*editMenu.upperCase.accelerator: Ctrl<Key>6",    "*editMenu.upperCase.acceleratorText: Ctrl+6",    "*editMenu.lowerCase.accelerator: Shift Ctrl<Key>6",    "*editMenu.lowerCase.acceleratorText: Shift+Ctrl+6",    "*editMenu.fillParagraph.accelerator: Ctrl<Key>j",    "*editMenu.fillParagraph.acceleratorText: Ctrl+J",    "*editMenu.insertFormFeed.accelerator: Alt Ctrl<Key>l",    "*editMenu.insertFormFeed.acceleratorText: Alt+Ctrl+L",    "*editMenu.insertCtrlCode.accelerator: Alt Ctrl<Key>i",    "*editMenu.insertCtrlCode.acceleratorText: Alt+Ctrl+I",    "*searchMenu.mnemonic: S",    "*searchMenu.find.accelerator: Ctrl<Key>f",    "*searchMenu.find.acceleratorText: [Shift]Ctrl+F",    "*searchMenu.findShift.accelerator: Shift Ctrl<Key>f",    "*searchMenu.findAgain.accelerator: Ctrl<Key>g",    "*searchMenu.findAgain.acceleratorText: [Shift]Ctrl+G",    "*searchMenu.findAgainShift.accelerator: Shift Ctrl<Key>g",    "*searchMenu.findSelection.accelerator: Ctrl<Key>h",    "*searchMenu.findSelection.acceleratorText: [Shift]Ctrl+H",    "*searchMenu.findSelectionShift.accelerator: Shift Ctrl<Key>h",    "*searchMenu.findIncremental.accelerator: Ctrl<Key>i",    "*searchMenu.findIncrementalShift.accelerator: Shift Ctrl<Key>i",    "*searchMenu.findIncremental.acceleratorText: [Shift]Ctrl+I",    "*searchMenu.replace.accelerator: Ctrl<Key>r",    "*searchMenu.replace.acceleratorText: [Shift]Ctrl+R",    "*searchMenu.replaceShift.accelerator: Shift Ctrl<Key>r",    "*searchMenu.findReplace.accelerator: Ctrl<Key>r",    "*searchMenu.findReplace.acceleratorText: [Shift]Ctrl+R",    "*searchMenu.findReplaceShift.accelerator: Shift Ctrl<Key>r",    "*searchMenu.replaceFindAgain.accelerator: Ctrl<Key>t",    "*searchMenu.replaceFindAgain.acceleratorText: [Shift]Ctrl+T",    "*searchMenu.replaceFindAgainShift.accelerator: Shift Ctrl<Key>t",    "*searchMenu.replaceAgain.accelerator: Alt<Key>t",    "*searchMenu.replaceAgain.acceleratorText: [Shift]Alt+T",    "*searchMenu.replaceAgainShift.accelerator: Shift Alt<Key>t",    "*searchMenu.gotoLineNumber.accelerator: Ctrl<Key>l",    "*searchMenu.gotoLineNumber.acceleratorText: Ctrl+L",    "*searchMenu.gotoSelected.accelerator: Ctrl<Key>e",    "*searchMenu.gotoSelected.acceleratorText: Ctrl+E",    "*searchMenu.mark.accelerator: Alt<Key>m",    "*searchMenu.mark.acceleratorText: Alt+M a-z",    "*searchMenu.gotoMark.accelerator: Alt<Key>g",    "*searchMenu.gotoMark.acceleratorText: [Shift]Alt+G a-z",    "*searchMenu.gotoMarkShift.accelerator: Shift Alt<Key>g",    "*searchMenu.gotoMatching.accelerator: Ctrl<Key>m",    "*searchMenu.gotoMatching.acceleratorText: [Shift]Ctrl+M",    "*searchMenu.gotoMatchingShift.accelerator: Shift Ctrl<Key>m",    "*searchMenu.findDefinition.accelerator: Ctrl<Key>d",    "*searchMenu.findDefinition.acceleratorText: Ctrl+D",    "*searchMenu.showCalltip.accelerator: Ctrl<Key>apostrophe",    "*searchMenu.showCalltip.acceleratorText: Ctrl+'",        "*preferencesMenu.mnemonic: P",    "*preferencesMenu.statisticsLine.accelerator: Alt<Key>a",    "*preferencesMenu.statisticsLine.acceleratorText: Alt+A",    "*preferencesMenu.overtype.acceleratorText: Insert",    "*shellMenu.mnemonic: l",    "*shellMenu.filterSelection.accelerator: Alt<Key>r",    "*shellMenu.filterSelection.acceleratorText: Alt+R",    "*shellMenu.executeCommand.accelerator: Alt<Key>x",    "*shellMenu.executeCommand.acceleratorText: Alt+X",    "*shellMenu.executeCommandLine.accelerator: Ctrl<Key>KP_Enter",    "*shellMenu.executeCommandLine.acceleratorText: Ctrl+KP Enter",    "*shellMenu.cancelShellCommand.accelerator: Ctrl<Key>period",    "*shellMenu.cancelShellCommand.acceleratorText: Ctrl+.",

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -