From a284660490f69f9525d8762d9626918b621a05d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Thu, 30 Jun 2016 02:42:23 +0200 Subject: [PATCH] FUEL: makes accessors and tuple slots with backslashes highlight correctly --- misc/fuel/factor-mode.el | 10 ++++++---- misc/fuel/strange-syntax.factor | 24 +++++++++++++++++++++--- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/misc/fuel/factor-mode.el b/misc/fuel/factor-mode.el index 3610afe2d22..ecde6c1ae9a 100644 --- a/misc/fuel/factor-mode.el +++ b/misc/fuel/factor-mode.el @@ -183,7 +183,8 @@ these lines in your .emacs: ;;; Regexps galore: ;; Utility regexp used by other regexps to match a Factor symbol name -(setq-local symbol "\\(\\(?:\\sw\\|\\s_\\|\\s(\\|\\s)\\|\\s\\\\)+\\)") +(setq-local symbol-nc "\\(?:\\sw\\|\\s_\\|\\s(\\|\\s)\\|\\s\\\\)+") +(setq-local symbol (format "\\(%s\\)" symbol-nc)) (setq-local ws+ "[ \n\t]+") (setq-local symbols-to-semicolon "\\([^;\t]*\\)\\(;\\)") @@ -320,10 +321,10 @@ these lines in your .emacs: (one-symbol "<[^ >]+>")) (defconst factor-getter-regex - (one-symbol "\\(?:\\sw\\|\\s_\\)+>>")) + (one-symbol (concat symbol-nc ">>"))) (defconst factor-setter-regex - (one-symbol ">>\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+<<")) + (one-symbol (format ">>%s\\|%s<<" symbol-nc symbol-nc))) (defconst factor-stack-effect-regex "\\( ( [^)]* )\\)\\|\\( (( [^)]* ))\\)") @@ -502,7 +503,8 @@ these lines in your .emacs: (4 'factor-font-lock-type-name nil t) ;; A slot is either a single symbol or a sequence along the ;; lines: { foo initial: "bar } - ("\\(\\(?:\\sw\\|\\s_\\)+\\)\\|\\(?:{[ \n]+\\(\\(?:\\sw\\|\\s_\\)+\\)[^}]+\\)" + (,(format + "\\(?:{[ \n]+%s[^}]+\\)}\\|%s" symbol symbol) (factor-find-end-of-def) nil (1 'factor-font-lock-symbol nil t) diff --git a/misc/fuel/strange-syntax.factor b/misc/fuel/strange-syntax.factor index c527c49b1f3..7a13ffd681f 100644 --- a/misc/fuel/strange-syntax.factor +++ b/misc/fuel/strange-syntax.factor @@ -1,3 +1,8 @@ +USING: accessors ; +IN: strange + +TUPLE: oh\no { and/again initial: "meh" } ; + ! FUEL Syntax Demo ! ! The purpose of this file is to test that corner cases are @@ -18,12 +23,21 @@ TUPLE: a-tuple slot1 slot2 { slot3 integer } ; ! ! Symbol names +TUPLE: tup + ko + get\it + { eh\ integer } + { oh'ho } ; + ! All slashes are symbol constituents. -: hack/slash ( -- x ) 10 ; +: hack/slash ( t -- x ) ko>> ; -: slash\hack ( -- y ) 20 ; +: um ( x y -- ) get\it<< ; -TUPLE: oh\no ; +: slash\hack ( m -- y ) + get\it>> dup >>get\it ; + +TUPLE: oh\no { and/again initial: "meh" } ; ! As are quotes : don't-do-that ( x -- y ) ; @@ -56,3 +70,7 @@ ID-SYNTAX ID-SYNTAX ! ! Numbers { -55 -0x10 100,00 1,000,000 0x2000,0000 0b01 } drop + +! ! Containers +V{ 1 2 3 } drop +HS{ 9 8 3 } drop