3e42042d165f0ee4e2d92ddd55537a655e68e3e6
[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.1-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     nams=nams(1:$-p+1);mem=mem(1:$-p+1);
18     //modifiable system variables
19     excluded=["demolist","%helps","%helps_modules","home","who_user", "%__bPrint__"];
20     ke=grep(nams,excluded)
21     nams(ke)=[];mem(ke)=[];
22     ret = nams
23
24     [%_lhs, %_rhs] = argn();
25
26     if %_rhs == 0 then
27         %__bPrint__ = %t;
28     end
29
30     if %__bPrint__ == %f then
31         return;
32     end
33
34     n=size(nams,1);
35
36     if n==0 then
37         return
38     end
39
40     //format names on n*10 characters
41     ll=length(nams)+2;m=int((ll-1)/10)+1;
42     for k=1:max(m)
43         ks=find(m==k);
44         if ks<>[] then
45             nams(ks)=part(nams(ks),1:(k*10));
46         end
47     end
48
49     nlc=lines(); nc=nlc(1)//window sizes
50
51     txt=[]
52
53     k=1
54     while k<=n
55         m=find(cumsum(length(nams(k:$)))<nc);
56         m=m($)
57         txt=[txt;strcat(nams(k:k-1+m))];
58         k=k+m;
59     end
60
61     txt=[gettext("User variables are:");
62     "";
63     txt;
64     "";
65     msprintf(gettext("Using %s elements"),string(sum(mem)))]
66     write(%io(2),txt,"(1x,a)")
67 endfunction