1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-11 23:53:12 +00:00

Emacs MAXIMA library - Macsyma mode.

This commit is contained in:
Lars Brinkhoff 2019-03-20 09:57:16 +01:00
parent 19e85f69ef
commit ef6346abb1
3 changed files with 108 additions and 0 deletions

View File

@ -61,6 +61,7 @@ respond ":EJ" "\033xgenerate\033emacs;kbdmac\033emacs1;kbdmac\r"
respond ":EJ" "\033xgenerate\033emacs;ledit\033emacs1;ledit\r"
respond ":EJ" "\033xgenerate\033emacs;lispt\033emacs1;lispt\r"
respond ":EJ" "\033xgenerate\033emacs;lsputl\033emacs1;lsputl\r"
respond ":EJ" "\033xgenerate\033emacs;maxima\033emacs1;maxima\r"
respond ":EJ" "\033xgenerate\033emacs;mazlib\033emacs1;mazlib\r"
respond ":EJ" "\033xgenerate\033emacs;modlin\033emacs1;modlin\r"
respond ":EJ" "\033xgenerate\033emacs;muddle\033emacs1;muddle\r"

28
doc/emacs1/maxima.info Executable file
View File

@ -0,0 +1,28 @@
The MAXIMA library Sunday, 23 December 1979
The MAXIMA library defines the command MM Maxima Mode
It has the following features:
C-M-A - Beginning of Macsyma Definition
C-M-E - End of Macsyma Definition
Electric tokens: ; $ :=
If any of these are typed, it will type a carriage return after inserting
them. In the case of :=, it will also auto-indent.
Parens/Braces/Brackets
These now use the builtin paren matching features of new Emacs. Echoing
of matches plus beeping on mismatches is standard.
Comments
Meta-; and the related comment hacking commands know about /* and */
Syntax
Appropriate adjustments have been made for making C-M- and M- commands work
right on Macsyma tokens.
Indentation
This mode just uses Lisp Mode indentation. That turns out to be right a
lot of the time. At some later date a real Macsyma indentation algorithm
may be devised.

79
src/emacs1/maxima.26 Executable file
View File

@ -0,0 +1,79 @@
!* -*- TECO -*- Library created and maintained by KMP@MC !
!~Filename~:! !EMACS macros for editting Macsyma code!
MAXIMA
!Maxima Mode:! !S Setup for Macsyma editting
C-M-A Go to head of Macsyma definition
C-M-E Go to end of Macsyma definition
Rubout deletes backwards changing tabs into spaces
Ctrl-Rubout deletes backwards normally
Tab indents like lisp tab
Semicolon ends a Macsyma expression, typing a <CR>
Dollarsign ends a Macsyma expression, typing a <CR>
:= types a <CR> and indents appropriately for head of a
Macsyma definition.!
M(M.M &_Init_Buffer_Locals)
M.Q..D !* Make a local called ..D !
0FO..QMaxima_..DF"N U..D' !* Dont copy ..D if dont have to !
"#W
40M.LComment Column !* Set comment column !
:i..D ..D !* Copy ..D !
Q..D M.V Maxima_..D !* Set up to do this faster next time.!
5*?:f..DAA !* Make ? alphabetic !
5*;:f..D__ !* Make semicolon just a break char!
5*\:f..D_/ !* Make backslash like slash !
5*/:f..D__ !* Make slash just a break char !
5*.:f..D__ !* Make period just a break char !
!""! 5*':f..DA' !* Make quote like lisp quote !
5*":f..D_| !'! !* Make doublequote like vertical bar !
5*|:f..D__ !* Make vertical bar just a delimiter !
5*}:f..D_) !* Make braces work like parens !
5*{:f..D_( !* Make braces work like parens !
5*]:f..D_) !* Make brackets work like parens !
5*[:f..D_(' !* Make brackets work like parens !
:I* /*_  M.L Comment_Begin !* How to start comment !
:I* /*  M.L Comment_Start !* How to recognize comment start !
:I* _*/  M.L Comment_End !* How to end comment !
M.M ^R_Indent_For_LispM.QI !* Make Tab indent for lisp !
Q¨Q.Í.Q)M.Q. !* Ctrl-Rubout <-> Rubout interchange !
M.M ^R_Macsyma_Electric_;M.Q;
M.M ^R_Macsyma_Electric_;M.Q$
M.M ^R_Macsyma_Electric_=M.Q=
M.M ^R_Beginning_of_Macsyma_DefinitionM.Q...A
M.M ^R_End_of_Macsyma_DefinitionM.Q...E
0fo..Q Display_Matching_Paren"e !* If not already enabled, ... !
2 M.QDisplay_Matching_Paren'!* Make local paren matching happen !
0 M.QPermit_UnMatched_Paren !* Disallow unmatched parens !
1M(M.M&_Set_Mode_Line)Maxima !* Set mode line !
!^R Beginning of Macsyma Definition:! !^R Jump to head of := expression !
-:s
:"lj' "#fkcr' !* Search back for end of previous !
0 !* Return !
!^R End of Macsyma Definition:! !^R Jump to end of := expression !
:s\$\;"l l'"#zj' !* Search forward for a $ or ; !
0' !* Return !
!^R Macsyma Electric =:! !^R Electric = for Macsyma mode!
ff"e -1,0a-:"e .(i=
_____),.'' !* If a :=, type the return and indent !
f@m(qA) !* Insert and return !
!^R Macsyma Electric ;:! !^R Electric ;, etc for Macsyma mode!
ff"e .(q..0i i
),.'' !* Insert char + carriage return; return!
f@m(qA) !* Insert nomally and return !