big femto update: help, fix bugs, optimization, etc
This commit is contained in:
parent
c4fb438322
commit
88b3204c7e
7
femto
7
femto
|
@ -5,7 +5,12 @@
|
||||||
# see femto.txt for documentation
|
# see femto.txt for documentation
|
||||||
|
|
||||||
TTY=`stty -g`
|
TTY=`stty -g`
|
||||||
uxnasm femto.tal femto.rom
|
|
||||||
|
if [ "$1" = "-b" ]; then
|
||||||
|
shift
|
||||||
|
uxnasm femto.tal femto.rom
|
||||||
|
fi
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
stty raw -echo
|
stty raw -echo
|
||||||
uxncli femto.rom "$@"
|
uxncli femto.rom "$@"
|
||||||
|
|
131
femto.tal
131
femto.tal
|
@ -2,28 +2,9 @@
|
||||||
( )
|
( )
|
||||||
( requires terminal to be in raw mode )
|
( requires terminal to be in raw mode )
|
||||||
( see femto launcher script for more details )
|
( see femto launcher script for more details )
|
||||||
( )
|
|
||||||
( ANSI sequences used )
|
|
||||||
( )
|
|
||||||
( goto $row,$col ESC [ $row ; $col H )
|
|
||||||
( go right by n ESC [ n C )
|
|
||||||
( query cursor ESC [ 6 n )
|
|
||||||
( erase line ESC [ 2 K )
|
|
||||||
( erase all ESC [ 2 J )
|
|
||||||
( )
|
|
||||||
( set attrs ESC [ $at1 ; ... m )
|
|
||||||
( reset ESC [ m )
|
|
||||||
( 0 reset, 1 bright, 2 dim, )
|
|
||||||
( 4 underscore, 5 blink, )
|
|
||||||
( 7 reverse, 8 hidden )
|
|
||||||
( )
|
|
||||||
( fg (30-37), bg (40-47) )
|
|
||||||
( black, red, green, yellow, )
|
|
||||||
( blue, magenta, cyan, white )
|
|
||||||
|
|
||||||
( TODO: )
|
( TODO: )
|
||||||
( - dollar ($) and caret (^) regex bug )
|
( - dollar ($) and caret (^) regex bug )
|
||||||
( - optimize term drawing )
|
|
||||||
( - get long line truncation/scrolling working )
|
( - get long line truncation/scrolling working )
|
||||||
( - allow line numbers to be toggled off )
|
( - allow line numbers to be toggled off )
|
||||||
( - help text )
|
( - help text )
|
||||||
|
@ -35,7 +16,7 @@
|
||||||
|10 @Console [ &vector $2 &read $1 &pad $5 &write $1 &error $1 ]
|
|10 @Console [ &vector $2 &read $1 &pad $5 &write $1 &error $1 ]
|
||||||
|a0 @File [ &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 ]
|
|a0 @File [ &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 ]
|
||||||
|
|
||||||
( MAX file size is currently #d200, i.e. 53760 bytes )
|
( MAX file size is currently #d000, i.e. 53248 bytes )
|
||||||
|
|
||||||
%dbg { #ff .System/debug DEO }
|
%dbg { #ff .System/debug DEO }
|
||||||
%emit { .Console/write DEO }
|
%emit { .Console/write DEO }
|
||||||
|
@ -68,7 +49,6 @@
|
||||||
%emit-] { LIT2 '] 18 DEO }
|
%emit-] { LIT2 '] 18 DEO }
|
||||||
%emit-m { LIT2 'm 18 DEO }
|
%emit-m { LIT2 'm 18 DEO }
|
||||||
%emit-n { LIT2 'n 18 DEO }
|
%emit-n { LIT2 'n 18 DEO }
|
||||||
%emit-u { LIT2 'u 18 DEO }
|
|
||||||
%emit-~ { LIT2 '~ 18 DEO }
|
%emit-~ { LIT2 '~ 18 DEO }
|
||||||
|
|
||||||
%quit! { #01 .System/halt DEO BRK }
|
%quit! { #01 .System/halt DEO BRK }
|
||||||
|
@ -115,6 +95,7 @@
|
||||||
|
|
||||||
( tracks overall editor state between events )
|
( tracks overall editor state between events )
|
||||||
@state [
|
@state [
|
||||||
|
&in-help $1 ( are we showing help? )
|
||||||
&in-undo $1 ( are we currently in undo? )
|
&in-undo $1 ( are we currently in undo? )
|
||||||
&key $1 ( last key read )
|
&key $1 ( last key read )
|
||||||
&saw-esc $1 ( did we just see ESC? )
|
&saw-esc $1 ( did we just see ESC? )
|
||||||
|
@ -186,11 +167,11 @@
|
||||||
( TODO: enable closing/opening files with editor already running )
|
( TODO: enable closing/opening files with editor already running )
|
||||||
@open-file ( filename* -> )
|
@open-file ( filename* -> )
|
||||||
.File/name DEO2
|
.File/name DEO2
|
||||||
#d201 .File/length DEO2
|
#d001 .File/length DEO2
|
||||||
;data .File/read DEO2
|
;data .File/read DEO2
|
||||||
|
|
||||||
.File/success DEI2 #0000 EQU2 .state/modified STZ
|
.File/success DEI2 #0000 EQU2 .state/modified STZ
|
||||||
.File/success DEI2 #d201 LTH2 ,&ok JCN
|
.File/success DEI2 #d001 LTH2 ,&ok JCN
|
||||||
;messages/input-error ;print JSR2
|
;messages/input-error ;print JSR2
|
||||||
;filename ;print JSR2 nl quit!
|
;filename ;print JSR2 nl quit!
|
||||||
|
|
||||||
|
@ -383,6 +364,16 @@
|
||||||
&done
|
&done
|
||||||
POP2 ;return JMP2
|
POP2 ;return JMP2
|
||||||
|
|
||||||
|
@help
|
||||||
|
#01 .state/in-help STZ
|
||||||
|
;term-erase-all JSR2
|
||||||
|
#0000 #0000 ;term-move-cursor JSR2
|
||||||
|
;emit-color-bold JSR2
|
||||||
|
;help-text ;print JSR2
|
||||||
|
;emit-reset JSR2
|
||||||
|
;redraw-all JSR2
|
||||||
|
BRK
|
||||||
|
|
||||||
( center buffer view on the current line )
|
( center buffer view on the current line )
|
||||||
@center-view
|
@center-view
|
||||||
.term/rows LDZ2 INC2 #0002 DIV2 STH2k
|
.term/rows LDZ2 INC2 #0002 DIV2 STH2k
|
||||||
|
@ -872,10 +863,6 @@
|
||||||
.state/key LDZ .state/saw-vt STZ ( ^[[1 through ^[[8 )
|
.state/key LDZ .state/saw-vt STZ ( ^[[1 through ^[[8 )
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
( ANSI control sequence to clear the current line )
|
|
||||||
@clear-line ( -> )
|
|
||||||
ansi emit-2 emit-K JMP2r
|
|
||||||
|
|
||||||
( clear the message line )
|
( clear the message line )
|
||||||
( )
|
( )
|
||||||
( this includes the code needed to move the cursor )
|
( this includes the code needed to move the cursor )
|
||||||
|
@ -886,7 +873,7 @@
|
||||||
@clear-message-line
|
@clear-message-line
|
||||||
.state/message LDZ #00 EQU ,&done JCN
|
.state/message LDZ #00 EQU ,&done JCN
|
||||||
;move-to-message-line JSR2
|
;move-to-message-line JSR2
|
||||||
;clear-line JSR2
|
;term-erase-line JSR2
|
||||||
#00 .state/message STZ
|
#00 .state/message STZ
|
||||||
&done JMP2r
|
&done JMP2r
|
||||||
|
|
||||||
|
@ -1025,6 +1012,7 @@
|
||||||
( - cancel the search restoring the cursor (C-g) )
|
( - cancel the search restoring the cursor (C-g) )
|
||||||
@on-key-searching
|
@on-key-searching
|
||||||
.state/key LDZ #07 EQU ( C-g ) ;cancel-search JCN2
|
.state/key LDZ #07 EQU ( C-g ) ;cancel-search JCN2
|
||||||
|
.state/key LDZ #08 EQU ( C-h ) ;help JCN2
|
||||||
.state/key LDZ #0d EQU ( \r ) ;finish-search JCN2
|
.state/key LDZ #0d EQU ( \r ) ;finish-search JCN2
|
||||||
.state/key LDZ #12 EQU ( C-r ) ;jump-to-prev-match JCN2
|
.state/key LDZ #12 EQU ( C-r ) ;jump-to-prev-match JCN2
|
||||||
.state/key LDZ #13 EQU ( C-s ) ;jump-to-next-match JCN2
|
.state/key LDZ #13 EQU ( C-s ) ;jump-to-next-match JCN2
|
||||||
|
@ -1047,6 +1035,7 @@
|
||||||
( this that for now i haven't done it. )
|
( this that for now i haven't done it. )
|
||||||
@on-key-prompt
|
@on-key-prompt
|
||||||
.state/key LDZ #07 EQU ( C-g ) ;cancel-prompt JCN2
|
.state/key LDZ #07 EQU ( C-g ) ;cancel-prompt JCN2
|
||||||
|
.state/key LDZ #08 EQU ( C-h ) ;help JCN2
|
||||||
.state/key LDZ #0d EQU ( \r ) ;finish-prompt JCN2
|
.state/key LDZ #0d EQU ( \r ) ;finish-prompt JCN2
|
||||||
.state/key LDZ #7f EQU ( DEL ) ;backspace-prompt JCN2
|
.state/key LDZ #7f EQU ( DEL ) ;backspace-prompt JCN2
|
||||||
.state/key LDZ #20 LTH ;ignore JCN2 ( ignore for now )
|
.state/key LDZ #20 LTH ;ignore JCN2 ( ignore for now )
|
||||||
|
@ -1071,6 +1060,7 @@
|
||||||
#00 .state/in-undo STZ
|
#00 .state/in-undo STZ
|
||||||
.Console/read DEI .state/key STZ
|
.Console/read DEI .state/key STZ
|
||||||
;clear-message-line JSR2
|
;clear-message-line JSR2
|
||||||
|
.state/in-help LDZ #00 .state/in-help STZ ;return JCN2
|
||||||
.searching/active LDZ ;on-key-searching JCN2
|
.searching/active LDZ ;on-key-searching JCN2
|
||||||
.prompt/active LDZ ;on-key-prompt JCN2
|
.prompt/active LDZ ;on-key-prompt JCN2
|
||||||
.state/saw-vt LDZ ;on-key-vt JCN2
|
.state/saw-vt LDZ ;on-key-vt JCN2
|
||||||
|
@ -1081,6 +1071,7 @@
|
||||||
.state/key LDZ #04 EQU ( C-d ) ;delete JCN2
|
.state/key LDZ #04 EQU ( C-d ) ;delete JCN2
|
||||||
.state/key LDZ #05 EQU ( C-e ) ;eol JCN2
|
.state/key LDZ #05 EQU ( C-e ) ;eol JCN2
|
||||||
.state/key LDZ #06 EQU ( C-f ) ;forward JCN2
|
.state/key LDZ #06 EQU ( C-f ) ;forward JCN2
|
||||||
|
.state/key LDZ #08 EQU ( C-h ) ;help JCN2
|
||||||
.state/key LDZ #09 EQU ( \t ) ;insert-tab JCN2
|
.state/key LDZ #09 EQU ( \t ) ;insert-tab JCN2
|
||||||
.state/key LDZ #0c EQU ( C-l ) ;center-view JCN2
|
.state/key LDZ #0c EQU ( C-l ) ;center-view JCN2
|
||||||
.state/key LDZ #0d EQU ( \r ) ;newline JCN2
|
.state/key LDZ #0d EQU ( \r ) ;newline JCN2
|
||||||
|
@ -1101,24 +1092,43 @@
|
||||||
@min2 ( x* y* -> min* )
|
@min2 ( x* y* -> min* )
|
||||||
LTH2k JMP SWP2 POP2 JMP2r
|
LTH2k JMP SWP2 POP2 JMP2r
|
||||||
|
|
||||||
|
( ANSI terminal notes )
|
||||||
|
( )
|
||||||
|
( attrs [0-7] )
|
||||||
|
( reset, bright, dim, underscore, )
|
||||||
|
( blink, ???, reverse, hidden )
|
||||||
|
( )
|
||||||
|
( fg [30-37], bg [40-47] )
|
||||||
|
( black, red, green, yellow, )
|
||||||
|
( blue, magenta, cyan, white )
|
||||||
|
|
||||||
( ANSI control sequence to move the cursor to the given coord )
|
( ANSI control sequence to move the cursor to the given coord )
|
||||||
|
( ESC [ $row ; $col H )
|
||||||
@term-move-cursor ( col* row* -> )
|
@term-move-cursor ( col* row* -> )
|
||||||
ansi INC2 ( row+1 ) ;emit-dec2 JSR2
|
ansi INC2 ( row+1 ) ;emit-dec2 JSR2
|
||||||
emit-; INC2 ( col+1 ) ;emit-dec2 JSR2
|
emit-; INC2 ( col+1 ) ;emit-dec2 JSR2
|
||||||
emit-H JMP2r
|
emit-H JMP2r
|
||||||
|
|
||||||
( ANSI control sequence to move N positions right )
|
( ANSI control sequence to move N positions right )
|
||||||
|
( ESC [ $n C )
|
||||||
@term-move-right ( n* -> )
|
@term-move-right ( n* -> )
|
||||||
ansi ;emit-dec2 JSR2 emit-C JMP2r
|
ansi ;emit-dec2 JSR2 emit-C JMP2r
|
||||||
|
|
||||||
( ANSI control sequence to get the cursor position )
|
( ANSI control sequence to get the cursor position )
|
||||||
|
( ESC [ 6 n )
|
||||||
@term-get-cursor-position ( -> )
|
@term-get-cursor-position ( -> )
|
||||||
ansi emit-6 emit-n JMP2r
|
ansi emit-6 emit-n JMP2r
|
||||||
|
|
||||||
( ANSI control sequence to erase entire screen )
|
( ANSI control sequence to erase entire screen )
|
||||||
|
( ESC [ 2 J )
|
||||||
@term-erase-all ( -> )
|
@term-erase-all ( -> )
|
||||||
ansi emit-2 emit-J JMP2r
|
ansi emit-2 emit-J JMP2r
|
||||||
|
|
||||||
|
( ANSI control sequence to erase the current line )
|
||||||
|
( ESC [ 2 K )
|
||||||
|
@term-erase-line ( -> )
|
||||||
|
ansi emit-2 emit-K JMP2r
|
||||||
|
|
||||||
( method to add bits to the redraw register )
|
( method to add bits to the redraw register )
|
||||||
( )
|
( )
|
||||||
( state/redraw uses 8 bits to represent which parts )
|
( state/redraw uses 8 bits to represent which parts )
|
||||||
|
@ -1189,10 +1199,9 @@
|
||||||
.cursor/row LDZ2 INC2 ;emit-dec2 JSR2
|
.cursor/row LDZ2 INC2 ;emit-dec2 JSR2
|
||||||
emit-) sp emit-[
|
emit-) sp emit-[
|
||||||
LIT 's .config/insert-tabs LDZ ADD emit
|
LIT 's .config/insert-tabs LDZ ADD emit
|
||||||
emit-] sp emit-u emit-:
|
emit-] sp
|
||||||
;undo-stack/pos LDA2 ;undo-stack/data SUB2 #0003 DIV2 ;emit-dec2 JSR2
|
;messages/help-msg ;print JSR2
|
||||||
|
;emit-reset JMP2
|
||||||
;emit-reset JMP2
|
|
||||||
|
|
||||||
@draw-prompt ( -> )
|
@draw-prompt ( -> )
|
||||||
;clear-message-line JSR2
|
;clear-message-line JSR2
|
||||||
|
@ -1210,7 +1219,7 @@
|
||||||
@draw-linenum ( n* -> )
|
@draw-linenum ( n* -> )
|
||||||
;emit-reset JSR2
|
;emit-reset JSR2
|
||||||
ansi .config/color LDZ2 emit emit emit-m
|
ansi .config/color LDZ2 emit emit emit-m
|
||||||
;emit-dec2-pad JSR2
|
;emit-dec2-pad JSR2 sp
|
||||||
ansi emit-0 emit-m JMP2r
|
ansi emit-0 emit-m JMP2r
|
||||||
|
|
||||||
@matches-at ( s* -> limit* )
|
@matches-at ( s* -> limit* )
|
||||||
|
@ -1308,18 +1317,25 @@
|
||||||
&loop ORAk ,&next JCN POP2 POP2r JMP2r
|
&loop ORAk ,&next JCN POP2 POP2r JMP2r
|
||||||
&next DEOkr INC2 ,&loop JMP
|
&next DEOkr INC2 ,&loop JMP
|
||||||
|
|
||||||
|
( ESC [ 1 m )
|
||||||
@emit-red ( -> )
|
@emit-red ( -> )
|
||||||
ansi emit-3 emit-1 emit-m JMP2r
|
ansi emit-3 emit-1 emit-m JMP2r
|
||||||
|
|
||||||
|
( ESC [ 0 m )
|
||||||
@emit-reset ( -> )
|
@emit-reset ( -> )
|
||||||
ansi emit-0 emit-m JMP2r
|
ansi emit-0 emit-m JMP2r
|
||||||
|
|
||||||
|
( ESC [ 1 m $ ESC [ 0 m )
|
||||||
@emit-red-dollar ( -> )
|
@emit-red-dollar ( -> )
|
||||||
;emit-red JSR2 emit-$ ;emit-reset JMP2
|
;emit-red JSR2 emit-$ ;emit-reset JMP2
|
||||||
|
|
||||||
|
( ESC [ 3 $x ; 7 m )
|
||||||
|
( $x is 0-7 )
|
||||||
@emit-color-reverse ( -> )
|
@emit-color-reverse ( -> )
|
||||||
ansi .config/color LDZ2 emit emit emit-; emit-7 emit-m JMP2r
|
ansi .config/color LDZ2 emit emit emit-; emit-7 emit-m JMP2r
|
||||||
|
|
||||||
|
( ESC [ 3 $x ; 1 m )
|
||||||
|
( $x is 0-7 )
|
||||||
@emit-color-bold ( -> )
|
@emit-color-bold ( -> )
|
||||||
ansi .config/color LDZ2 emit emit emit-; emit-1 emit-m JMP2r
|
ansi .config/color LDZ2 emit emit emit-; emit-1 emit-m JMP2r
|
||||||
|
|
||||||
|
@ -1532,17 +1548,16 @@
|
||||||
|
|
||||||
( emit a short as a decimal with leading spaces )
|
( emit a short as a decimal with leading spaces )
|
||||||
@emit-dec2-pad ( n* -> )
|
@emit-dec2-pad ( n* -> )
|
||||||
#00 ,&zero STR
|
LITr 00 ( n [0] )
|
||||||
#2710 ,&parse JSR
|
&read ( n [k] )
|
||||||
#03e8 ,&parse JSR
|
#000a DIV2k STH2k MUL2 SUB2 STH2r INCr ( n%10 n/10 [k+1] )
|
||||||
#0064 ,&parse JSR
|
STHkr #05 LTH ,&read JCN
|
||||||
#000a ,&parse JSR
|
POP2 ( top element was 0000 )
|
||||||
,&emit JSR POP sp JMP2r
|
&write0 ( n0 n1 ... nk [k+1] )
|
||||||
&parse DIV2k DUP ,&emit JSR MUL2 SUB2 JMP2r
|
DUP2 ORA ,emit-dec2/write JCN
|
||||||
&emit DUP [ LIT &zero $1 ] #0000 EQU2 ,&skip JCN
|
POP2 sp LITr 01 SUBr
|
||||||
#01 ,&zero STR
|
STHkr ,&write0 JCN
|
||||||
#30 ADD #18 DEO JMP2r
|
POPr JMP2r
|
||||||
&skip POP sp JMP2r
|
|
||||||
|
|
||||||
( various string constants used as messages for the user )
|
( various string constants used as messages for the user )
|
||||||
@messages [ &null 00
|
@messages [ &null 00
|
||||||
|
@ -1559,8 +1574,34 @@
|
||||||
&unknown-input "Unknown 20 "input: 20 00
|
&unknown-input "Unknown 20 "input: 20 00
|
||||||
&no-matches-found "No 20 "matches 20 "found: 20 00
|
&no-matches-found "No 20 "matches 20 "found: 20 00
|
||||||
&term-size-parse-error "Error 20 "parsing 20 "term 20 "size 00
|
&term-size-parse-error "Error 20 "parsing 20 "term 20 "size 00
|
||||||
|
&help-msg "(help: 20 "C-h) 00
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@help-text
|
||||||
|
09 "femto 20 "input 20 "reference 09 "(C 20 "is 20 "Ctrl, 20 "M 20 "is 20 "Meta/Alt ") 0d 0a
|
||||||
|
0d 0a
|
||||||
|
09 "quit 09 09 "C-x 09 09 "cancel 09 09 "C-g 0d 0a
|
||||||
|
09 "save 09 09 "C-o 09 09 "undo 09 09 "C-u 0d 0a
|
||||||
|
0d 0a
|
||||||
|
09 "move 20 "up 09 09 "C-p 20 "(up) 09 "page 20 "up 09 09 "M-v 20 "(pg-up) 0d 0a
|
||||||
|
09 "move 20 "down 09 "C-n 20 "(down) 09 "page 20 "down 09 "C-v 20 "(pg-dn) 0d 0a
|
||||||
|
09 "move 20 "left 09 "C-b 20 "(left) 09 "line 20 "start 09 "C-a 20 "(home) 0d 0a
|
||||||
|
09 "move 20 "right 09 "C-f 20 "(right) 09 "line 20 "end 09 "C-e 20 "(end) 0d 0a
|
||||||
|
0d 0a
|
||||||
|
09 "goto 20 "file 20 "start 09 "M-< 09 09 "left 20 "by 20 "word 09 "M-b 0d 0a
|
||||||
|
09 "goto 20 "file 20 "end 09 "M-> 09 09 "right 20 "by 20 "word 09 "M-f 0d 0a
|
||||||
|
09 "goto 20 "line 09 "M-g 09 09 "center 20 "cursor 09 "C-l 0d 0a
|
||||||
|
0d 0a
|
||||||
|
09 "search 09 09 "C-s 09 09 "toggle 20 "colors 09 "M-c 0d 0a
|
||||||
|
09 "regex 20 "search 09 "M-s 09 09 "toggle 20 "tabs 09 "M-t 0d 0a
|
||||||
|
09 "next 20 "match 09 "C-s 20 "(n) 0d 0a
|
||||||
|
09 "prev 20 "match 09 "C-r 20 "(p) 0d 0a
|
||||||
|
09 "end 20 "search 09 "enter 0d 0a
|
||||||
|
09 "cancel 20 "search 09 "C-g 0d 0a
|
||||||
|
0d 0a
|
||||||
|
09 09 09 "press 20 "any 20 "key 20 "to 20 "continue... 0d 0a
|
||||||
|
00
|
||||||
|
|
||||||
( perform the undo action )
|
( perform the undo action )
|
||||||
@undo ( -> )
|
@undo ( -> )
|
||||||
#01 .state/in-undo STZ
|
#01 .state/in-undo STZ
|
||||||
|
@ -1619,6 +1660,6 @@
|
||||||
]
|
]
|
||||||
|
|
||||||
( actual file data to be edited )
|
( actual file data to be edited )
|
||||||
@data $d200
|
@data $d000
|
||||||
|
|
||||||
( end of femto.tal )
|
( end of femto.tal )
|
||||||
|
|
16
femto.txt
16
femto.txt
|
@ -16,7 +16,7 @@ development. although it seems to work fairly reliably
|
||||||
it has bugs!
|
it has bugs!
|
||||||
|
|
||||||
please consider making backups (or using version control)
|
please consider making backups (or using version control)
|
||||||
before femto this to modify important files.
|
before using femto to modify important files.
|
||||||
|
|
||||||
---- getting started ----
|
---- getting started ----
|
||||||
|
|
||||||
|
@ -30,7 +30,6 @@ the femto launcher script makes many assumptions:
|
||||||
|
|
||||||
- uxnasm and uxncli are both in the PATH
|
- uxnasm and uxncli are both in the PATH
|
||||||
- femto.tal is in the same directory as femto
|
- femto.tal is in the same directory as femto
|
||||||
- femto.rom should be (re)assembled every time
|
|
||||||
- femot.rom should be written in the same directory
|
- femot.rom should be written in the same directory
|
||||||
|
|
||||||
once femto is not in active development a more robust
|
once femto is not in active development a more robust
|
||||||
|
@ -42,7 +41,6 @@ packaging process can be explored.
|
||||||
- doesn't support horizontal scrolling for long lines
|
- doesn't support horizontal scrolling for long lines
|
||||||
- no search & replace
|
- no search & replace
|
||||||
- no copy/paste
|
- no copy/paste
|
||||||
- few help messages
|
|
||||||
- doesn't support function keys, mouse, etc.
|
- doesn't support function keys, mouse, etc.
|
||||||
|
|
||||||
---- status line ----
|
---- status line ----
|
||||||
|
@ -54,13 +52,15 @@ the femto status line contains a lot of information:
|
||||||
3. the number of bytes/lines (e.g. "[49 bytes, 8 lines]"
|
3. the number of bytes/lines (e.g. "[49 bytes, 8 lines]"
|
||||||
4. the x/y cursor position (e.g. "(1,8)" for col 1, row 8)
|
4. the x/y cursor position (e.g. "(1,8)" for col 1, row 8)
|
||||||
5. whether tabs ("[t]") or spaces ("[s]") are inserted by tab key
|
5. whether tabs ("[t]") or spaces ("[s]") are inserted by tab key
|
||||||
6. how many items are in the undo stack (e.g. "u:13")
|
6. how to run the help command (C-h)
|
||||||
|
|
||||||
---- special key bindings ----
|
---- special key bindings ----
|
||||||
|
|
||||||
C-g cancel (used with commands like save, search, etc.)
|
C-g cancel (used with commands like save, search, etc.)
|
||||||
C-o save
|
C-h help
|
||||||
C-x quit
|
C-x quit
|
||||||
|
C-o save
|
||||||
|
C-u undo
|
||||||
|
|
||||||
C-b move back one character (or LEFT ARROW)
|
C-b move back one character (or LEFT ARROW)
|
||||||
C-f move forward one character (or RIGHT ARROW)
|
C-f move forward one character (or RIGHT ARROW)
|
||||||
|
@ -98,6 +98,8 @@ the following commands:
|
||||||
- n (or C-s): move forward to the next match, if any
|
- n (or C-s): move forward to the next match, if any
|
||||||
- p (or C-r): move backwards to the previous match, if any
|
- p (or C-r): move backwards to the previous match, if any
|
||||||
|
|
||||||
basic regular expression syntax is mostly working, although there
|
regex support is a work in progress, but basic regular expression syntax is
|
||||||
are notable absences such as character classes (e.g. [] and [^]),
|
mostly working.
|
||||||
|
|
||||||
|
there are notable absences such as character classes (e.g. [] and [^]),
|
||||||
references to capture groups (e.g. \1), and repetitions (e.g. {n}).
|
references to capture groups (e.g. \1), and repetitions (e.g. {n}).
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
for NAME in about.txt math32.tal test-math32.tal test-math32.py primes32.tal regex.tal repl-regex.tal test-regex.tal grep.tal femto.tal femto.txt femto rainbow.tal drums.tal drums2.tal bfloat16.tal fix16.tal fixed.tal tal-mode1.png tal.nanorc; do
|
for NAME in about.txt math32.tal test-math32.tal test-math32.py primes32.tal regex.tal repl-regex.tal test-regex.tal grep.tal femto.tal femto.rom femto.txt femto rainbow.tal drums.tal drums2.tal bfloat16.tal fix16.tal fixed.tal tal-mode1.png tal.nanorc; do
|
||||||
echo "-> $NAME"
|
echo "-> $NAME"
|
||||||
cp $NAME /var/www/plastic-idolatry.com/html/erik/nxu
|
cp $NAME /var/www/plastic-idolatry.com/html/erik/nxu
|
||||||
done
|
done
|
||||||
|
|
Loading…
Reference in New Issue