7

是否有适用于 MacOS X 的支持 HTML5 文档格式的编辑器或捆绑包?在画布等较新的标签上整理错误。

4

6 回答 6

3

这个问题讨论了如何让 Tidy 与 HTML5 一起工作;调整 TextMate 包的命令行以使用这些参数应该可以工作。

于 2011-01-22T21:46:44.130 回答
2

通过使用此问题中找到的信息,我设法将 HTML5 Tidy 添加到 TextMate 。Tidy 似乎不接受自定义字符串作为 DocType,所以我使用 TextMate 宏插入一个有效的。可能有一种更优雅的方法可以做到这一点,但它可以完成工作!

首先,我们需要为 Tidy 创建一个与 HTML5 配合得很好的 TextMate 命令。从 Bundles 菜单访问“Bundle Editor”,并创建一个包含以下内容的新命令:

#!/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?("</pre>")
  end
end

将此命令命名为“HTML5 Tidy”。将范围选择设置为“text.html”。稍后我们将设置一个键盘快捷键。请注意,“doctype”开关已设置为“omit”,这将完全删除 DocType 声明。

然后,您需要使用以下操作从 Bundles 菜单录制宏:

  • 选择刚刚创建的“HTML5 Tidy”命令
  • 按 CMD+Up 移动到文档的开头
  • 打字<!DOCTYPE html>
  • 插入新行

选择“Save Last Recording”菜单项来存储宏。将其命名为适当的名称,例如“HTML5 Tidy + DocType”,并将其范围设置为“text.html”。然后,您可以使用“等效键”输入为已完成的宏分配键盘快捷键。

这应该允许您在 HTML5 文档上使用 Tidy 而不会出现任何问题。

于 2011-03-03T19:08:28.120 回答
1

不要使用 textmate 捆绑包,但恐慌的 coda 怎么样?www.panic.com/coda

于 2011-01-22T20:43:03.827 回答
1

John Muhl 的 html5 包 - https://github.com/johnmuhl/html5.tmbundle

于 2011-01-23T10:36:08.377 回答
0

Textmate 有一个捆绑包,可以根据 W3C 验证器进行验证 - http://validator.w3.org/

于 2011-01-22T21:21:22.510 回答
0

我不得不说我不熟悉 TextMate 包,因为我个人不使用那个编辑器。尽管如此,我发现他们有一个公共的颠覆服务器,他们在其中保存不同的捆绑包。快速搜索并没有发现任何 HTML5 捆绑包。您可以在他们的网站上找到有关捆绑包的更多信息。

如果您想以开箱即用的方式在 HTML5 中创建 Web 内容,请查看Aloha Editor

于 2011-01-22T21:35:34.863 回答