ekberg@home.UUCP (09/28/87)
Does anyone out there know of a programmers guide for gnuemacs? After reviewing some of the source files I can do some minimal coding (being proficient in Common Lisp helps) but there are some things that would be difficult to know by just reading the code. Even a summary of all of the forms would help (yes, I have looked at the documentation string but even that isn't enough). Well, how about it? -- -- tom (aisle C-4L), EKBERG%TI-CSL@CSNET-RELAY
dph@beta.UUCP (David P Huelsbeck) (09/28/87)
In article <527@home.CSNET> ekberg@home.CSNET (Tom Ekberg) writes: >Does anyone out there know of a programmers guide for gnuemacs? After [...] > Even a summary of all of the forms >would help (yes, I have looked at the documentation string but even that isn't >enough). Well, how about it? > >-- > -- tom (aisle C-4L), EKBERG%TI-CSL@CSNET-RELAY Yes. This would be a big help. How 'bout it, is there such a thing? Where can I get it? David Huelsbeck dph@lanl.gov.arpa {cmcl2,ihnp4}!lanl!gov PS: I've looked at the files on "prep" a little lately. I can't seem to find the "split" copys of the latest versions (actually any version). 3MB is a pretty big chunk to ftp in one shot. I'm not ready to stay up from 2AM until 5AM to get it. Is the split version of 48 or 49 out there somewhere?
duff@eraserhead.UUCP (09/30/87)
In article <10651@beta.UUCP> dph@LANL.GOV.ARPA (David P Huelsbeck) writes: >In article <527@home.CSNET> ekberg@home.CSNET (Tom Ekberg) writes: >>Does anyone out there know of a programmers guide for gnuemacs? After > [...] >> Even a summary of all of the forms >>would help (yes, I have looked at the documentation string but even that isn't >>enough). Well, how about it? > >Yes. This would be a big help. > Well, at one time, there was an outline of the programmers manual floating around and I got a copy of it. I found it useful sometimes when I was trying to figure out how to do certain tasks becuase it grouped all of the commands according to their general function. Here is an (almost surely out-of-date) copy that I have been using for a while. If anyone has a more current or more detailed one, I think it would be nice to post it. I recieved this (indirectly) from liberte@b.cs.uiuc.edu (Daniel LaLiberte). ================ Posted-Date: 11 Mar 87 10:47 EST >From: liberte%b.cs.uiuc.edu.tcpip@csbvax.steinmetz Subject: updated outline To: MONTANARO@MONA.steinmetz Received: from b.cs.uiuc.edu by a.cs.uiuc.edu with SMTP (UIUC-5.44/9.7) id AA01450; Wed, 11 Mar 87 02:08:05 CST Received: by b.cs.uiuc.edu (UIUC-5.52/9.7) id AA13131; Wed, 11 Mar 87 02:06:35 CST Date: Wed, 11 Mar 87 02:06:35 CST >From: liberte@b.cs.uiuc.edu (Daniel LaLiberte) Message-Id: <8703110806.AA13131@b.cs.uiuc.edu> To: gnu-manual@a.cs.uiuc.edu Subject: updated outline Here is the updated outline as of 18.37 or so. It is a little bit reorganized, but looking it over, it should be obvious that it needs some major overhaul. I got tired of trying to figure out where every little thing should go. In the real manual, I would expect lots of cross references. When you decide that you want to write about one of these sections, or part of a section, or even just an introduction for a section, then you might also consider how to reorganize it, what things should go where, etc. dan (our ARPAnet connection will be intermittent for a while - keep trying) ----------------- Copyright (C) 1986 Daniel LaLiberte GNU Emacs Programmers Manual (outline) GNU Emacs Lisp Part I. Lisp. Objects and types: atom, integer, symbol, cons, lists, vector, string, buffer, marker, built-in-function, window, process Lists: atom cons list make-list eq equal null consp listp nlistp sequencep car car-safe cdr cdr-safe setcar setcdr append nthcdr nth copy-alist memq assq assoc rassq delq nreverse reverse sort nconc mapconcat mapcar Numbers: integerp natnump zerop integer-or-marker-p = < > <= >= /= int-to-string string-to-int + - * / % 1+ 1- max min longand logior logxor lognot ash lsh random Arrays Vectors Sequences: make-vector vector vectorp stringp arrayp sequencep aref aset vconcat copy-sequence length elt fillarray Characters and Strings: make-string stringp char-or-stringp int-to-string string-to-int char-to-string string-to-char concat substring string-equal string-lessp char-equal Symbols: General name, value as variable, function definition, property list, get put intern intern-soft mapatoms make-symbol symbolp boundp fboundp makunbound fmakeunbound symbol-function symbol-plist symbol-name symbol-value default-value fset setplist set set-default copy-alist assq Variables obarray values Garbage purecopy garbage-collect Variables gc-cons-threshold pure-bytes-used data-bytes-used data-bytes-free purify-flag Lisp expressions: variables vs constants vs function calls vs special forms (a funny sort of function call) Mention eval setq quote. Macros defmacro macroexpand Functions: subrp function eval apply funcall mapatoms mapconcat mapcar defun defmacro macroexpand autoload fboundp fmakunbound Simple args and rest args. identity call-interactively universal-argument digit-argument negative-argument prefix-numeric-value interactive interactive-p commandp documentation documentation-property Snarf-documentation substitute-command-keys Variables prefix-arg current-prefix-arg command-history Variables and binding: setq defvar defconst boundp makunbound Explain dynamic (vs lexical) scope. let let* Variables that Emacs primitives look at vs. Variables that users may access user-variable-p set-variable Per-buffer variables (there are two kinds of these) make-variable-buffer-local make-local-variable global-value global-set hack-local-variables Control Structures progn prog1 prog2 or and cond if while catch throw unwind-protect condition-case signal Errors unwind-protect condition-case signal error backtrace-debug backtrace Evaluation, Compilation, and Debugging load auto-load provide require featurep eval-region eval-current-buffer eval-expression edit-and-eval-command byte-compile-file byte-recompile-directory batch-byte-compile byte-code disassemble debug debug-on-entry cancel-debug-on-entry Variables features load-path load-in-progress max-specpdl-size max-lisp-eval-depth quit-flag inhibit-quit stack-trace-on-error debug-on-error debug-on-quit debug-on-next-call debugger Lisp I/O to streams. read read-from-string print prin1 princ Strings as streams. Buffers as streams. Markers as streams. Functions as streams. Minibuffer streams. scan-lists scan-sexps parse-partial-sexp Variables parse-sexp-ignore-comments ------------------------------------------------------ Part II. Lisp and Editing top-level recursion-depth recursive-edit exit-recursive-edit abort-recursive-edit save-excursion Buffers buffer-list get-buffer get-file-buffer get-buffer-create generate-new-buffer buffer-name buffer-number buffer-file-name buffer-local-variables buffer-modified-p set-buffer-modified-p rename-buffer other-buffer buffer-flush-undo kill-buffer kill-some-buffers switch-to-buffer switch-to-buffer-other-window pop-to-buffer current-buffer set-buffer barf-if-buffer-read-only bury-buffer erase-buffer list-buffers lock-buffer unlock-buffer buffer-size point-min point-min-marker point-max point-max-marker Standard per-buffer variables and their uses make-variable-buffer-local make-local-variable kill-local-variable kill-all-local-variables Variables mode-line-format default-mode-line-format abbrev-mode default-abbrev-mode ctl-arrow default-ctl-arrow truncate-lines default-truncate-lines fill-column default-fill-column left-margin default-left-margin tab-width default-tab-width case-fold-search default-case-fold-search major-mode default-major-mode mode-name default-directory auto-fill-hook make-backup-files bacup-by-copying backup-by-copying-when-linked backup-by-copying-when-mismatch buffer-offer-save file-procious-flag version-control dired-kept-versions dired-listing-switches trim-versions-without-asking kept-old-versions kept-new-versions require-final-newline auto-save-default auto-save-visited-file-name save-abbrevs find-file-run-dired find-file-not-found-hooks find-file-hooks write-file-hooks buffer-auto-save-file-name buffer-read-only buffer-backed-up buffer-saved-size selective-display selective-display-ellipses overwrite-mode Positions point window-point set-window-point register-to-point point-to-register buffer-size point-max point-min bobp eobp bolp eolp beginning-of-buffer end-of-buffer goto-char goto-line what-line what-cursor-position forward-char backward-char forward-line beginning-of-line end-of-line move-to-column current-column vertical-motion next-line previous-line set-goal-column following-char preceding-char char-after buffer-substring buffer-string markers mark set-mark set-mark-command exchange-point-and-mark pop-mark push-mark process-mark abbrev-prefix-mark mark-marker mark-word mark-paragraph mark-sexp mark-page mark-whole-buffer markerp integer-or-marker-p make-marker set-marker copy-marker point-max-marker point-min-marker marker-position marker-buffer point-marker insert-before-markers region-beginning region-end count-lines-region count-lines clipping restrictions narrow-to-page narrow-to-region widen point-max point-min point-max-marker point-min-marker save-restriction Variables track-eol goal-column temporary-goal-column mark-ring mark-ring-max Inserting and Deleting insert quoted-insert insert-before-markers self-insert-and-exit self-insert-command insert-buffer-substring newline split-line open-line delete-region subst-char-in-region indent-to current-indentation delete-indentation back-to-indentation newline-and-indent reindent-then-newline-and-indent forward-to-indentation backward-to-indentation indent-according-to-mode indent-for-tab-command indent-rigidly indent-region indent-relative-maybe indent-relative edit-tab-stops-note-changes tab-to-tab-stop fixup-whitespace delete-horizontal-space just-one-space delete-blank-lines backward-delete-char-untabify zap-to-char delete-char delete-backward-char kill-line kill-region Variables indent-tabs-mode indent-region-function tab-stop-list edit-tab-stops-map edit-tab-stops-buffer indent-line-function kill-ring kill-ring-max kill-ring-yank-pointer Commands enable-command disable-command Self-inserting commands auto-fill parenthesis matching Abbreviations - all the variables blink-matching-open Variables blink-paren-hook blink-matching-paren blink-matching-paren-distance Undo undo buffer-flush-undo undo-boundary undo-more undo-start buffer-modified Searching and matching looking-at string-match scan-buffer skip-chars-forward skip-chars-backward search-backward search-forward word-search-backward word-search-forward re-search-backward re-search-forward replace-match match-beginning match-end match-data store-match-data regexp-quote backward-prefix-chars Variables paragraph-start paragraph-separate sentence-end page-delimiter case-replace Parsing and scanning Syntax Tables syntax-table-p syntax-table standard-syntax-table copy-syntax-table set-syntax-table char-syntax modify-syntax-entry describe-syntax Variables standard-syntax-table Major and Minor Modes fundamental-mode normal-mode set-auto-mode hack-local-variables run-hooks Variables fundamental-mode-map mode-specific-map help-map mode-line-buffer-identification mode-line-process initial-major-mode minor-mode-alist auto-mode-alist command-switch-alist Keyboard Macros Variables defining-kbd-macro executing-macro executing-kbd-macro last-kbd-macro Keymaps keymapp make-keymap make-sparse-keymap define-key lookup-key key-binding local-key-binding global-key-binding global-set-key local-set-key global-unset-key local-unset-key define-prefix-command use-global-map use-local-map current-local-map accessible-keymaps key-description single-key-description text-char-description where-is-internal where-is describe-bindings apropos execute-extended-command substitute-command-keys suppress-keymap substitute-key-definition Variables global-map function-keymap ctl-x-4-map ctl-x-map esc-map mouse-map Minibuffer: read-from-minibuffer read-minibuffer eval-minibuffer read-string read-no-blanks-input read-command read-function read-variable read-buffer try-completion all-completions minibuffer-complete minibuffer-complete-and-exit minibuffer-completion-help self-insert-and-exit exit-minibuffer y-or-n-p yes-or-no-p Relate this to interactive. Minibuffer keymaps. Variables cursor-in-echo-area minibuffer-local-map minibuffer-local-ns-map minibuffer-local-completion-map minibuffer-local-must-match-map completion-auto-help completion-ignore-case completion-ignored-extensions enable-recursive-minibuffers minibuffer-completion-table minibuffer-completion-predicate minibuffer-completion-confirm minibuffer-help-form Input/Output - this really needs work baud-rate send-string-to-terminal read-quoted-char read-key-sequence command-execute input-pending-p recent-keys this-command-keys open-dribble-file open-termscript discard-input set-input-mode message format write-char with-output-to-temp-buffer terpri prin1 prin1-to-string princ print read-char get-file-char read read-from-string momentary-string-display sit-for sleep-for ding keyboard-quit Variables standard-output standard-input print-length inverse-video visible-bell window-system disabled-command-hook meta-flag last-command-char last-input-char unread-command-char meta-prefix-char last-command this-command auto-save-interval echo-keystrokes help-char help-form top-level keyboard-translate-table Files File data transfer. File manipulation. list-directory directory-files file-name-completion file-name-all-completions file-name-all-versions file-attributes file-locked-p file-name-directory file-name-nondirectory file-name-as-directory directory-file-name make-temp-name expand-file-name substitute-in-file-name copy-file delete-file rename-file add-name-to-file make-symbolic-link define-logical-name file-name-absolute-p file-exists-p file-readable-p file-writable-p file-symlink-p file-directory-p file-modes set-file-modes file-newer-than-file-p verify-visited-file-modtime clear-visited-file-modtime file-nlinks recover-file kill-some-buffers auto-save-mode make-auto-save-file-name auto-save-file-name-p save-buffers-kill-emacs normal-mode set-auto-mode hack-local-variables set-visited-file-name write-file backup-buffer file-name-sans-version make-backup-file-name backup-file-name-p find-backup-file-name save-buffer basic-save-buffer delete-auto-save-file-if-necessary basic-save-buffer save-some-buffers not-modified toggle-read-only do-auto-save set-buffer-auto-saved recent-auto-save-p read-file-name-internal read-file-name insert-file-contents insert-file append-to-file revert-buffer recover-file write-region verify-visited-file-modtime clear-visited-file-modtime load-file load-library find-file find-file-other-window find-file-read-only find-alternate-file create-file-buffer find-file-noselect after-find-file delete-auto-save-files auto-save-mode rename-auto-save-file make-auto-save-file-name auto-save-file-name-p Variables insert-default-directory revert-buffer-function list-directory-brief-switches list-directory-verbose-switches vms-stmlf-recfm lpr-switches tags-file-name Windows windowp pos-visible-in-window-p window-buffer window-height window-width window-hscroll set-window-hscroll window-edges window-point window-start set-window-point set-window-start delete-window next-window previous-window other-window get-lru-window get-largest-window get-buffer-window delete-other-windows delete-windows-on replace-buffer-in-windows show-buffer selected-window select-window display-buffer split-window enlarge-window shrink-window split-window-vertically split-window-horizontally enlarge-window-horizontally shrink-window-horizontally scroll-up scroll-down scroll-left scroll-right scroll-other-window recenter move-to-window-line save-window-excursion redraw-display set-screen-height set-screen-width screen-height screen-width Variables no-redraw-on-recenter scroll-step debug-end-pos truncate-partial-width-windows mode-line-inverse-video global-mode-string ctl-x-4-map pop-up-windows next-screen-context-lines split-height-threshold window-min-height window-min-width Processes processp get-process get-buffer-process delete-process process-status process-exit-status process-id process-name process-command set-process-buffer process-buffer process-mark set-process-filter process-filter set-process-sentinel process-sentinel process-kill-without-query list-processes start-process accept-process-output waiting-for-user-input-p process-send-region process-send-string interrupt-process kill-process quit-process stop-process continue-process process-send-eof call-process call-process-region shell-command shell-command-on-region Variables delete-exited-processes process-connection-type exec-path exec-directory process-environment compile-command Operating system interface getenv load-average user-login-name user-real-login-name user-full-name system-name current-time-string display-time pwd cd kill-emacs dump-emacs suspend-emacs compile grep shell shell-command shell-command-on-region rnews rmail mail Variables command-line-args system-type non-interactive shell-file-name shell-prompt-pattern display-time-day-and-date command-line-processed inhibit-startup-message inhibit-default-init Permutted Command Index Subject Index ================ Dave Duff (duffd@ge-crd.ARPA) General Electric Corporate Research and Development Schenectady, New York
alex@umbc3.UUCP (10/01/87)
In article <527@home.CSNET> ekberg@home.CSNET (Tom Ekberg) writes: >Does anyone out there know of a programmers guide for gnuemacs? After >reviewing some of the source files I can do some minimal coding (being >proficient in Common Lisp helps) but there are some things that would be >difficult to know by just reading the code. Even a summary of all of the forms >would help (yes, I have looked at the documentation string but even that isn't >enough). Well, how about it? > >-- > -- tom (aisle C-4L), EKBERG%TI-CSL@CSNET-RELAY
pauls@inco.UUCP (Paul Stygar) (10/01/87)
> Does anyone out there know of a programmers guide for gnuemacs? After > reviewing some of the source files I can do some minimal coding (being > proficient in Common Lisp helps) but there are some things that would be > difficult to know by just reading the code. Even a summary of all of the > forms would help (yes, I have looked at the documentation string but even > that isn't enough). Well, how about it? Have you looked at the file /usr/local/emacs/etc/DOC ? It has over 200KB. Apparently it is what is used by the C-h f (describe-function) and the C-h v (describe-variable), so it's relatively complete. It's fairly close to a "summary of all the forms". Some cut&paste would be needed to put DOC into a outline suitable for a programmer's manual. About 80% of the material is organized: ie., logically related items often appear in sequence. For example, to find all the info on "mark", there is no index, so one does string searches, and there are several clusters of info on "mark" scattered throughout. Think of it as a gold mine. Emacs provides all the tools needed to search and retrieve the various treasures and potions et al. The files TO_DO and TO-DO have RMS's wish list for GnuEmacs, and LISP Manual is definitely on the wish list. Since DOC uses ^_F and ^_V to indicate the beginning of a describe-function and a describe-variable entry respectively, it was a useful exercise to write some Gnu Lisp code to scan DOC and insert CR CR TAB in place of each entry and wrap parentheses around each function: (defun undoc () " Reformat DOC into a Forms Summary: Convert ^_Fstring to CR CR TAB (string) CR Convert ^_Vstring to CR CR TAB string CR " (while (not (eobp)) (cond ((= (following-char) ?\C-_ ) (delete-char 1) (newline 2) (insert ?\t) (cond ((= (following-char) ?V) (delete-char 1) (end-of-line)) ((= (following-char) ?F) (delete-char 1) (insert ?( ) (end-of-line) (insert ?) ))) (newline))) (forward-char))) To try this code, put "undoc" in a file "undoc.el" in your work directory, copy DOC to your directory, add the following to .emacs in your home directory: (setq load-path (cons "/your-work-pwd" load-path)) Then just do "emacs DOC", M-ESC (load "undoc"), M-ESC (undoc) and wait ... You can C-G to stop (undoc) at any point, then just M-ESC (undoc) to resume. The result: a do-it-yourself Forms Summary. Enjoy! -- |~ \^/ |~ |~ o| /O.o\ |~ o| |~ o| Paul Stygar** ( ) o| o| (703) 442-7960** _!_ ...!seismo!sundc!hadron!inco!pauls** **McDonnell Douglas-Inco, Inc., 8201 Greensboro Drive, McLean, VA 22102** **BEGIN*DISCLAIMER;*****The*views*expressed*above*in*no*way*reflect*the** **views*of*McDonnell*Douglas*or*its*subsidiaries.*******END*DISCLAIMER;**
root@yale.UUCP (Celray Stalk) (10/02/87)
In article <527@home.CSNET> ekberg@home.CSNET (Tom Ekberg) writes: >Does anyone out there know of a programmers guide for gnuemacs? About a year ago, Robert Krawitz posted a chapter he wrote for the not-yet-existent GNU Emacs Programmer's manual, called Lisp Functions and Emacs Commands. It describes Emacs Lisp, the "interactive" function, writing commands in C, and so on. I find it extremely useful. I can e-mail it to you if you want it. Since it is a little long and has already been posted, I'd rather not post it again. -- Ashwin Ram -- ARPA: Ram-Ashwin@cs.yale.edu UUCP: {decvax,linus,seismo}!yale!Ram-Ashwin BITNET: Ram@yalecs