Merge branch 'master' into new_ui
commit
577fde6e91
|
@ -302,6 +302,8 @@ IN: regexp-tests
|
|||
[ "1.2.3.4" ]
|
||||
[ "1ABC2DEF3GHI4JK" R/ [A-Z]+/ "." re-replace ] unit-test
|
||||
|
||||
[ "-- title --" ] [ "== title ==" "=" <regexp> "-" re-replace ] unit-test
|
||||
|
||||
/*
|
||||
! FIXME
|
||||
[ f ] [ "ab" "a(?!b)" <regexp> first-match ] unit-test
|
||||
|
|
167
misc/fuel/README
167
misc/fuel/README
|
@ -1,4 +1,4 @@
|
|||
FUEL, Factor's Ultimate Emacs Library -*- org -*-
|
||||
FUEL, Factor's Ultimate Emacs Library
|
||||
-------------------------------------
|
||||
|
||||
FUEL provides a complete environment for your Factor coding pleasure
|
||||
|
@ -59,8 +59,7 @@ beast.
|
|||
If you prefer to start Factor externally, you can also connect
|
||||
remotely from Emacs. Here's how to proceed:
|
||||
|
||||
- In the factor listener, run FUEL:
|
||||
"fuel" run
|
||||
- In the factor listener, run FUEL: "fuel" run
|
||||
This will start a server listener in port 9000.
|
||||
- Switch to Emacs and issue the command 'M-x connect-to-factor'.
|
||||
|
||||
|
@ -69,7 +68,7 @@ beast.
|
|||
|
||||
*** Vocabulary creation
|
||||
|
||||
FUEL offers a basic interface with Factor's scaffolding utilities.
|
||||
FUEL offers a basic interface to Factor's scaffolding utilities.
|
||||
To create a new vocabulary directory and associated files:
|
||||
|
||||
M-x fuel-scaffold-vocab
|
||||
|
@ -81,91 +80,107 @@ beast.
|
|||
|
||||
* Quick key reference
|
||||
|
||||
(Triple chords ending in a single letter <x> accept also C-<x> (e.g.
|
||||
C-cC-eC-r is the same as C-cC-er)).
|
||||
Triple chords ending in a single letter <x> accept also C-<x> (e.g.
|
||||
C-cC-eC-r is the same as C-cC-er).
|
||||
|
||||
*** In factor source files:
|
||||
|
||||
- C-cz : switch to listener
|
||||
- C-co : cycle between code, tests and docs factor files
|
||||
- C-cs : switch to other factor buffer (M-x fuel-switch-to-buffer)
|
||||
- C-cr : switch to listener and refresh all loaded vocabs
|
||||
- C-x4s : switch to other factor buffer in other window
|
||||
- C-x5s : switch to other factor buffer in other frame
|
||||
Commands in parenthesis can be invoked interactively with
|
||||
M-x <command>, not necessarily in a factor buffer.
|
||||
|
||||
- M-. : edit word at point in Emacs (see fuel-edit-word-method custom var)
|
||||
- M-, : go back to where M-. was last invoked
|
||||
- M-TAB : complete word at point
|
||||
- C-cC-eu : update USING: line
|
||||
- C-cC-ev : edit vocabulary (M-x fuel-edit-vocabulary)
|
||||
- C-cC-ew : edit word (M-x fuel-edit-word-at-point)
|
||||
- C-cC-ed : edit word's doc (M-x fuel-edit-word-at-point)
|
||||
|
||||
- C-cC-er : eval region
|
||||
- C-M-r, C-cC-ee : eval region, extending it to definition boundaries
|
||||
- C-M-x, C-cC-ex : eval definition around point
|
||||
- C-ck, C-cC-ek : run file
|
||||
|
||||
- C-cC-da : toggle autodoc mode
|
||||
- C-cC-dd : help for word at point
|
||||
- C-cC-ds : short help word at point
|
||||
- C-cC-de : show stack effect of current sexp (with prefix, region)
|
||||
- C-cC-dp : find words containing given substring (M-x fuel-apropos)
|
||||
- C-cC-dv : show words in current file (with prefix, ask for vocab)
|
||||
|
||||
- C-cM-<, C-cC-d< : show callers of word or vocabulary at point
|
||||
(M-x fuel-show-callers, M-x fuel-vocab-usage)
|
||||
- C-cM->, C-cC-d> : show callees of word or vocabulary at point
|
||||
(M-x fuel-show-callees, M-x fuel-vocab-uses)
|
||||
|
||||
- C-cC-xs : extract innermost sexp (up to point) as a separate word
|
||||
- C-cC-xr : extract region as a separate word
|
||||
- C-cC-xi : replace word at point by its definition
|
||||
- C-cC-xv : extract region as a separate vocabulary
|
||||
- C-cC-xw : rename all uses of a word
|
||||
|-----------------+------------------------------------------------------------|
|
||||
| C-cz | switch to listener (run-factor) |
|
||||
| C-co | cycle between code, tests and docs files |
|
||||
| C-cr | switch to listener and refresh all loaded vocabs |
|
||||
| C-cs | switch to other factor buffer (fuel-switch-to-buffer) |
|
||||
| C-x4s | switch to other factor buffer in other window |
|
||||
| C-x5s | switch to other factor buffer in other frame |
|
||||
|-----------------+------------------------------------------------------------|
|
||||
| M-. | edit word at point in Emacs (fuel-edit-word) |
|
||||
| M-, | go back to where M-. was last invoked |
|
||||
| M-TAB | complete word at point |
|
||||
| C-cC-eu | update USING: line (fuel-update-usings) |
|
||||
| C-cC-ev | edit vocabulary (fuel-edit-vocabulary) |
|
||||
| C-cC-ew | edit word (fuel-edit-word-at-point) |
|
||||
| C-cC-ed | edit word's doc (C-u M-x fuel-edit-word-doc-at-point) |
|
||||
|-----------------+------------------------------------------------------------|
|
||||
| C-cC-er | eval region |
|
||||
| C-M-r, C-cC-ee | eval region, extending it to definition boundaries |
|
||||
| C-M-x, C-cC-ex | eval definition around point |
|
||||
| C-ck, C-cC-ek | run file (fuel-run-file) |
|
||||
|-----------------+------------------------------------------------------------|
|
||||
| C-cC-da | toggle autodoc mode (fuel-autodoc-mode) |
|
||||
| C-cC-dd | help for word at point (fuel-help) |
|
||||
| C-cC-ds | short help word at point (fuel-help-short) |
|
||||
| C-cC-de | show stack effect of current sexp (with prefix, region) |
|
||||
| C-cC-dp | find words containing given substring (fuel-apropos) |
|
||||
| C-cC-dv | show words in current file (with prefix, ask for vocab) |
|
||||
|-----------------+------------------------------------------------------------|
|
||||
| C-cM-<, C-cC-d< | show callers of word or vocabulary at point |
|
||||
| | (fuel-show-callers, fuel-vocab-usage) |
|
||||
| C-cM->, C-cC-d> | show callees of word or vocabulary at point |
|
||||
| | (fuel-show-callees, fuel-vocab-uses) |
|
||||
|-----------------+------------------------------------------------------------|
|
||||
| C-cC-xs | extract innermost sexp (up to point) as a separate word |
|
||||
| | (fuel-refactor-extract-sexp) |
|
||||
| C-cC-xr | extract region as a separate word |
|
||||
| | (fuel-refactor-extract-region) |
|
||||
| C-cC-xv | extract region as a separate vocabulary |
|
||||
| | (fuel-refactor-extract-vocab) |
|
||||
| C-cC-xi | replace word by its definition (fuel-refactor-inline-word) |
|
||||
| C-cC-xw | rename all uses of a word (fuel-refactor-rename-word) |
|
||||
|-----------------+------------------------------------------------------------|
|
||||
|
||||
*** In the listener:
|
||||
|
||||
- TAB : complete word at point
|
||||
- M-. : edit word at point in Emacs
|
||||
- C-cr : refresh all loaded vocabs
|
||||
- C-ca : toggle autodoc mode
|
||||
- C-cp : find words containing given substring (M-x fuel-apropos)
|
||||
- C-cs : toggle stack mode
|
||||
- C-cv : edit vocabulary
|
||||
- C-ch : help for word at point
|
||||
- C-ck : run file
|
||||
|------+----------------------------------------------------------|
|
||||
| TAB | complete word at point |
|
||||
| M-. | edit word at point in Emacs |
|
||||
| C-cr | refresh all loaded vocabs |
|
||||
| C-ca | toggle autodoc mode |
|
||||
| C-cp | find words containing given substring (M-x fuel-apropos) |
|
||||
| C-cs | toggle stack mode |
|
||||
| C-cv | edit vocabulary |
|
||||
| C-ch | help for word at point |
|
||||
| C-ck | run file |
|
||||
|------+----------------------------------------------------------|
|
||||
|
||||
*** In the debugger (it pops up upon eval/compilation errors):
|
||||
|
||||
- g : go to error
|
||||
- <digit> : invoke nth restart
|
||||
- w/e/l : invoke :warnings, :errors, :linkage
|
||||
- q : bury buffer
|
||||
|---------+-------------------------------------|
|
||||
| g | go to error |
|
||||
| <digit> | invoke nth restart |
|
||||
| w/e/l | invoke :warnings, :errors, :linkage |
|
||||
| q | bury buffer |
|
||||
|---------+-------------------------------------|
|
||||
|
||||
*** In the help browser:
|
||||
|
||||
- h : help for word at point
|
||||
- v : help for a vocabulary
|
||||
- a : find words containing given substring (M-x fuel-apropos)
|
||||
- e : edit current article
|
||||
- ba : bookmark current page
|
||||
- bb : display bookmarks
|
||||
- bd : delete bookmark at point
|
||||
- n/p : next/previous page
|
||||
- l : previous page
|
||||
- SPC/S-SPC : scroll up/down
|
||||
- TAB/S-TAB : next/previous link
|
||||
- k : kill current page and go to previous or next
|
||||
- r : refresh page
|
||||
- c : clean browsing history
|
||||
- M-. : edit word at point in Emacs
|
||||
- C-cz : switch to listener
|
||||
- q : bury buffer
|
||||
|-----------+----------------------------------------------------------|
|
||||
| h | help for word at point |
|
||||
| v | help for a vocabulary |
|
||||
| a | find words containing given substring (M-x fuel-apropos) |
|
||||
| e | edit current article |
|
||||
| ba | bookmark current page |
|
||||
| bb | display bookmarks |
|
||||
| bd | delete bookmark at point |
|
||||
| n/p | next/previous page |
|
||||
| l | previous page |
|
||||
| SPC/S-SPC | scroll up/down |
|
||||
| TAB/S-TAB | next/previous link |
|
||||
| k | kill current page and go to previous or next |
|
||||
| r | refresh page |
|
||||
| c | clean browsing history |
|
||||
| M-. | edit word at point in Emacs |
|
||||
| C-cz | switch to listener |
|
||||
| q | bury buffer |
|
||||
|-----------+----------------------------------------------------------|
|
||||
|
||||
*** In crossref buffers
|
||||
|
||||
- TAB/BACKTAB : navigate links
|
||||
- RET/mouse click : follow link
|
||||
- h : show help for word at point
|
||||
- q : bury buffer
|
||||
|-----------------+-----------------------------|
|
||||
| TAB/BACKTAB | navigate links |
|
||||
| RET/mouse click | follow link |
|
||||
| h | show help for word at point |
|
||||
| q | bury buffer |
|
||||
|-----------------+-----------------------------|
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
(case (car sexp)
|
||||
(:array (factor--seq 'V{ '} (cdr sexp)))
|
||||
(:seq (factor--seq '{ '} (cdr sexp)))
|
||||
(:tuple (factor--seq 'T{ '} (cdr sexp)))
|
||||
(:quote (format "\\ %s" (factor `(:factor ,(cadr sexp)))))
|
||||
(:quotation (factor--seq '\[ '\] (cdr sexp)))
|
||||
(:using (factor `(USING: ,@(cdr sexp) :end)))
|
||||
|
|
|
@ -79,11 +79,15 @@
|
|||
(save-excursion
|
||||
(goto-char (nth 8 state))
|
||||
(beginning-of-line)
|
||||
(cond ((looking-at "USING: ") 'factor-font-lock-vocabulary-name)
|
||||
(cond ((looking-at "USING: ")
|
||||
'factor-font-lock-vocabulary-name)
|
||||
((looking-at "\\(TUPLE\\|SYMBOLS\\|VARS\\): ")
|
||||
'factor-font-lock-symbol)
|
||||
((looking-at "C-ENUM:\\( \\|\n\\)")
|
||||
'factor-font-lock-constant)
|
||||
(t 'default))))
|
||||
((char-equal c ?U) 'factor-font-lock-parsing-word)
|
||||
((or (char-equal c ?U) (char-equal c ?C))
|
||||
'factor-font-lock-parsing-word)
|
||||
((char-equal c ?\() 'factor-font-lock-stack-effect)
|
||||
((char-equal c ?\") 'factor-font-lock-string)
|
||||
(t 'factor-font-lock-comment)))))
|
||||
|
@ -91,6 +95,8 @@
|
|||
(defconst fuel-font-lock--font-lock-keywords
|
||||
`((,fuel-syntax--stack-effect-regex . 'factor-font-lock-stack-effect)
|
||||
(,fuel-syntax--brace-words-regex 1 'factor-font-lock-parsing-word)
|
||||
(,fuel-syntax--alien-function-regex (1 'factor-font-lock-type-name)
|
||||
(2 'factor-font-lock-word))
|
||||
(,fuel-syntax--vocab-ref-regexp 2 'factor-font-lock-vocabulary-name)
|
||||
(,fuel-syntax--constructor-decl-regex (1 'factor-font-lock-word)
|
||||
(2 'factor-font-lock-type-name)
|
||||
|
@ -119,7 +125,7 @@
|
|||
(,fuel-syntax--getter-regex . 'factor-font-lock-getter-word)
|
||||
(,fuel-syntax--symbol-definition-regex 2 'factor-font-lock-symbol)
|
||||
(,fuel-syntax--bad-string-regex . 'factor-font-lock-invalid-syntax)
|
||||
("\\(P\\|SBUF\\)\"" 1 'factor-font-lock-parsing-word)
|
||||
("\\_<\\(P\\|SBUF\\|DLL\\)\"" 1 'factor-font-lock-parsing-word)
|
||||
(,fuel-syntax--parsing-words-regex . 'factor-font-lock-parsing-word)))
|
||||
|
||||
(defun fuel-font-lock--font-lock-setup (&optional keywords no-syntax)
|
||||
|
|
|
@ -156,7 +156,7 @@
|
|||
(defvar fuel-markup--maybe-nl nil))
|
||||
|
||||
(defun fuel-markup--print (e)
|
||||
(cond ((null e))
|
||||
(cond ((null e) (insert "f"))
|
||||
((stringp e) (fuel-markup--insert-string e))
|
||||
((and (listp e) (symbolp (car e))
|
||||
(assoc (car e) fuel-markup--printers))
|
||||
|
@ -253,8 +253,12 @@
|
|||
(insert (cadr e))))
|
||||
|
||||
(defun fuel-markup--snippet (e)
|
||||
(let ((snip (format "%s" (cadr e))))
|
||||
(insert (fuel-font-lock--factor-str snip))))
|
||||
(insert (mapconcat '(lambda (s)
|
||||
(if (stringp s)
|
||||
(fuel-font-lock--factor-str s)
|
||||
(fuel-markup--print-str s)))
|
||||
(cdr e)
|
||||
" ")))
|
||||
|
||||
(defun fuel-markup--code (e)
|
||||
(fuel-markup--insert-nl-if-nb)
|
||||
|
@ -285,7 +289,7 @@
|
|||
(fuel-markup--snippet (cons '$snippet (cdr e))))
|
||||
|
||||
(defun fuel-markup--link (e)
|
||||
(let* ((link (nth 1 e))
|
||||
(let* ((link (or (nth 1 e) 'f))
|
||||
(type (or (nth 3 e) (if (symbolp link) 'word 'article)))
|
||||
(label (or (nth 2 e)
|
||||
(and (eq type 'article)
|
||||
|
|
|
@ -43,16 +43,17 @@
|
|||
;;; Regexps galore:
|
||||
|
||||
(defconst fuel-syntax--parsing-words
|
||||
'(":" "::" ";" "<<" "<PRIVATE" ">>"
|
||||
"ABOUT:" "ALIAS:" "ARTICLE:"
|
||||
'(":" "::" ";" "&:" "<<" "<PRIVATE" ">>"
|
||||
"ABOUT:" "ALIAS:" "ALIEN:" "ARTICLE:"
|
||||
"B" "BIN:"
|
||||
"C:" "C-STRUCT:" "C-UNION:" "CHAR:" "CONSTANT:" "call-next-method"
|
||||
"C:" "C-ENUM:" "C-STRUCT:" "C-UNION:" "CHAR:" "CONSTANT:" "call-next-method"
|
||||
"DEFER:"
|
||||
"ERROR:" "EXCLUDE:"
|
||||
"f" "FORGET:" "FROM:"
|
||||
"f" "FORGET:" "FROM:" "FUNCTION:"
|
||||
"GENERIC#" "GENERIC:"
|
||||
"HELP:" "HEX:" "HOOK:"
|
||||
"IN:" "initial:" "INSTANCE:" "INTERSECTION:"
|
||||
"LIBRARY:"
|
||||
"M:" "MACRO:" "MACRO::" "MAIN:" "MATH:" "MEMO:" "MEMO:" "METHOD:" "MIXIN:"
|
||||
"OCT:"
|
||||
"POSTPONE:" "PREDICATE:" "PRIMITIVE:" "PRIVATE>" "PROVIDE:"
|
||||
|
@ -117,10 +118,11 @@
|
|||
'("IN:" "USE:" "FROM:" "EXCLUDE:" "QUALIFIED:" "QUALIFIED-WITH:")))
|
||||
|
||||
(defconst fuel-syntax--int-constant-def-regex
|
||||
(fuel-syntax--second-word-regex '("CHAR:" "BIN:" "HEX:" "OCT:")))
|
||||
(fuel-syntax--second-word-regex '("ALIEN:" "CHAR:" "BIN:" "HEX:" "OCT:")))
|
||||
|
||||
(defconst fuel-syntax--type-definition-regex
|
||||
(fuel-syntax--second-word-regex '("MIXIN:" "TUPLE:" "SINGLETON:" "UNION:")))
|
||||
(fuel-syntax--second-word-regex
|
||||
'("C-STRUCT:" "C-UNION:" "MIXIN:" "TUPLE:" "SINGLETON:" "UNION:")))
|
||||
|
||||
(defconst fuel-syntax--tuple-decl-regex
|
||||
"^TUPLE: +\\([^ \n]+\\) +< +\\([^ \n]+\\)\\_>")
|
||||
|
@ -131,7 +133,7 @@
|
|||
(defconst fuel-syntax--setter-regex "\\_<>>.+?\\_>")
|
||||
|
||||
(defconst fuel-syntax--symbol-definition-regex
|
||||
(fuel-syntax--second-word-regex '("SYMBOL:" "VAR:")))
|
||||
(fuel-syntax--second-word-regex '("&:" "SYMBOL:" "VAR:")))
|
||||
|
||||
(defconst fuel-syntax--stack-effect-regex
|
||||
"\\( ( .* )\\)\\|\\( (( .* ))\\)")
|
||||
|
@ -144,8 +146,12 @@
|
|||
|
||||
(defconst fuel-syntax--sub-vocab-regex "^<\\([^ \n]+\\) *$")
|
||||
|
||||
(defconst fuel-syntax--alien-function-regex
|
||||
"\\_<FUNCTION: \\(\\w+\\) \\(\\w+\\)")
|
||||
|
||||
(defconst fuel-syntax--indent-def-starts '("" ":"
|
||||
"FROM"
|
||||
"C-ENUM" "C-STRUCT" "C-UNION"
|
||||
"FROM" "FUNCTION:"
|
||||
"INTERSECTION:"
|
||||
"M" "MACRO" "MACRO:"
|
||||
"MEMO" "MEMO:" "METHOD"
|
||||
|
@ -158,7 +164,7 @@
|
|||
"VARS"))
|
||||
|
||||
(defconst fuel-syntax--indent-def-start-regex
|
||||
(format "^\\(%s:\\) " (regexp-opt fuel-syntax--indent-def-starts)))
|
||||
(format "^\\(%s:\\)\\( \\|\n\\)" (regexp-opt fuel-syntax--indent-def-starts)))
|
||||
|
||||
(defconst fuel-syntax--no-indent-def-start-regex
|
||||
(format "^\\(%s:\\) " (regexp-opt fuel-syntax--no-indent-def-starts)))
|
||||
|
@ -181,6 +187,7 @@
|
|||
"GENERIC:" "GENERIC#"
|
||||
"HELP:" "HEX:" "HOOK:"
|
||||
"IN:" "INSTANCE:"
|
||||
"LIBRARY:"
|
||||
"MAIN:" "MATH:" "MIXIN:"
|
||||
"OCT:"
|
||||
"POSTPONE:" "PRIVATE>" "<PRIVATE"
|
||||
|
@ -247,12 +254,16 @@
|
|||
(" \\((\\)( \\([^\n]*\\) )\\()\\)\\( \\|\n\\)" (1 "<b") (2 "w") (3 ">b"))
|
||||
(" \\((\\) \\([^\n]*\\) \\()\\)\\( \\|\n\\)" (1 "<b") (2 "w") (3 ">b"))
|
||||
;; Strings
|
||||
("\\( \\|^\\)\\(DLL\\|P\\|SBUF\\)\\(\"\\)[^\n\r\f]*\\(\"\\)\\( \\|\n\\)"
|
||||
(3 "\"") (4 "\""))
|
||||
("\\( \\|^\\)\\(\"\\)[^\n\r\f]*\\(\"\\)\\( \\|\n\\)" (2 "\"") (3 "\""))
|
||||
("\\_<<\\(\"\\)\\_>" (1 "<b"))
|
||||
("\\_<\\(\"\\)>\\_>" (1 ">b"))
|
||||
;; Multiline constructs
|
||||
("\\_<\\(U\\)SING: \\(;\\)" (1 "<b") (2 ">b"))
|
||||
("\\_<USING:\\( \\)" (1 "<b"))
|
||||
("\\_<\\(C\\)-ENUM: \\(;\\)" (1 "<b") (2 ">b"))
|
||||
("\\_<C-ENUM:\\( \\|\n\\)" (1 "<b"))
|
||||
("\\_<TUPLE: +\\w+? +< +\\w+? *\\( \\|\n\\)\\([^;]\\|$\\)" (1 "<b"))
|
||||
("\\_<\\(TUPLE\\|SYMBOLS\\|VARS\\): +\\w+? *\\( \\|\n\\)\\([^;<\n]\\|\\_>\\)"
|
||||
(2 "<b"))
|
||||
|
|
Loading…
Reference in New Issue