Мне удалось добавить HTML5 Tidy в TextMate, используя информацию из этого вопроса .Tidy, похоже, не принимает пользовательскую строку в качестве DocType, поэтому я использовал макрос TextMate для вставки допустимой.Вероятно, есть более элегантный способ сделать это, но он выполняет свою работу!
Для начала нам нужно создать команду TextMate для Tidy, которая прекрасно работает с HTML5.Войдите в «Редактор пакетов» из меню «Пакеты» и создайте новую команду, содержащую следующее:
<code>#!/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 omit \
--new-blocklevel-tags article,header,footer \
--new-inline-tags video,audio,canvas,ruby,rt,rp \
--break-before-br yes --vertical-space yes \
--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?("
») end end
Назовите эту команду как-нибудь в духе« HTML5 Tidy »Msgstr "Установите область видимости на" text.html ". Мы установим комбинацию клавиш в данный момент. Обратите внимание, что переключатель" doctype "был установлен на" пропуск ", что полностью удаляет объявление DocType.
Затем необходимо записать макрос из меню «Связки», выполнив следующие действия:
- Выбор команды «HTML5 Tidy», которую вы только что создали
- Для перемещения нажмите CMD + Upв начало документа
- Ввод
<!DOCTYPE html>
- Вставка новой строки
Выберите пункт меню «Сохранить последнюю запись» для сохранения макроса.это что-то подходящее, например, «HTML5 Tidy + DocType», и установите его область действия «text.html». Затем можно назначить сочетание клавиш для завершенного макроса с помощью ввода «Эквивалент клавиш».
Thisдолжен позволить вамиспользуйте Tidy для документов HTML5 без проблем.