MathGroup Archive 2002

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Full text of the current warning message(s)

  • To: mathgroup at smc.vnet.net
  • Subject: [mg33537] Re: Full text of the current warning message(s)
  • From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
  • Date: Fri, 29 Mar 2002 06:13:28 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Back to Vladimir Bondarenko's  desire to see the full text of messages from
a specific  In[]  line.  My last solution to solve this is provided below. 

(* ******************* *)

Unprotect[Message];
MyMessageList[_Integer]:= Hold[];
$ModifyMessage=True;

Message[name_,args__]/;$ModifyMessage:=
  Block[{$ModifyMessage},
    (*  If the message isn't Off it will be displayed due to evaluating the
begining of the If statement.  *)
 
If[(Message[name,args]=!=$Off[])&&(Count[MyMessageList[$Line],Unevaluated[na
me],-1]<3),
      If[ MyMessageList[$Line]===Hold[],          
        MyMessageList[$Line]=Hold[Message[name,args];],          
        (* else *)
        MyMessageList[$Line]=
 
Insert[MyMessageList[$Line],Unevaluated[Message[name,args]],{1,-2}]
      ];
    ]
  ]

Protect[Message];


FullMessageList[n_]:=
 Module[{s1,s2,s3,posn,TempHold1,TempHold2,result},
    Attributes[HoldTemp1]=Attributes[HoldTemp2]={HoldAll};
    s1=MyMessageList[n]/.m_MessageName:>HoldTemp1[m];
    s2=Apply[HoldTemp1,MessageList[n],1,Heads->False];
    s3=Map[{#,Count[s2,#]}&,Union[s2],Heads->False];
    posn=Apply[Position[s1,#1,-1,#2]&,s3,1,Heads->True];
    posn=Map[Drop[#,-1]&,Flatten[posn,1],Heads->False];
    result=Extract[MyMessageList[n]/.Message->HoldTemp2,Sort[posn] ];
    result=Apply[Hold,result ,Heads->False];
    result=Apply[HoldForm, {result}/.HoldTemp2->Message, Heads->False];
    Part[result,1,0]=CompoundExpression;
    result
 ]


  (*  ***********************************  *)
But Vladimir noted that, in the example below FullMessageList[6] doesn't
correctly report the messages.


In[6]:=
   Integrate[ArcTan[1-Sqrt[1-z^(-1)]],{z,-1,1}];

   (* Several messages posted but not shown here. *)


In[7]:=
   FullMessageList[6]

Out[7]
   Message[$MaxExtraPrecision::meprec, 
     -9-(82*(41-8*Sqrt[34]))/55+(41-8*Sqrt[34])^2/55, 50.];
   Message[$MaxExtraPrecision::meprec, 
     -9-(82*(41-8*Sqrt[34]))/55+(41-8*Sqrt[34])^2/55, 50.];
   Message[$MaxExtraPrecision::meprec, 
     -9-(82*(41-8*Sqrt[34]))/55+(41-8*Sqrt[34])^2/55, 50.]


The next line shows all calls we had to
Message[$MaxExtraPrecision::meprec,__]   
with the change  Message->Hold  to prevent messages from evaluating.
Included in the result are messages that were displayed and some spurious
messages with the MessageName ($MaxExtraPrecision::meprec).  It turns out
the first three messages below were spurious messages, and they are the ones
we get from FullMessageList[6]. 


In[7]:=
   Cases[ (MyMessageList[6]/. Message->Hold),
Hold[$MaxExtraPrecision::"meprec",__],  -1]

Out[7]=
   (* Long output not displayed  *)  


I was puzzled as to why messages are evaluated, but not displayed even
though they are On. I wanted to see if I could find an undocumented feature
that causes messages to be supressed some of the time, so I looked into some
of the contexts returned after evaluating Contexts[].  That lead me to the
following feature which might provide a solution to the problem above.
However, I wasn't able to figure out how it's used, and it has no
documentation. Also it might be possible to solve the problem above with a
($MessagePrePrint) setting, but I couldn't get it working. It seems help
from Wolrfram Research is needed to get this working any better .... and I
thought I wrote a robust program.


In[8]:=
  ??Internal`DeactivateMessages


     Internal`DeactivateMessages

     Attributes[Internal`DeactivateMessages] = {HoldAll, Protected}


------------------------------
What we are trying to do here should be a built-in feature!
 
Regards,
   Ted Ersek
  


  • Prev by Date: Re: What's going on here??
  • Next by Date: Re: Re: Re: Full text of the current warning message(s)
  • Previous by thread: Re:Full text of the current warning message(s)
  • Next by thread: Re: Re: Re: Full text of the current warning message(s)