Syntax Highlight หลายภาษา

  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.
  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.

หลายคนอยากจะมี syntax highlight ไว้ใช้พอดีผมก็เป็นคนนึงที่อยากมีก็เลยไปค้นหามาได้จาก punneng และ taiko ครับก็เลยอยากจะมาบอกเล่ากันฟัง

ส่วนตัวของผมเองใช้ typo ที่มี syntax highlight อยู่แล้วแต่ว่าใช้โมดูลของ syntax ซึ่งมันทำได้แค่ 3 ภาษาคือ ruby, yaml, xml เท่านั้น แต่ก็อยากได้อีกก็เลยดิ้นรนหาต่อไปเจอ plugin ของ punneng ชื่อ jazzy แต่ว่าใช้กับ mephistro โดยใช้ ultraviolet ใช้ได้กว่า 50 ภาษา

เท่าที่ลองอ่าน code ของ ultraviolet นั้นมีระบบการเดา syntax ด้วยแต่ว่าเดาจากการใช้ extension พอเปลี่ยน extension ก็มีบั๊กหรือผิดไปเลย แต่ว่าการใช้งานถือว่าดีเยี่ยม

สรุป

Syntax

  • ข้อดี:

    1. ใช้ง่ายไม่ซับซ้อน
    2. ใช้ css ควบคุมทำให้เปลี่ยนสีได้ง่าย
    3. เร็วจี๊ด เพราะใช้ lexical analysis
  • ข้อเสีย:

    1. การ parse โดยใช้ lexical analysis เข้าใจยาก พัฒนาต่อต้องใช้เวลาศึกษา
    2. สนับสนุนภาษาน้อย

Ultraviolet

  • ข้อดี:

    1. ใช้ง่ายไม่ซับซ้อน
    2. ใช้ css ควบคุมทำให้เปลี่ยนสีได้ง่าย
    3. มีระบบ theme ให้เยอะ
    4. สนับสนุนหลายภาษา
    5. ใช้ engine textpow ที่ใช้ Oniguruma ทำเรื่อง regular expression
    6. พัฒนาต่อไม่ยาก
  • ข้อเสีย:

    1. dependency เยอะมาก ประมาณ 5
    2. ต้องระบุว่าจะ parse ภาษาอะไรเพราะทำ regular expression ตาม pattern ที่วางไว้แต่ละภาษา
    3. ระบบการเดาไวยกรณ์ใช้การเดาจาก extension

ถ้าจะให้ดีโดยการนำข้อดีทั้งสองมารวมก็ก็จะดีมาก คือการเอา lexical analysis มาทำการเดาไวยกรณ์ให้ untraviolet

ถ้าใครมีอันอื่นอีกก็ดี เผื่อเป็นตัวเลือก

ผมเคยใช้แต่ syntax นะ
ข้อดีของมันก็คือ นั่งเขียน Tokenizer เองก็ทำให้เราฟื้นความรู้เรื่อง lexical ไปในตัว : )
(แต่อาจจะทำมาหากินไม่ทัน)
ตอนผมเอามาใช้ รู้สึกจะนั่งเขียน java กับ perl tokenizer เพิ่ม

ตัว ultraviolet ฟังดูแล้วน่าสนใจดีนะ
reuse config file จาก textmate ด้วย
ไม่ต้องเสียเวลาทำมาหากิน
(เสียเวลา install แทน)

taiko_gogo's picture

ผมเกือบเอา syntax มาเขียนต่อสำหรับ js/htmlแล้วครับ
เห็นด้วยกับพี่ป๊อกเรื่องเป็นการฟื้นความรู้ไปในตัว
ตอนเอา code ของ syntax มาอ่านผมก็นึกถึงตอนเรียน compiler
เห็นเป็นเงาอาจารย์ลอยขึ้นมาเขกหัวด่าว่าทำไมไม่ตั้งใจเรียน(ฮา)
แต่จนแล้วจนรอดผมก็ไม่ได้ใช syntax เพราะปัญหาเรื่องเวลาอย่างที่ว่า

ถ้าผมใช้ mephisto ผมจะไปพึ่ง plugin jazzy ที่พี่เหน่งเขียนเต็มที่เลย

ทางเลือกอีกทาง
http://www.andre-simon.de/zip/download.html
เป็นโปรแกรมที่ให้เรายัด fileไป แล้วมันจะ gen เป็น html code แบบพร้อมแปะ
ผมก็ใช้ตัวนี้ ง่ายดี แต่มีข้อเสียนิดนึงกับ ruby (เท่าที่เห็น)
คือ มันแยกได้แค่ class variable ( พอเจอ @@varname เข้าไป
มันจะ hightlight @ ตัวแรกเป็นอีกสีนึง)

khao_lek's picture

ผมนะนำตัวหนึ่งครับคือ
notepad2
ใช้งานได้หลากหลายภาษาโปรแกรม
สนับสุนนภาษาไทย
สามารถให้มีการแสดง tab ให้ด้วย
หรือจะให้แสดงจำนวนการ spance ได้ด้วย
มีทั้งหน้าจอพื้นขาว และพื้นดำให้เลือกตามความถนัด

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น