TextMate toggle comment macro is broken

2019-02-09 15:53发布

问题:

My laptop crashed and when it rebooted, "cmd /" (toggle comment) was broken. When I try to toggle comments on a line that only contains "foo", I get this output in my code instead of "# foo":

/tmp/temp_textmate.2erfLj:68:in /bin/bash: -c: line 0: unexpected EOF while looking for matching '' /bin/bash: -c: line 1: syntax error: unexpected end of filemap' for " foo":String (NoMethodError) from /tmp/temp_textmate.2erfLj:48:in /bin/bash: -c: line 0: unexpected EOF while looking for matching'' /bin/bash: -c: line 2: syntax error: unexpected end of file'

This is driving me nuts

回答1:

I had this same problem. Reinstalling TextMate seems to have solved the problem.

This problem appeared after migrating from one Mac to another. I'm not sure if thats the cause though. They where both MacBook Pro's running snow leopard.



回答2:

Matt Hayes' answer pointed me to the trouble spot.

Bundles -> Bundle Editor -> Edit Commands --> Source --> Comment Line / Selection

change line 139:

- lines = text.to_a
+ lines = text.split(/$/).map(&:chomp)

#to_a is no longer a string method.

http://ruby-doc.org/core-1.9.3/String.html



回答3:

I ran into the same issue and figured out a workaround. Reinstalling TextMate did not help in my case.

Bundles -> Bundle Editor -> Edit Commands --> Source --> Comment Line / Selection

At the top of the script you should see this:

#!/usr/bin/env ruby

I changed this to use another installation of Ruby. In my case I'm using RVM to manage different Ruby versions, so I have:

#!/Users/_username_/.rvm/rubies/ruby-1.8.7-p334/bin/ruby

So it seems something got screwed up with the default system Ruby.



回答4:

If you're using ruby 2.0 or you recently upgraded to Mavericks (system ruby in Mavericks is now 2.0), edit abovementioned command and add "-Ku" to the first line, like so: #!/usr/bin/env ruby -Ku

Worked for me.