/usr/share/jed/lib/history.sl is in jed-common 1:0.99.19-7.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 | %
% history.sl
% Store/Recall mini-buffer lines
%
% $Id: history.sl,v 1.16 2000/09/10 15:39:32 rocher Exp $
%
private variable Max_Num_Lines = 32; % The same as in 'mini.sl'
%!%+
%\variable{History_File}
%\synopsis{History_File}
%\usage{String_Type History_File = "jed.his";}
%\description
% The variable \var{History_File} is used by the function \var{history_save}
% to know the file name in which to store all non-blank lines of the
% mini-buffer. Its default value is "~/.jed-history" under Unix and
% "~/jed.his" on other platforms.
%\seealso{history_load, history_save}
%!%-
custom_variable ("History_File",
#ifdef UNIX
expand_filename ("~/.jed-history")
#elifdef VMS
"sys$login:jed.his"
#else
expand_filename ("~/jed.his")
#endif
);
%!%+
%\function{history_load}
%\synopsis{history_load}
%\usage{Void_Type history_load ();}
%\description
% This function reads a history file, i.e. each line of the file is
% stored in the mini-buffer, but not evaluated. By default, historical
% records are kept in a file whose name is stored in the \var{History_file}
% variable. This file is written in the current working directory
% associated with jed, i.e. the directory from which you started the jed
% process. For example, to read your history file every time you start
% jed and give an alternative name to the history file, put:
%#v+
% variable History_File;
% if (BATCH == 0)
% {
% () = evalfile ("history");
% History_File = ".my-jed-history";
% history_load ();
% }
%#v-
% in your .jedrc (or jed.rc) file. The \var{History_File} variable can be
% assigned either a file name or an absolute path+filename. In the first
% case, a file will be saved in the current working directory (the one
% you were in when you started jed), so you will find a history file in
% every directory you work in. In the second one, only one file will be
% created, but you can handle 'local' history files easily (see
% \var{history_local_save} to know how to do it).
%\seealso{history_save, history_local_save, minued_mode}
%\seealso{History_File}
%!%-
define history_load ()
{
% First look at the current working directory
variable fp = fopen (path_concat (getcwd (), path_basename (History_File)),
"r");
% If this didn't work, try using History_File.
if (fp == NULL)
fp = fopen (History_File, "r");
if (fp == NULL)
return;
variable lines = fgetslines (fp);
if (lines == NULL)
return;
% remove trailing newline
lines = array_map (String_Type, &strtrim_end, lines, "\n");
if (length (lines) > 1)
mini_set_lines (lines[[1:]]);
}
%!%+
%\function{history_save}
%\synopsis{history_save}
%\usage{Int_Type history_save ()}
%\description
% This function saves the contents of the mini-buffer (see \var{history_load}
% for more information) to the file specified by the variable \var{History_File}
% or to the local history file (see \var{history_local_save} for more
% information). It returns -1 upon failure, or 0 upon success.
%\notes
% When history.sl is loaded, \var{history_save} will automatically get attached
% to the editors exit hooks. As a result, it is really not necessary to call
% this function directly.
%\seealso{history_load, history_local_save}
%\seealso{History_File}
%!%-
define history_save ()
{
variable lines = mini_get_lines (NULL), not_blank;
variable fp = NULL, file, st;
if (_NARGS)
{
file = ();
fp = fopen (file, "w");
if (fp == NULL)
{
verror ("Unable to open `%s' for writing.", file);
return -1;
}
}
else
{
file = path_concat (getcwd (), path_basename (History_File));
st = stat_file (file);
if (st != NULL)
fp = fopen (file, "w");
if (fp == NULL)
{
file = History_File;
fp = fopen (file, "w");
if (fp == NULL)
{
verror ("Unable to open `%s' for writing.", file);
return -1;
}
}
}
() = chmod (file, 0600);
() = fprintf (fp, "%% JED: File generated by 'history_save' on %s\n", time ());
not_blank = where (array_map (Integer_Type, &strlen, lines) > 0);
foreach (lines [not_blank])
{
variable line = ();
() = fprintf (fp, "%s\n", line);
}
return 0;
}
%!%+
%\function{history_local_save}
%\synopsis{history_local_save}
%\usage{Void_Type history_local_save ()}
%\description
% This function saves the contents of the mini-buffer at some arbitrary file.
% If you give the same filename as in \var{History_File} but use a different
% path, then \var{history_load} will load this file into the mini-buffer every
% time you start jed from that (and only from that) directory. This behavior is
% only useful when the value of \var{History_File} is an absoulte filename
% and you want a local history when you start jed from some specific directory.
%\seealso{history_load, history_save}
%\seealso{History_File}
%!%-
define history_local_save ()
{
variable file, st;
file = read_with_completion ("Save local history as:", "",
path_basename (History_File),
'f');
st = stat_file (file);
if (st != NULL)
{
variable yn = get_y_or_n ("File `" + file + "' already exists, overwrite it");
if (yn <= 0)
error ("history_local_save canceled.");
}
!if (history_save (file))
flush (sprintf ("History saved in '%s'", file));
}
private define save_history_at_exit ()
{
variable e;
try (e)
{
() = history_save ();
return 1;
}
catch AnyError:
{
beep ();
flush (sprintf ("Unable to save history: %S", e.message));
sleep (2);
return 1;
}
}
add_to_hook ("_jed_exit_hooks", &save_history_at_exit);
|