Thanks for the feedback, Allan.
On Aug 23, 2006, at 10:41 AM, Allan Odgaard wrote:
Probably better to grab the comment character from the start of the input. Otherwise there is a more full mapping in the “Continue Line Comment” snippet in the Source bundle.
Grabbing the start of the input works well, and it means setting the comment parameter based on what actually sits at the beginning of the comment scope, so that it will catch "%comment" or "% comment" or "%% comment". Nice.
The line can be:
text = `ruby "#{ENV["TM_SUPPORT_PATH"]}/bin/rubywrap.rb" #{flags}`
Here's where I go "huh." That works, but 1) I don't at all get how the input is passed to the command; and 2) if I call on STDIN.read prior to this line (by using it to get the beginning of the input), then that line fails to get any input, and I have to manually pipe the text back into it. What's happening there?
I also added a gsub to the command because it was eating latex math and R symbols ($). There's probably a better solution to that.
Likely because of the Insert as Snippet -- but the e_sn should take care of that.
I am however not sure inserting as snippet is ideal -- I reckon this was to preserve the indent, but maybe better to Replace Text and have the command indent properly.
Excellent -- thanks for pointing out what e_as was doing. When inserting as a snippet, e_sn does the job, and replacing the text instead of inserting as snippet also works, though you're right that it doesn't re-indent before the comment.
Here's what I have now: --- #!/usr/bin/env ruby
$LOAD_PATH << "#{ENV["TM_SUPPORT_PATH"]}/lib" require "escape"
ctext = STDIN.read cs = ctext.split(/\s/,1) cs[0] =~ /(^[%#/-]+\s*)/ cstring = $1
flags = "" flags += " -p "#{cstring}" " flags += " --retabify" if ENV["TM_SOFT_TABS"] == "NO"
text =`echo -n "#{e_sn(ctext)}" | ruby "#{ENV["TM_SUPPORT_PATH"]}/bin/ rubywrap.rb" #{flags}`
print text ---
-Alan