[TxMt] Re: error messages - R-Bundle

Martin Batholdy batholdy at googlemail.com
Mon Feb 6 00:06:04 UTC 2012


Works for me, so far!
Thank you very much!


Unfortunately, "live updating" of print-messages is not working anymore, right?


So if you execute this:

library(audio)

for(i in 1:10) {
	
	wait(1.0)
	print(i)

}

… the print messages appear after the whole execution is finished and not after every iteration of the loop.



On 05.02.2012, at 15:20, Berend Hasselman wrote:

> 
> On 04-02-2012, at 18:16, Hans-Jörg Bibiko wrote:
> 
>> Hi,
>> 
>> maybe I found a fix for that issue (at least my test script now runs :) ):
>> 
>> The new R.tmbundle stuff I host at https://github.com/avian/r.tmbundle/
>> thus here the code which should be tested.
>> 
>> Please replace everything in between
>> 
>> STDOUT.sync = true {... and ...} STDOUT.flush
>> 
>> in file tmR.rb by:
>> 
>> STDOUT.sync = false
>> STDERR.sync = false
>> 
>> descriptors = [stdout, stderr]
>> descriptors.each { |fd| fd.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK) }
>> until descriptors.empty?
>> select(descriptors).shift.each do |io|
>>   begin
>>     str = io.readline
>>   rescue
>>     descriptors.delete io
>>     io.close
>>     break
>>   end
>>   if str.nil? or str.empty?
>>     descriptors.delete io
>>     io.close
>>   elsif io == stderr
>>     # just in case
>>     print hideStartMessageJS
>>     print %{<span style="color: red">#{esc str}</span>}
>>   elsif io == stdout
>>     print hideStartMessageJS
>>     str.each_line do |line|
>>       # line counter for top level source
>>       if line.include?("#{linecountermarker}")
>>         linecounter += 1
>>         line.sub!("#{linecountermarker}", '')
>>       end
>>       # check for a comment sign at the beginning of a line
>>       if line.match(/>\s*#/)
>>         print "<i><font color=blue>#{esc line.chomp}</font></i>\n"
>>       # check for a comment within a line - regexp should be improved yet!
>>       elsif m=line.match(/(.*?)(#[^"']*)$/)
>>         print esc(m[1]).gsub(/^(>|\+)/,'<a class="prompt" href="txmt://open?line='+linecounter.to_s+'">\1</a>')
>>         print "<i><font color=blue>#{esc(m[2]).chomp}</font></i>\n"
>>       # check for error messages
>>       elsif m=line.match(/(?i)^\s*(error|erreur|fehler|errore|erro)( |:)/)
>>         where = (isSelection) ? " of selection" : ""
>>         print "<span style='color: red'>#{esc str.gsub(%r{(?m).*?#{m[1]}},m[1]).chomp}<br /><i>RMate</i> stopped at <a href='txmt://open?line=#{linecounter}'>line #{linecounter-selectionlinestart}#{where}</a></span><br />".gsub(%r{source\("(.*?)"\)},'source("<a href="txmt://open?url=file://\1">\1</a>")')
>>         print "<hr noshade width='300' size='2' align='left' color=lightgrey>"
>>         break
>>       # check for warnings
>>       elsif line.match(/^\s*(Warning|Warning messages?|Message d.avis|Warnmeldung|Messaggio di avvertimento|Mensagem de aviso):/)
>>         print "<span style='color: gray'>#{esc line}</span>"
>>       # print line simply with hyperlinked prompt if given
>>       elsif line.match(/_\x8./)
>>         print "#{line.gsub(/_\x8(.)/,'<b>\1</b>')}"
>>       else
>>         print esc(line).gsub(/^[\x0-\x9]?(>|\+)/,'<a class="prompt" href="txmt://open?line='+linecounter.to_s+'">\1</a>')
>>       end
>>     end
>>   end
>> end
>> end
>> 
>> STDOUT.flush
>> 
>> Feedback is welcome :)
> 
> 
> I have been running quite a lot of scripts to see what happens now.
> No error messages have been issued by Ruby.
> 
> Thanks a lot  for finding a fix.
> 
> But to enlighten me/us: what was the cause?
> 
> Berend
> 
> 
> _______________________________________________
> textmate mailing list
> textmate at lists.macromates.com
> http://lists.macromates.com/listinfo/textmate



More information about the textmate mailing list