Mercurial > emacs
view src/=XTests.c @ 25986:29aeb35781cd
Added support for indenting existing scripts.
(sh-mode-map): Added new bindings.
(sh-mode): Updated mode doc-string for new commands, added
make-local-variable calls, initialize mode-specific variables.
(sh-indent-line): Renamed to sh-basic-indent-line; sh-indent-line
is now a different function.
(sh-header-marker): Changed docstring.
(sh-set-shell): Initialize mode-specific variables.
(sh-case, sh-for, sh-if, sh-indexed-loop, sh-repeat, sh-select)
(sh-tmp-file, sh-until, sh-until, sh-while, sh-while-getopts):
Changed these define-skeleton calls to work with user-specified
indentation settings.
(sh-basic-indent-line, sh-blink, sh-calculate-indent)
(sh-check-paren-in-case, sh-check-rule, sh-do-nothing)
(sh-electric-hash, sh-electric-less, sh-electric-rparen)
(sh-find-prev-matching, sh-find-prev-switch, sh-get-indent-info)
(sh-get-indent-var-for-line, sh-get-kw, sh-get-word)
(sh-goto-match-for-done, sh-goto-matching-case, sh-goto-matching-if)
(sh-guess-basic-offset, sh-handle-after-case-label)
(sh-handle-prev-case, sh-handle-prev-case-alt-end, sh-handle-prev-do)
(sh-handle-prev-done, sh-handle-prev-else, sh-handle-prev-esac)
(sh-handle-prev-fi, sh-handle-prev-if, sh-handle-prev-open)
(sh-handle-prev-rc-case, sh-handle-prev-then, sh-handle-this-close)
(sh-handle-this-do, sh-handle-this-done, sh-handle-this-else)
(sh-handle-this-esac, sh-handle-this-fi, sh-handle-this-rc-case)
(sh-handle-this-then, sh-help-string-for-variable)
(sh-in-comment-or-string, sh-indent-line, sh-learn-buffer-indent)
(sh-learn-line-indent, sh-load-style, sh-make-vars-local, sh-mark-init)
(sh-mark-line, sh-mkword-regexpr, sh-mkword-regexp)
(sh-must-be-shell-mode, sh-must-support-indent, sh-name-style)
(sh-prev-line, sh-prev-stmt, sh-prev-thing, sh-read-variable)
(sh-remove-our-text-properties, sh-rescan-buffer)
(sh-reset-indent-vars-to-global-values, sh-safe-backward-sexp)
(sh-safe-forward-sexp, sh-save-styles-to-buffer, sh-scan-buffer)
(sh-scan-case, sh-search-word, sh-set-char-syntax)
(sh-set-here-doc-region, sh-set-indent, sh-set-var-value)
(sh-show-indent, sh-this-is-a-continuation, sh-var-value): New
functions.
(sh-debug, sh-electric-rparen-needed, sh-here-doc-syntax)
(sh-indent-supported, sh-kw, sh-kw-alist, sh-kws-for-done)
(sh-learned-buffer-hook, sh-make-vars-local, sh-regexp-for-done)
(sh-special-keywords, sh-special-syntax, sh-st-punc, sh-styles-alist)
(sh-var-list): New variables.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Tue, 12 Oct 1999 12:30:38 +0000 |
parents | 3165b2697c78 |
children |
line wrap: on
line source
#include <X11/Xlib.h> #include <X11/X.h> #include <X11/Xutil.h> #include <X11/Xresource.h> #include "XTests.h" #include <stdio.h> static Display *dpy; static void quit (dpy) Display *dpy; { XCloseDisplay (dpy); exit (0); } static Colormap screen_colormap; static unsigned long obtain_color (color) char *color; { int exists; XColor color_def; if (!screen_colormap) screen_colormap = DefaultColormap (dpy, DefaultScreen (dpy)); exists = XParseColor (dpy, screen_colormap, color, &color_def) && XAllocColor (dpy, screen_colormap, &color_def); if (exists) return color_def.pixel; fprintf (stderr, "Can't get color; using black."); return BlackPixel (dpy, DefaultScreen (dpy)); } static char *visual_strings[] = { "StaticGray ", "GrayScale ", "StaticColor", "PseudoColor", "TrueColor ", "DirectColor" }; main (argc,argv) int argc; char *argv[]; { char *dpy_string; int n; long mask; Visual *my_visual; XVisualInfo *vinfo, visual_template; XEvent event; Window window; Screen *scr; XGCValues gc_values; GC fill_gc, pix_gc, line_xor_gc, line_xor_inv_gc; int i; int x, y, width, height, geometry, gravity; char *geo; char default_geo[] = "80x40+0+0"; int depth; Pixmap pix; char *string = "Kill the head and the body will die."; char dash_list[] = {4, 4}; int dashes = 2; if (argc < 2) dpy_string = "localhost:0.0"; else dpy_string = argv[1]; if (argc >= 3) { XSizeHints hints; printf ("Geometry: %s\t(default: %s)\n", argv[2], default_geo); geo = argv[2]; XWMGeometry (dpy, DefaultScreen (dpy), geo, default_geo, 3, &hints, &x, &y, &width, &height, &gravity); } dpy = XOpenDisplay (dpy_string); if (!dpy) { printf ("Can' open display %s\n", dpy_string); exit (1); } window = XCreateSimpleWindow (dpy, DefaultRootWindow (dpy), 300, 300, 300, 300, 1, BlackPixel (dpy, DefaultScreen (dpy)), WhitePixel (dpy, DefaultScreen (dpy))); XSelectInput (dpy, window, ButtonPressMask | KeyPressMask | EnterWindowMask | LeaveWindowMask); gc_values.foreground = obtain_color ("blue"); gc_values.background = WhitePixel (dpy, DefaultScreen (dpy)); fill_gc = XCreateGC (dpy, window, GCForeground | GCBackground, &gc_values); gc_values.foreground = obtain_color ("red"); gc_values.line_width = 3; gc_values.line_style = LineOnOffDash; gc_values.cap_style = CapRound; gc_values.join_style = JoinRound; line_xor_gc = XCreateGC (dpy, window, GCForeground | GCBackground | GCLineStyle | GCJoinStyle | GCCapStyle | GCLineWidth, &gc_values); XSetDashes (dpy, line_xor_gc, 0, dash_list, dashes); line_xor_inv_gc = XCreateGC (dpy, window, GCForeground | GCBackground | GCLineWidth, &gc_values); depth = DefaultDepthOfScreen (ScreenOfDisplay (dpy, DefaultScreen (dpy))); pix = XCreateBitmapFromData (dpy, window, page_glyf_bits, page_glyf_width, page_glyf_height); XMapWindow (dpy, window); XFlush (dpy); while (1) { XNextEvent (dpy, &event); switch (event.type) { case ButtonPress: switch (event.xbutton.button) { case Button1: XDrawLine (dpy, window, line_xor_gc, 25, 75, 300, 75); break; case Button2: XDrawLine (dpy, window, line_xor_inv_gc, 25, 25, 300, 25); break; case Button3: XDrawLine (dpy, window, line_xor_gc, 25, 25, 25, 125); break; } break; case KeyPress: { char buf[20]; int n; XComposeStatus status; KeySym keysym; n = XLookupString (&event, buf, 20, &keysym, (XComposeStatus *) &status); if (n == 1 && buf[0] == 'q') quit (dpy); } break; case EnterNotify: XCopyPlane (dpy, pix, window, fill_gc, 0, 0, page_glyf_width, page_glyf_height, 100, 100, 1L); XFillRectangle (dpy, window, fill_gc, 50, 50, 50, 50); break; case LeaveNotify: XClearWindow (dpy, window); break; } XFlush (dpy); } }