diff -2 -c source.ori/file.c source/file.c *** source.ori/file.c Thu Mar 19 22:20:22 1998 --- source/file.c Sun Sep 6 14:35:42 1998 *************** *** 79,83 **** /* create the window */ ! window = CreateWindow(name); strcpy(window->filename, name); strcpy(window->path, ""); --- 79,83 ---- /* create the window */ ! window = CreateWindow(name,""); strcpy(window->filename, name); strcpy(window->path, ""); *************** *** 119,123 **** in use (not Untitled or Untitled and modified), create the window */ if (inWindow == NULL || inWindow->filenameSet || inWindow->fileChanged) ! window = CreateWindow(name); else window = inWindow; --- 119,123 ---- in use (not Untitled or Untitled and modified), create the window */ if (inWindow == NULL || inWindow->filenameSet || inWindow->fileChanged) ! window = CreateWindow(name,path); else window = inWindow; diff -2 -c source.ori/nedit.c source/nedit.c *** source.ori/nedit.c Thu Mar 19 22:20:23 1998 --- source/nedit.c Sun Sep 6 14:35:42 1998 *************** *** 63,66 **** --- 63,69 ---- #include "parse.h" + int oriArgc; + char **oriArgv; + static void nextArg(int argc, char **argv, int *argIndex); static int checkDoMacroArg(char *macro); *************** *** 241,245 **** XrmDatabase prefDB; ! #ifdef USE_XMIM /* Set local for C library and X, and Motif input functions */ --- 244,250 ---- XrmDatabase prefDB; ! oriArgc=argc; ! oriArgv=argv; ! #ifdef USE_XMIM /* Set local for C library and X, and Motif input functions */ diff -2 -c source.ori/nedit.h source/nedit.h *** source.ori/nedit.h Thu Mar 19 22:20:23 1998 --- source/nedit.h Sun Sep 27 16:15:34 1998 *************** *** 273,278 **** --- 273,284 ---- int languageMode; /* identifies language mode currently selected in the window */ + + char *cpyArgv[100]; + int cpyArgc, x; } WindowInfo; extern WindowInfo *WindowList; extern Display *TheDisplay; + + extern int oriArgc; + extern char **oriArgv; diff -2 -c source.ori/window.c source/window.c *** source.ori/window.c Thu Mar 19 22:20:26 1998 --- source/window.c Sun Sep 27 16:21:08 1998 *************** *** 98,107 **** ** Create a new editor window */ ! WindowInfo *CreateWindow(char *name) { Widget appShell, main, menuBar, pane, text, stats; WindowInfo *window; Arg al[20]; ! int ac; #ifdef SGI_CUSTOM char sgi_title[MAXPATHLEN + 14 + SGI_WINDOW_TITLE_LEN] = SGI_WINDOW_TITLE; --- 98,110 ---- ** Create a new editor window */ ! WindowInfo *CreateWindow(char *name,char *path) { Widget appShell, main, menuBar, pane, text, stats; WindowInfo *window; Arg al[20]; ! int ac, x; ! ! char cfilename[MAXPATHLEN]; ! #ifdef SGI_CUSTOM char sgi_title[MAXPATHLEN + 14 + SGI_WINDOW_TITLE_LEN] = SGI_WINDOW_TITLE; *************** *** 183,186 **** --- 186,216 ---- XtSetArg(al[ac], XmNiconName, name); ac++; #endif + + sprintf(cfilename,"%s%s",path,name); + + for (x=0; xcpyArgv[x]=oriArgv[x]; + } + if ((oriArgc>1)&&(oriArgv[oriArgc-1][0]!='-')&&(oriArgv[oriArgc-1][0]!='+')) { + if (path[0]=='\0') { + window->cpyArgc=oriArgc-1; + } + else { + window->cpyArgv[oriArgc-1]=cfilename; + window->cpyArgc=oriArgc; + } + } + else { + if (path[0]=='\0') { + window->cpyArgc=oriArgc; + } + else { + window->cpyArgv[oriArgc]=cfilename; + window->cpyArgc=oriArgc+1; + } + } + XtSetArg(al[ac], XmNargv,window->cpyArgv); ac++; + XtSetArg(al[ac], XmNargc,window->cpyArgc); ac++; + appShell = XtAppCreateShell("nedit", "NEdit", applicationShellWidgetClass, TheDisplay, al, ac); *************** *** 812,816 **** --- 842,848 ---- void UpdateWindowTitle(WindowInfo *window) { + int x; char title[MAXPATHLEN + 14]; /* 11: strlen("Replace (in )") */ + char path[MAXPATHLEN + 14]; /* Set the window title, adding annotations for "modified" or "read-only" */ *************** *** 822,826 **** --- 854,877 ---- else if (window->fileChanged) strcat(title, " (modified)"); + SetWindowTitle(window, title); + + strcpy(path, window->path); + strcat(path, window->filename); + + for (x=0; xcpyArgv[x]=oriArgv[x]; + } + if ((oriArgc>1)&&(oriArgv[oriArgc-1][0]!='-')&&(oriArgv[oriArgc-1][0]!='+')) { + window->cpyArgv[oriArgc-1]=path; + window->cpyArgc=oriArgc; + } + else { + window->cpyArgv[oriArgc]=path; + window->cpyArgc=oriArgc+1; + } + + XtVaSetValues(window->shell, XmNargv, window->cpyArgv, XmNargc, window->cpyArgc, 0); + /* If there's a find or replace dialog up in "Keep Up" mode, with a diff -2 -c source.ori/window.h source/window.h *** source.ori/window.h Thu Mar 19 22:20:26 1998 --- source/window.h Sun Sep 27 16:17:27 1998 *************** *** 23,27 **** * * *******************************************************************************/ ! WindowInfo *CreateWindow(char *title); void CloseWindow(WindowInfo *window); int NWindows(void); --- 23,27 ---- * * *******************************************************************************/ ! WindowInfo *CreateWindow(char *title,char *path); void CloseWindow(WindowInfo *window); int NWindows(void);