save function can save environment in sod format
[scilab.git] / scilab / modules / core / macros / who_user.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 // Copyright (C) 2012 - Scilab Enterprises - Antoine ELIAS
4 // 
5 // This file must be used under the terms of the CeCILL.
6 // This source file is licensed as described in the file COPYING, which
7 // you should have received as part of this distribution.  The terms
8 // are also available at    
9 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10
11 //2012/08/06 add return value with variable list.
12
13 function ret = who_user(%__bPrint__)
14     //get user variables
15     [nams,mem]=who('get'); //get all variables
16     p=predef(); //number of system variable
17     st=stacksize()
18     nams=nams(1:$-p+1);mem=mem(1:$-p+1);
19     //modifiable system variables
20     excluded=['demolist','%helps','%helps_modules','home','who_user', "%__bPrint__"];
21     ke=grep(nams,excluded)
22     nams(ke)=[];mem(ke)=[];
23     ret = nams
24
25     [%_lhs, %_rhs] = argn();
26
27     if %_rhs == 0 then
28         %__bPrint__ = %t;
29     end
30
31     if %__bPrint__ == %f then
32         return;
33     end
34
35     n=size(nams,1);
36     
37     if n==0 then 
38         return
39     end
40
41     //format names on n*10 characters
42     ll=length(nams)+2;m=int((ll-1)/10)+1;
43     for k=1:max(m)
44         ks=find(m==k);
45         if ks<>[] then
46             nams(ks)=part(nams(ks),1:(k*10));
47         end
48     end
49
50     nlc=lines(); nc=nlc(1)//window sizes
51
52     txt=[]
53
54     k=1
55     while k<=n
56         m=find(cumsum(length(nams(k:$)))<nc);
57         m=m($)
58         txt=[txt;strcat(nams(k:k-1+m))];
59         k=k+m;
60     end
61
62     txt=[gettext("User variables are:");
63         '';
64         txt;
65         '';
66         msprintf(gettext("Using %s elements out of %s"),string(sum(mem)), string(st(1)-(st(2)-sum(mem))))]
67     write(%io(2),txt,'(1x,a)')
68 endfunction