view etc/LEDIT @ 51207:7e176ef34c10

Make (many) trivial substitutions for renamed and new macros in dispextern.h, frame.h and window.h. (make_window): Initialize new members left_margin_cols, right_margin_cols, left_fringe_width, right_fringe_width, fringes_outside_margins, scroll_bar_width, and vertical_scroll_bar_type. (coordinates_in_window): Adapted to new fringe/margin positions and per-window fringes and scroll-bars. Fix bug related to incorrectly adjusting coordinates by frame's internal_border_width (the effect normally negible since the internal_border_width is typically 0 or 1 pixel, but very noticeable for an internal_border_width of e.g. 25 pixels). Upon successful return (other than ON_NOTHING), the coordinates are now always properly converted to window relative for the given display element. (window_from_coordinates): Add new parameters wx and wy to return the window relative x and y position in the returned window and part. A null arg means, don't return the position. All callers changed. (adjust_window_margins): New function which may reduce the width of the display margins if a window's text area is too small after resizing or splitting windows. (size_window): Fix bug that did not account for display margin widths when checking the minimum width of a window; use adjust_window_margins. (set_window_buffer): Call Fset_window_fringes and Fset_window_scroll_bars to setup per-window elements. Add new arg KEEP_MARGINS_P. Non-nil means to keep window's existing display margin, fringe widths, and scroll bar settings (e.g. after splitting a window or resizing the frame). All callers changed. (Fset_window_buffer): New arg KEEP_MARGINS. All callers changed. (Fsplit_window): Duplicate original window's display margin, fringe, and scroll-bar settings; then call Fset_window_buffer with KEEP_MARGINS non-nil. This fixes a bug which caused a split window to only preserve the display margins in one of the windows. When splitting horisontally, call adjust_window_margins on both windows to ensure that the text area of the new windows is non too narrow. This fixes a bug which could cause emacs to trap if the width of the split window was less than the width of the display margins. (window_box_text_cols): Renamed from window_internal_width. All uses changed. Adapt to per-window fringes and scroll bars. Fix bug that caused vertical separator to be subtracted also on window frames. Fix another bug that did not reduce the returned value by the columns used for display margins. (window_scroll_line_based): Fix bug related to scrolling too much when display margins are present (implicitly fixed by the fix to window_box_text_cols). (scroll_left, scroll_right): Fix bug related to scrolling too far by default when display margins are present (implicitly fixed by the fix to window_box_text_cols). (struct saved_window): Rename members left to left_col, top to top_line, width to total_cols, height to total_lines, orig_top to orig_top_line, orig_height to orig_total_lines. All uses changed. New members left_margin_cols, right_margin_cols, left_fringe_width, right_fringe_width, fringes_outside_margins, scroll_bar_width, and vertical_scroll_bar_type for saving per-window display elements. (Fset_window_configuration): Restore display margins, fringes, and scroll bar settings. This fixes a bug which caused display margins to be discarded when saving and restoring a window configuration. (save_window_save): Save display margins, fringes, and scroll bar settings. This fixes a bug which caused display margins to be discarded when saving and restoring a window configuration. (Fset_window_margins): Do nothing if display margins are not really changed. Otherwise, call adjust_window_margins to ensure the text area doesn't get too narrow. This fixes a bug which could cause emacs to trap if setting display margins wider than the width of the window. (Fset_window_fringes): New defun to allow user to specifically set this window's fringe widths and position vs. display margins. (Fwindow_fringes): New defun to return window's actual fringe settings. (Fset_window_scroll_bars): New defun to allow user to specifically set this window's scroll bar width and position. (Fwindow_scroll_bars): New defun to return window's actual scroll bar settings. (compare_window_configurations): Also compare display margins, fringes, and scroll bar settings. (syms_of_window): Defsubr new defuns for fringe and scroll bars.
author Kim F. Storm <storm@cua.dk>
date Sat, 24 May 2003 22:07:51 +0000
parents 23a1cea22d13
children
line wrap: on
line source

Date: 17 Apr 85 15:45:42 EST (Wed)
From: Martin David Connor <mdc@MIT-HTVAX.ARPA>

    Date: Sat, 13 Apr 85 16:28:15 est
    From: Richard M. Stallman <rms@mit-prep>

    Can you help this person?  Also, can you give me the rest of ledit
    to distribute, plus some info on how to use it?

I have put the files "ledit.l" and "leditcfns.c" on prep:~mdc.
Much to my disgust ledit.l relied on some bogus little package of
functions on HT, so I had to massage it a bit.

To get it to work, one must:

   - Compile leditcfns.c with something like:

     cc leditcfns.c

   - Edit ledit.l, changing the line beginning "(cfasl" to
     have the right pathname for the cfns file you compiled in
     the last step.

   - Compile ledit.l with:

     liszt ledit.l

Then put the following lines in your .lisprc file:

    ;load in functions for emacs interface
    (load "//src//mdc//ledit//ledit")   ; Location of Ledit library
    (set-proc-str "%gnumacs")		; Name of editor

Then you can use ^E <RETURN> to get from LISP back to gnumacs.

Here is the part of my .emacs file that pertains to ledit.

    ;;; Set up ledit mode
    (setq ledit-go-to-lisp-string "%lisp")
    (setq lisp-mode-hook 'ledit-from-lisp-mode)

    Date: Sat, 13 Apr 85 11:26:32 cst
    From: neves@wisc-ai.arpa (David Neves)

    This is a documentation question.
    I cannot figure out how to use Ledit.  I suspect I need some
    function on the Franz Lisp end of things to go to Emacs and read in
    the temporary file.  Is this true?  Is the Lisp job started within
    Emacs or outside of emacs?  I'm just plain confused.  Perhaps a couple
    of words from someone in the know would help.

    A related question.  I have been using a shell buffer when interacting
    with Lisp (ie. put a definition in the kill buffer and then yank it
    into the shell buffer to redefine it).  This is nice but tends to fill
    up the shell buffer with lots of code (I'd rather keep calls to functions
    in the shell and not the functions themselves).
    My question:  Is using the shell buffer "better" than ledit?  Am I using
    it in the best way (i.e. copying definitions from an edit buffer to the
    shell buffer)?    -Thanks, David Neves

I have found that ledit works well for doing programming development
when you are changing lots of little pieces of a file and don't wish
to recompile the whole file.  Of course M-X Compile is very nice for
calling up a liszt on a buffer and watching it in the another window.
Of course the interface of something like NIL is even better because
you can compile your function directly into your lisp.  But since NIL
doesn't run under Unix, this is probably the next best thing.

I have tried the 2 window method (shell in lower window, lisp code in
upper), and have found it a little awkward.  It does have certain
advantages, but most of the time, I get be fine using M-C-D to save a
defun for lisp, and C-X Z to jump back to LISP.  C-E RETURN from lisp
is also mnemonic for getting back to gnumacs.

I hope this helps somewhat.