Thanks Steve, but I'm not sure what to change in that code snippet, following is the full command source:
#!/usr/bin/env ruby -wKU
require ENV['TM_SUPPORT_PATH'] + '/lib/ui.rb' require ENV['TM_SUPPORT_PATH'] + '/lib/exit_codes.rb'
result = `"${TM_TIDY:-tidy}" -f /tmp/tm_tidy_errors -iq -utf8 \ -wrap 0 --tab-size $TM_TAB_SIZE --indent-spaces $TM_TAB_SIZE \ --indent yes \ ${TM_XHTML:+-asxhtml --output-xhtml yes} \ ${TM_SELECTED_TEXT:+--show-body-only yes} \ --enclose-text yes \ --doctype strict \ --wrap-php no \ --tidy-mark no` status = $?.exitstatus
at_exit { File.unlink('/tmp/tm_tidy_errors') } # Clean up error log
if status == 2 # Errors
msg = "Errors: " + File.read('/tmp/tm_tidy_errors') TextMate.exit_show_tool_tip msg
elsif status == 1 # Warnings - use output but also display notification with warnings
log = File.read('/tmp/tm_tidy_errors').to_a.select do |line| ! (ENV['TM_SELECTED_TEXT'] and (line.include?('Warning: missing <!DOCTYPE> declaration') or line.include?("Warning: inserting missing 'title' element"))) end.join rescue nil
unless log.empty? options = { :title => "Tidy Warnings", :summary => "Warnings for tidying your document (press escape to close):", :log => log } TextMate::UI.simple_notification(options) end
end
if ENV['TM_SOFT_TABS'] == "YES" print result else in_pre = false result.each_line do |line| unless in_pre tab_size = ENV["TM_TAB_SIZE"].to_i space, text = /( *)(.*)/m.match(line)[1..2] line = "\t" * (space.length / tab_size).floor + " " * (space.length % tab_size) + text end
print line
in_pre = true if line.include?("<pre>") in_pre = false if line.include?("</pre>") end end
Thanks for any help you can offer.
Steve King-8 wrote:
Ibrahim Ezzy wrote:
Not really. I manually indent where possible, but Tidy is required for tidying up someone else's files with hundreds of lines of code.
My solution to this sort of thing is to run Tidy, then follow up with a regex replacement. In your case I'd do something like...
Find: <li>\n\s*(.*)\n\s*</li> Replace: <li>$1</li>
This should pull out the newlines and extraneous spaces.
Kind of clumsy, but I suppose you could make a macro to do all this in one keystroke if you need to do the same thing frequently.
-- Steve King Sr. Software Engineer Arbor Networks +1 734 821 1461 www.arbornetworks.com http://www.arbornetworks.com/
textmate mailing list textmate@lists.macromates.com http://lists.macromates.com/listinfo/textmate