File: home-lib.sl

package info (click to toggle)
jed-extra 2.5.7-2
  • links: PTS, VCS
  • area: main
  • in suites: buster, stretch
  • size: 2,972 kB
  • ctags: 2,490
  • sloc: makefile: 75; ruby: 43; sed: 38; sh: 31
file content (155 lines) | stat: -rw-r--r-- 5,679 bytes parent folder | download | duplicates (8)
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
% Extended support for a user-specific directory with private extensions
% 
% % Copyright (c) 2003 Gnter Milde and released under the terms 
% of the GNU General Public License (version 2 or later).
% 
% Versions
% 0.9    first public version
% 0.9.1  Jed_Highlight_Cache_Path += Jed_Home_Library;
% 0.9.2  cleanup of code and documentation + bugfix
%        custom_variable for Jed_Site_Library and Jed_Home_Library
% 0.9.3  documentation bugfix: "%!%" -> "%!%-"
% 0.9.4  outsourcing of the registration -> register_library(dir)
%        added custom_variable Jed_Debian_Library = ""
% 0.9.5  removed the adding of Jed_Home_Directory/doc/txt/libfuns.txt
%        to Jed_Doc_Files
%        removed Jed_Debian_Library and introduced Jed_Local_Library
%        (thanks to Dino Sangoi for a Windows default).
% 0.9.5  renamed register_library() to register_libdir()
% 2005-07-11
% 1.0    make the script less "aggresive", so it can be evaluated without
%        side-effects. 
%          * !! new way of invocation, see INITIALIZATION !!
%          * no automatic change of Jed_Home_Directory (do this in
%            the configuration file instead)
%          * do not change Default_Jedrc_Startup_File
%        * prepend (instead of append) <libdir>/colors to Color_Scheme_Path 
%          (report J. Sommer)
%          UNIX home-lib default without trailing "/"
% 1.1    2005-07-22 further code cleanup
% 	 shedding of the *_Library custom variables, added 
% 	 Jed_Local_Directory instead (in line with Jed_Home_Directory)
%
% FEATURES
% 
% the function register_libdir(path):
% 
%  * prepends path to the jed-library-path (searched for modes)
%  * sets Color_Scheme_, dfa-cache- and documentation- path
%  * evaluates (if existent) the file ini.sl in path
%    (ini.sl files can be autocreated by make_ini.sl)
%  
% Together with make-ini.sl, this provides a convenient way of extending
% jed with contributed or home-made scripts.
% 
% INITIALIZATION
% 
% Write in your .jedrc (or jed.rc on winDOS) e.g.
%   require("home-lib", "/FULL_PATH_TO/home-lib.sl");
%   register_libdir(path_concat(Jed_Local_Directory, "lib"));
%   register_libdir(path_concat(Jed_Home_Directory, "lib"));
        
% Jed_Home_Directory
% ------------------
%
% Jed_Home_Directory is defined in site.sl, defaulting to $HOME
% previous versions contained code to change this to ~/.jed/
% 
% With the code below in jed.conf (or defaults.sl), Jed looks for .jedrc 
% in "~/.jed/".
% 
%   % If Jed_Home_Directory/.jed/ exists, point Jed_Home_Directory there,
%   $1 = path_concat(Jed_Home_Directory, ".jed");
%   if(2 == file_status($1))
%     Jed_Home_Directory = $1; 
%
% Alternatively, place .jedrc in HOME and set there
%   Jed_Home_Directory = path_concat(Jed_Home_Directory, ".jed");
  

%!%+
%\variable{Jed_Local_Directory}
%\synopsis{Directory for local site-wide jed extensions}
%\description
%\description
%  The value of this variable specifies the systems local "jed directory"
%  where system-wide non-standard jed-related files are assumed to be found.
%  Normally, this corresponds to "/usr/local/share/jed" on UNIX and
%  "$ALLUSERSPROFILE\\$APPDATA\\Jedsoft\\JED" on Windows
%  unless an alternate directory is specified via the \var{JED_LOCAL} 
%  environment variable. 
%
%  As it is a custom_variable, it can be set/changed in defaults.sl, jed.conf,
%  and/or .jedrc, of course.  
%  
%  It is set to "" if the specified directory does not exist.
%\seealso{JED_ROOT, Jed_Home_Directory}
%!%-
custom_variable("Jed_Local_Directory", getenv("JED_LOCAL"));
if (Jed_Local_Directory == NULL) % no custom or environment var set
{
#ifdef IBMPC_SYSTEM
   $2 = getenv("ALLUSERSPROFILE");
   $3 = getenv("APPDATA");
   if ($2 == NULL or $3 == NULL)
     Jed_Local_Directory = "";
   else
     Jed_Local_Directory = path_concat(path_concat($2, path_basename($3)), 
                                     "Jedsoft\\JED");
#else
     Jed_Local_Directory = "/usr/local/share/jed";
#endif
}

if (file_status(Jed_Local_Directory) != 2) % no directory
  Jed_Local_Directory = "";


%!%+
%\function{register_libdir}
%\synopsis{Register a library dir for use by jed}
%\usage{register_libdir(path)}
%\description
%  * Prepend \var{path} to the library path
%  * Set \var{Color_Scheme_Path}, \var{Jed_Doc_Files},
%    \var{Jed_Highlight_Cache_Dir}, and \var{Jed_Highlight_Cache_Path}
%  * Evaluate (if existent) the file \var{ini.sl} in this library
%    to enable initialization (autoloads etc)
%\example
%#v+
%  register_libdir(path_concat(Jed_Local_Directory, "lib"));
%  register_libdir(path_concat(Jed_Home_Directory, "lib"));
%#v-
% will register the local and user-specific library-dir
%\seealso{make_ini, set_jed_library_path, Color_Scheme_Path, Jed_Doc_Files}
%\seealso{Jed_Highlight_Cache_Dir, Jed_Highlight_Cache_Path}
%!%-
define register_libdir(lib)
{
   % abort, if directory doesnot exist
   if (orelse{lib == ""}{2 != file_status(lib)}) 
     continue;
   
   variable path;
   % jed library path
   set_jed_library_path(lib + "," + get_jed_library_path());
   % colors
   path = path_concat(lib, "colors");
   if (2 == file_status(path))
     Color_Scheme_Path = path + "," + Color_Scheme_Path;
   % documentation
   path = path_concat(lib, "libfuns.txt");
   if (1 == file_status(path))
     Jed_Doc_Files = path + "," + Jed_Doc_Files;
   % dfa cache
#ifdef HAS_DFA_SYNTAX
   Jed_Highlight_Cache_Dir = lib;
   Jed_Highlight_Cache_Path = lib + "," + Jed_Highlight_Cache_Path;
#endif
   % Check for a file ini.sl containing initialization code
   % (e.g. autoload declarations) and evaluate it.
   path = path_concat(lib, "ini.sl");
   if (1 == file_status(path))
     () = evalfile(path);
}