Annotation of 43BSDReno/contrib/jove/Readme.mac, revision 1.1

1.1     ! root        1: /***************************************************************************
        !             2:  * This program is Copyright (C) 1986, 1987, 1988 by Jonathan Payne.  JOVE *
        !             3:  * is provided to you without charge, and with no warranty.  You may give  *
        !             4:  * away copies of JOVE, including sources, provided that this notice is    *
        !             5:  * included in all the files.                                              *
        !             6:  ***************************************************************************/
        !             7: 
        !             8: Changes between 4.9 and 4.10:
        !             9: 
        !            10:   New features:
        !            11:     1) Reshapeable windows with zoom boxes.
        !            12:     2) Filename/directory name completion with macify OFF.
        !            13:     3) Double click mouse to set the mark.
        !            14:     4) Control-space and control-@ correctly send NUL on MacII/SE.
        !            15:     5) Control-` fixed to send backquote char.
        !            16:     6) Display update code fixed.
        !            17:     
        !            18:   Sources:
        !            19:     1) Compiles under LSC 3.0. (Probably under 2.13 as well, but
        !            20:        not tested with that version).
        !            21:     2) Include files redone, with fewer total lines of code.
        !            22:     3) No need to modify include files, unless NBUF changed.
        !            23:     4) "keymaps.txt" is now "keys.txt".
        !            24:     
        !            25:   Planned:
        !            26:     1) Recover command as separate application.
        !            27:     2) Support for MPW compiler vers 2.02.
        !            28:     
        !            29:    
        !            30: Introduction
        !            31: 
        !            32: This file contains a brief description of MacJove, along with
        !            33: information necessary to make MacJove from the source files.
        !            34: It is assumed that the reader is familiar with Jove from other
        !            35: systems, and is somewhat familiar with the Macintosh as well. In
        !            36: the future there may be a separate user's manual for MacJove: 
        !            37: for the time being, the reader should refer to the Jove manual
        !            38: for Unix users.
        !            39: 
        !            40: Description
        !            41: 
        !            42: MacJove is a direct port of Jove to the Macintosh, with the
        !            43: overall structure, commands and key bindings left intact. In
        !            44: addition, elements of the Macintosh user interface - menus,
        !            45: window controls, and the mouse, have been integrated in a manner
        !            46: consistent with the overall functioning of Jove.
        !            47: 
        !            48: While the integration of these tools into the Jove environment
        !            49: is consistent and, to most users, familiar, Jove departs in
        !            50: several places from "Macintosh User Interface Guidelines". Most
        !            51: notably, the mouse is used to position the point only, not to
        !            52: drag or select text, and the Jove buffer structure is not
        !            53: integrated with the clipboard. Also, key bindings conform to
        !            54: Jove/Emacs tradition, and not to Macintosh guidelines: i.e.
        !            55: control (command)-N is next-line, not "NewFile". The reason for
        !            56: these departures is that the majority of MacJove users are likely
        !            57: to be those already familiar with Jove or other Emacs editors
        !            58: on other systems, and for these users, consistency between machines
        !            59: and operating systems is more important than fully exploiting
        !            60: the features of a single system. There are numerous other text
        !            61: editors which fully follow the Macintosh User Interface Guidelines.
        !            62: 
        !            63: MacJove retains most features of other Joves, but certain commands
        !            64: cannot be implemented because of the Macintosh operating system.
        !            65: Thus, there is no way to run a sub-process or a shell in a window,
        !            66: because there are no shells to run on the Macintosh, and a program
        !            67: (currently) can only transfer control to another program, not run
        !            68: a child process. For similar reasons, commands dealing with mail,
        !            69: with running make, and checking errors, are omitted.
        !            70: 
        !            71: 
        !            72: 
        !            73:                       Running MacJove
        !            74: 
        !            75: System Requirements
        !            76: 
        !            77: MacJove should run without difficulty on any Macintosh Plus, SE, or
        !            78: Macintosh II, providing that the hierarchical file system (HFS) is used, and
        !            79: assuming a reasonably current system file is used. An upgraded 512K Mac
        !            80: (with 128K rom) should also work if there is enough memory.  MacJove was
        !            81: developed on a Macintosh Plus and Macintosh II running system 4.2 and Finder
        !            82: 6.0., and has not been fully tested on earlier systems - however, it is
        !            83: likely that it will run on system 3.2 and later versions. MacJove has been
        !            84: used to a limited extent with Switcher and under Multifinder. In both cases,
        !            85: it is important to reserve enough memory for MacJove, as discussed below.
        !            86: 
        !            87: MacJove, as compiled from the sources, uses memory as follows:
        !            88: 
        !            89:    Program Code     approx 116K
        !            90:    Static Data      approx  20K
        !            91:    Tempfile Cache           64K (heap)
        !            92:                            ____
        !            93:                            200K total before stack/heap considerations
        !            94: 
        !            95: To this must be added stack and heap space. A bare minimum for this is
        !            96: probably 100K or so, but the usage will vary as buffers are created.  With
        !            97: Jove, the file itself takes up space only in the tempfile and its cache, but
        !            98: the buffer structure requires 3 pointers (12 bytes) for each line in the
        !            99: file. For a reasonable editing session with files totalling, say 10000 to
        !           100: 20000 lines, this additional space can add up. For this reason, it is
        !           101: unrealistic to expect to run Jove on a 512K system, unless a very small
        !           102: system file is used, few, small files are edited each session, and the
        !           103: tempfile cache is reduced (see cache size under Making Jove). You can
        !           104: experiment with various memory allocations under Switcher and Multifinder to
        !           105: see what works with your editing habits (backup your files first!), but a
        !           106: realistic minimum is 400K - 500K and more is great.
        !           107: 
        !           108: When first using MacJove, and if memory space is questionable, SAVE YOUR
        !           109: FILES FREQUENTLY. If it is necessary to edit many files, it is often better
        !           110: to exit MacJove and restart once in a while, especially if there is a
        !           111: question of limited memory.
        !           112: 
        !           113: Operation
        !           114: 
        !           115: 
        !           116: Running MacJove is similar to other Macintosh applications, and should be
        !           117: intuitive. You start up MacJove by either opening, or double-clicking,
        !           118: the MacJove icon. If you have previously saved files created with MacJove,
        !           119: double-clicking on them will also start up the program, and the files will
        !           120: be put into buffers. Several files can be selected simultaneously by this
        !           121: method. There is no current way to select command-line options with
        !           122: MacJove, but this may change in the future.
        !           123: 
        !           124: The .joverc file, if used, must be present in the same directory as MacJove,
        !           125: the "home" directory. The help file, "cmds.doc", must also be in this
        !           126: directory. The tempfile, ".joveXXX", will be placed in whatever directory is
        !           127: current when the tempfile is first opened - this may or may not be the home
        !           128: directory, and may change in the future. The recover file, ".jrecXXX" is
        !           129: placed in the home directory. While this file is created and updated as on
        !           130: Unix versions of Jove, there is currently no "recover" program for MacJove.
        !           131: Hopefully, this will be available soon.
        !           132: 
        !           133: MacJove can edit any text file on the Macintosh, whether created with
        !           134: MacJove or another editor. It cannot be used to edit graphics material, and
        !           135: graphics material cannot be inserted during operation of MacJove. Files
        !           136: created with MacJove are of type 'TEXT' and of signature 'JV01'. This
        !           137: signature is being registered with Apple, and may change if necessary. Note
        !           138: that once MacJove files have been re-edited with another editor, they likely
        !           139: will have new signatures, and double-clicking on them will start the other
        !           140: editor, not MacJove.
        !           141: 
        !           142: The standard Macintosh keyboard is inadequate for MacJove (and most anything
        !           143: else), so that it is necessary to change a couple of keys. The "`" key
        !           144: becomes the ESCAPE key, since it is in the right place for one: to send a
        !           145: real "'", hold the command key down while typing it. The command key is used
        !           146: for a control key - unfortunately, the location of it is horrible for such a
        !           147: purpose. On Macintosh SE and Macintosh II models, a real escape key exists,
        !           148: and also a real control key. Note, however, that because of a small bug in
        !           149: the keyboard encoding in MacJove, you cannot directly send a NUL (control-@)
        !           150: with the control key. Typing command-@ or command-2 will still do this,
        !           151: however.
        !           152: 
        !           153: During operation, you can use the keyboard as you would when running Jove on
        !           154: any other system. However, many commands also have menu equivalents:  as
        !           155: long as MacJove is waiting for a command, you can use either the keyboard or
        !           156: the menus. Once you begin selecting a command with either the menus or the
        !           157: keyboard, the other is locked out: thus, once you type control-X, MacJove
        !           158: expects more characters, and will not let you choose menu items.  Also, if
        !           159: you are prompted for input on the command line, the menus are locked out.
        !           160: Regardless of how a command is begun, however, only the prompt line (message
        !           161: line) is used for input: MacJove does not use dialog boxes, except under the
        !           162: "About Jove" menu selection.
        !           163: 
        !           164: Commands listed in the menus are given exactly as their string name in
        !           165: the command list, for example "write-file". In addition, variables are
        !           166: listed under the "Set" menu. Variables are grouped by type. Non-boolean
        !           167: variables are changed on the message line after being selected. Boolean
        !           168: variables are marked with a check mark if on, and selecting them toggles
        !           169: the value of the variable.
        !           170: 
        !           171: The "Buffer" menu is a special menu, whose action is different than the
        !           172: others. The first entries on this menu are the major and minor modes of
        !           173: operation, with those of the current buffer marked with check marks.
        !           174: Clicking on a major mode will change the major mode of the current buffer to
        !           175: that mode, while clicking on a minor mode will toggle that mode's status
        !           176: (on/off) for the current buffer. Beneath this is a list of buffers, one for
        !           177: each menu item, with the current buffer marked. Clicking on a buffer selects
        !           178: that as the current buffer, and the active window will change accordingly.
        !           179: 
        !           180: Window controls (scroll bars) work as expected, and are simply bound to
        !           181: the appropriate MacJove command. Occassionally the position of the
        !           182: scroll bar may appear inaccurate, particularly with a small buffer.
        !           183: 
        !           184: Files and directories may be selected in two ways. The default method
        !           185: is to use the message line to input filenames, and to change directories
        !           186: using "cd". If the variable "macify" is set, however, filenames and
        !           187: directories can also be set using the standard file dialogs familiar to
        !           188: most Mac users. Filename paths are normally given via Unix conventions,
        !           189: and not Macintosh conventions: i.e. directories are separated with "/"
        !           190: and not ":". On the Buffer menu, however, filenames are listed with ":"
        !           191: as the separation character, since "/" cannot be displayed in menu items.
        !           192: It is not possible to back up directories beyond the volume level, so
        !           193: there is not true "root". To change volumes (disks), macify must be on,
        !           194: and the "Drive" selection used.
        !           195: 
        !           196: "Macify" only works for those commands which REQUIRE a file operation, such
        !           197: as "visit-file", "insert-file", "write-file".  Operations which first look
        !           198: in buffers for files, such as "window-find" and "find-file" never use the
        !           199: standard file dialogs.
        !           200: 
        !           201: For a list of all commands and bindings, click on "About Jove" in the
        !           202: Apple menu. In the future this may also support the help file.
        !           203: 
        !           204:                       Making MacJove
        !           205: 
        !           206: System Requirements
        !           207: 
        !           208: To make MacJove from the sources, you need a hard disk based Macintosh, at
        !           209: least 1 mb of ram, and the LightspeedC compiler, version 2.13 or later.
        !           210: Earlier versions may work but have not been used recently. Allow for the
        !           211: MacJove files to take up to 1.5 mb of your hard disk. You will need a copy
        !           212: of the "BinHex" utility, also.
        !           213: 
        !           214: Since LightspeedC does not work with a Makefile, none is supplied. In
        !           215: general, the compiler itself will figure out dependencies for you, within a
        !           216: "project". Since there are three separate projects to MacJove, you will
        !           217: still have to keep track of some changes, particularly for the setmaps
        !           218: project. Also, since LightspeedC only knows of .c and .h dependencies,
        !           219: you will have to keep track of setmaps.txt and menumaps.txt yourself.
        !           220: 
        !           221: Preliminary Steps
        !           222: 
        !           223: 0) CREATE A FOLDER (DIRECTORY) FOR JOVE. If I have to tell you how to do
        !           224: that, don't go any further! Copy the source files - a few aren't needed
        !           225: by MacJove, but copy them anyway, so you'll have them in one place. You
        !           226: do not need anything in the "doc" subdirectory to create MacJove (but
        !           227: you will eventually need cmds.doc, the help file, if you want the
        !           228: "describe-command" command to work).
        !           229: 
        !           230: 1) CREATE THE RESOURCE FILE: There is only one eight-bit file supplied,
        !           231: "mjove.rsrc". This is a small file which contains the program icon and a
        !           232: dialog template. This file must have the same name as the MacJove project,
        !           233: plus extension ".rsrc". The MacJove project (below), has name "mjove", so
        !           234: this file is "mjove.rsrc".  IF YOU RENAME THE PROJECT YOU MUST RENAME THIS
        !           235: FILE, ALSO. Using "BinHex", unload the file "mjovers.Hqx" --> "mjove.rsrc".
        !           236: 
        !           237: 2) CREATE THE "MJOVELIB" PROJECT: MacJove does not use many of the library
        !           238: functions. Despite what the LightspeedC manual states, projects are loaded
        !           239: as a whole: since we need only a few functions, we will build a "library" of
        !           240: them in the form of a project. Run LightspeedC and create a new project,
        !           241: and name it "mjovelib". Add the following files, from the Library Sources,
        !           242: to the project. They all go in the same segment:
        !           243: 
        !           244:      onexit.c
        !           245:      qsort.c
        !           246:      stddata_ctype.c
        !           247:      unixexit.c
        !           248:      unixid.c
        !           249:      unixmem.c
        !           250:      unixtime.c
        !           251: 
        !           252: 3) EXAMINE THE FILE UNIXTIME.C and make the following correction, if
        !           253: necessary. The LightspeedC library function "unixtime.c" returns a string
        !           254: containing the time for what is supposed to be Greenwich Mean Time, instead
        !           255: of local time. Using the LightspeedC editor, and with the project open,
        !           256: examine the file, comment out the definition of "GMTzonedif", and add:
        !           257: 
        !           258:      #define GMTzonedif 0
        !           259: 
        !           260: 4) MAKE THE "MJOVELIB" PROJECT. Keeping the edited "unixtime.c" open,
        !           261: run "make" on the project - everything will be compiled, with the altered
        !           262: version of "unixtime.c". You do not have to permanently save the change
        !           263: to unixtime.c, but if you do not, the next time you run "make" on the
        !           264: project, it will tell you that it needs recompiling - simply ignore it.
        !           265: After the mjovelib project is made, close it. You do not have to convert it
        !           266: to a library - it is okay to leave it as a project.
        !           267: 
        !           268: 6) CREATE THE "MSETMAPS" PROJECT. Create a new project, name it "msetmaps",
        !           269: and add the following files to it:
        !           270: 
        !           271:      setmaps.c
        !           272:      stdio
        !           273:      strings           (segment 1)
        !           274:      unix
        !           275:      unix main.c
        !           276:      --------
        !           277:      MacTraps          (segment 2)
        !           278: 
        !           279: 
        !           280: You should not change anything else at this point - unless you want to
        !           281: reduce memory requirements (see "Running MacJove", above). If it is
        !           282: necessary to reduce the memory requirements, then reduce the number of cache
        !           283: buffers, NBUF, which is defined near the end of the file (each buffer takes
        !           284: up 1K of space while MacJove is running).
        !           285: 
        !           286: #ifdef MAC
        !           287: # undef F_COMPLETION
        !           288: # define F_COMPLETION 1
        !           289: # define rindex strrchr
        !           290: # define bzero(s,n) setmem(s,n,0)
        !           291: # define swritef sprintf
        !           292: # define LINT_ARGS 1
        !           293: # define NBUF 64 <---- here
        !           294: # define BUFSIZ 1024
        !           295: # undef LISP
        !           296: # define LISP 1
        !           297: # define ANSICODES 0
        !           298: # undef ABBREV
        !           299: # define ABBREV 1
        !           300: # undef CMT_FMT
        !           301: # define CMT_FMT 1
        !           302: #endif
        !           303: 
        !           304: 7) MAKE THE "MSETMAPS" PROJECT. Then choose "Build Application",and name it
        !           305: "setmaps". 
        !           306: 
        !           307: 8) RUN "SETMAPS" ON THE KEYMAPS.TXT FILE. You can either run "setmaps" from
        !           308: LightspeedC, before closing the project, or as the standalone application.
        !           309: When prompted for the "Unix command line", enter:
        !           310: 
        !           311:      < keys.txt > keys.c
        !           312: 
        !           313: You will get a few messages from setmaps that it can't find certain
        !           314: commands. You can ignore these.
        !           315: 
        !           316: 9) RUN "SETMAPS" ON THE MENUMAPS.TXT FILE. Just as before, run "setmaps"
        !           317: and enter the following command line:
        !           318: 
        !           319:      < menumaps.txt > menumaps.c
        !           320: 
        !           321: You should not get any messages from setmaps. If the "msetmaps" project is
        !           322: still open, close it.
        !           323: 
        !           324: 10) CREATE THE "MJOVE" PROJECT. Create a new project, name it "MJOVE" and
        !           325: set the Creator (signature) to 'JV01'. Add the following files in the
        !           326: following segments:
        !           327: 
        !           328:      abbrev.c
        !           329:      argcount.c
        !           330:      ask.c
        !           331:      buf.c
        !           332:      c.c
        !           333:      case.c        (segment 1)
        !           334:      ctype.c
        !           335:      delete.c
        !           336:      disp.c
        !           337:      extend.c
        !           338:      keys.c
        !           339:      --------
        !           340:      fmt.c
        !           341:      fp.c
        !           342:      funcdefs.c    (segment 2)
        !           343:      insert.c
        !           344:      io.c
        !           345:      jove.c
        !           346:      keymaps.c
        !           347:      list.c
        !           348:      --------
        !           349:      mac.c
        !           350:      macros.c
        !           351:      marks.c
        !           352:      menumaps.c    (segment 3)
        !           353:      misc.c
        !           354:      move.c
        !           355:      paragraph.c
        !           356:      --------
        !           357:      re.c
        !           358:      re1.c
        !           359:      rec.c
        !           360:      screen.c
        !           361:      term.c       (segment 4)
        !           362:      util.c
        !           363:      vars.c
        !           364:      version.c
        !           365:      wind.c
        !           366:      --------
        !           367:      MacTraps
        !           368:      mjovelib
        !           369:      setjmp.Lib    (segment 5)
        !           370:      storage
        !           371:      strings
        !           372: 
        !           373: 11) MAKE THE MJOVE PROJECT. If you experience any errors, it will most
        !           374: likely be from #include files not being in the default path - see the
        !           375: LightspeedC manual on setting up your directories. When you are done,
        !           376: run the program from the compiler to verify that it is okay, then save it as
        !           377: "MacJove" using the "Build Application" command.
        !           378: 
        !           379: 12) (Optional) CREATE THE HELP FILE, "CMDS.DOC". If you do not have a copy
        !           380: of "cmds.doc", it must be created using nroff. Assuming you have the Jove
        !           381: sources on a Unix machine, run "Make doc/cmds.doc" to create this file in
        !           382: the "doc" subdirectory, then move the file to the Mac. If you obtained the
        !           383: sources from a non-Unix source, this file may already be supplied. Place the
        !           384: file in the same directory that MacJove will be in.
        !           385: 
        !           386:                       COMMENTS AND QUESTIONS, BUGS
        !           387: 
        !           388: Although Jove appears to work well on the Mac, I know there are some
        !           389: problems. Since Jove cannot effectively use the TextEdit routines, it
        !           390: does not comply with some aspects of the Macintosh User Interface
        !           391: Guidelines. As has recently been brought to my attention, Jove accesses
        !           392: files by pathname only, so that if you have two disks in your machine
        !           393: with the same volume (disk) name, it will become confused. This has not
        !           394: been fixed. Support for variant keyboards is not good at present.
        !           395: 
        !           396: I try to reply to all inquiries about MacJove, but my schedule is busy,
        !           397: and it may be several days before you hear from me on the net. Please
        !           398: reply via email to me, or through usenet if possible: the chances that
        !           399: I will respond quickly to a written question or suggestion are very
        !           400: small, and I am difficult to reach by phone. Please do NOT send disks
        !           401: unless I ask you to.
        !           402: 
        !           403:     Ken Mitchum
        !           404:     Decision Systems Laboratory
        !           405:     University of Pittsburgh
        !           406:     1360 Scaife Hall
        !           407:     Pittsburgh, Pa. 15261
        !           408: 
        !           409:     ([email protected])
        !           410: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.