xref: /minix/external/bsd/nvi/dist/motif_l/m_func.c (revision 0a6a1f1d)
184d9c625SLionel Sambuc /*-
284d9c625SLionel Sambuc  * Copyright (c) 1996
384d9c625SLionel Sambuc  *	Rob Zimmermann.  All rights reserved.
484d9c625SLionel Sambuc  * Copyright (c) 1996
584d9c625SLionel Sambuc  *	Keith Bostic.  All rights reserved.
684d9c625SLionel Sambuc  *
784d9c625SLionel Sambuc  * See the LICENSE file for redistribution information.
884d9c625SLionel Sambuc  */
984d9c625SLionel Sambuc 
1084d9c625SLionel Sambuc #include "config.h"
1184d9c625SLionel Sambuc 
12*0a6a1f1dSLionel Sambuc #include <sys/cdefs.h>
13*0a6a1f1dSLionel Sambuc #if 0
1484d9c625SLionel Sambuc #ifndef lint
1584d9c625SLionel Sambuc static const char sccsid[] = "Id: m_func.c,v 8.28 2003/11/05 17:09:59 skimo Exp  (Berkeley) Date: 2003/11/05 17:09:59 ";
1684d9c625SLionel Sambuc #endif /* not lint */
17*0a6a1f1dSLionel Sambuc #else
18*0a6a1f1dSLionel Sambuc __RCSID("$NetBSD: m_func.c,v 1.2 2014/01/26 21:43:45 christos Exp $");
19*0a6a1f1dSLionel Sambuc #endif
2084d9c625SLionel Sambuc 
2184d9c625SLionel Sambuc #include <sys/types.h>
2284d9c625SLionel Sambuc #include <sys/queue.h>
2384d9c625SLionel Sambuc 
2484d9c625SLionel Sambuc #include <Xm/PanedW.h>
2584d9c625SLionel Sambuc #include <Xm/ScrollBar.h>
2684d9c625SLionel Sambuc 
2784d9c625SLionel Sambuc #include <bitstring.h>
2884d9c625SLionel Sambuc #include <stdio.h>
2984d9c625SLionel Sambuc #include <stdlib.h>
3084d9c625SLionel Sambuc #include <string.h>
3184d9c625SLionel Sambuc 
3284d9c625SLionel Sambuc #undef LOCK_SUCCESS
3384d9c625SLionel Sambuc #include "../common/common.h"
3484d9c625SLionel Sambuc #include "../ipc/ip.h"
3584d9c625SLionel Sambuc #include "m_motif.h"
3684d9c625SLionel Sambuc 
3784d9c625SLionel Sambuc 
3884d9c625SLionel Sambuc static int
vi_addstr(int ipvi,char * str1,u_int32_t len1)3984d9c625SLionel Sambuc vi_addstr(int ipvi, char *str1, u_int32_t len1)
4084d9c625SLionel Sambuc {
4184d9c625SLionel Sambuc #ifdef TRACE
4284d9c625SLionel Sambuc 	vtrace("addstr() {%.*s}\n", ipbp->len1, ipbp->str1);
4384d9c625SLionel Sambuc #endif
4484d9c625SLionel Sambuc 	/* Add to backing store. */
4584d9c625SLionel Sambuc 	memcpy(CharAt(__vi_screen, __vi_screen->cury, __vi_screen->curx),
4684d9c625SLionel Sambuc 	    str1, len1);
4784d9c625SLionel Sambuc 	memset(FlagAt(__vi_screen, __vi_screen->cury, __vi_screen->curx),
4884d9c625SLionel Sambuc 	    __vi_screen->color, len1);
4984d9c625SLionel Sambuc 
5084d9c625SLionel Sambuc 	/* Draw from backing store. */
5184d9c625SLionel Sambuc 	__vi_draw_text(__vi_screen,
5284d9c625SLionel Sambuc 	    __vi_screen->cury, __vi_screen->curx, len1);
5384d9c625SLionel Sambuc 
5484d9c625SLionel Sambuc 	/* Advance the caret. */
5584d9c625SLionel Sambuc 	__vi_move_caret(__vi_screen,
5684d9c625SLionel Sambuc 	    __vi_screen->cury, __vi_screen->curx + len1);
5784d9c625SLionel Sambuc 	return (0);
5884d9c625SLionel Sambuc }
5984d9c625SLionel Sambuc 
6084d9c625SLionel Sambuc static int
vi_attribute(int ipvi,u_int32_t val1,u_int32_t val2)6184d9c625SLionel Sambuc vi_attribute(int ipvi, u_int32_t val1, u_int32_t val2)
6284d9c625SLionel Sambuc {
6384d9c625SLionel Sambuc 	switch (val1) {
6484d9c625SLionel Sambuc 	case SA_ALTERNATE:
6584d9c625SLionel Sambuc 		/* XXX: Nothing. */
6684d9c625SLionel Sambuc 		break;
6784d9c625SLionel Sambuc 	case SA_INVERSE:
6884d9c625SLionel Sambuc 		__vi_screen->color = val2;
6984d9c625SLionel Sambuc 		break;
7084d9c625SLionel Sambuc 	}
7184d9c625SLionel Sambuc 	return (0);
7284d9c625SLionel Sambuc }
7384d9c625SLionel Sambuc 
7484d9c625SLionel Sambuc static int
vi_bell(int ipvi)7584d9c625SLionel Sambuc vi_bell(int ipvi)
7684d9c625SLionel Sambuc {
7784d9c625SLionel Sambuc 	/*
7884d9c625SLionel Sambuc 	 * XXX
7984d9c625SLionel Sambuc 	 * Future... implement visible bell.
8084d9c625SLionel Sambuc 	 */
8184d9c625SLionel Sambuc 	XBell(XtDisplay(__vi_screen->area), 0);
8284d9c625SLionel Sambuc 	return (0);
8384d9c625SLionel Sambuc }
8484d9c625SLionel Sambuc 
8584d9c625SLionel Sambuc static int
vi_busyon(int ipvi,char * str1,u_int32_t len1)8684d9c625SLionel Sambuc vi_busyon(int ipvi, char *str1, u_int32_t len1)
8784d9c625SLionel Sambuc {
8884d9c625SLionel Sambuc 	__vi_set_cursor(__vi_screen, 1);
8984d9c625SLionel Sambuc 	return (0);
9084d9c625SLionel Sambuc }
9184d9c625SLionel Sambuc 
9284d9c625SLionel Sambuc static int
vi_busyoff(int ipvi)9384d9c625SLionel Sambuc vi_busyoff(int ipvi)
9484d9c625SLionel Sambuc {
9584d9c625SLionel Sambuc 	__vi_set_cursor(__vi_screen, 0);
9684d9c625SLionel Sambuc 	return (0);
9784d9c625SLionel Sambuc }
9884d9c625SLionel Sambuc 
9984d9c625SLionel Sambuc static int
vi_clrtoeol(int ipvi)10084d9c625SLionel Sambuc vi_clrtoeol(int ipvi)
10184d9c625SLionel Sambuc {
10284d9c625SLionel Sambuc 	int len;
10384d9c625SLionel Sambuc 	char *ptr;
10484d9c625SLionel Sambuc 
10584d9c625SLionel Sambuc 	len = __vi_screen->cols - __vi_screen->curx;
10684d9c625SLionel Sambuc 	ptr = CharAt(__vi_screen, __vi_screen->cury, __vi_screen->curx);
10784d9c625SLionel Sambuc 
10884d9c625SLionel Sambuc 	/* Clear backing store. */
10984d9c625SLionel Sambuc 	memset(ptr, ' ', len);
11084d9c625SLionel Sambuc 	memset(FlagAt(__vi_screen, __vi_screen->cury, __vi_screen->curx),
11184d9c625SLionel Sambuc 	    COLOR_STANDARD, len);
11284d9c625SLionel Sambuc 
11384d9c625SLionel Sambuc 	/* Draw from backing store. */
11484d9c625SLionel Sambuc 	__vi_draw_text(__vi_screen, __vi_screen->cury, __vi_screen->curx, len);
11584d9c625SLionel Sambuc 
11684d9c625SLionel Sambuc 	return (0);
11784d9c625SLionel Sambuc }
11884d9c625SLionel Sambuc 
11984d9c625SLionel Sambuc static int
vi_deleteln(int ipvi)12084d9c625SLionel Sambuc vi_deleteln(int ipvi)
12184d9c625SLionel Sambuc {
12284d9c625SLionel Sambuc 	int y, rows, len, height, width;
12384d9c625SLionel Sambuc 
12484d9c625SLionel Sambuc 	y = __vi_screen->cury;
12584d9c625SLionel Sambuc 	rows = __vi_screen->rows - (y+1);
12684d9c625SLionel Sambuc 	len = __vi_screen->cols * rows;
12784d9c625SLionel Sambuc 
12884d9c625SLionel Sambuc 	/* Don't want to copy the caret! */
12984d9c625SLionel Sambuc 	__vi_erase_caret(__vi_screen);
13084d9c625SLionel Sambuc 
13184d9c625SLionel Sambuc 	/* Adjust backing store and the flags. */
13284d9c625SLionel Sambuc 	memmove(CharAt(__vi_screen, y, 0), CharAt(__vi_screen, y+1, 0), len);
13384d9c625SLionel Sambuc 	memmove(FlagAt(__vi_screen, y, 0), FlagAt(__vi_screen, y+1, 0), len);
13484d9c625SLionel Sambuc 
13584d9c625SLionel Sambuc 	/* Move the bits on the screen. */
13684d9c625SLionel Sambuc 	width = __vi_screen->ch_width * __vi_screen->cols;
13784d9c625SLionel Sambuc 	height = __vi_screen->ch_height * rows;
13884d9c625SLionel Sambuc 	XCopyArea(XtDisplay(__vi_screen->area),		/* display */
13984d9c625SLionel Sambuc 		  XtWindow(__vi_screen->area),		/* src */
14084d9c625SLionel Sambuc 		  XtWindow(__vi_screen->area),		/* dest */
14184d9c625SLionel Sambuc 		  __vi_copy_gc,				/* context */
14284d9c625SLionel Sambuc 		  0, YTOP(__vi_screen, y+1),		/* srcx, srcy */
14384d9c625SLionel Sambuc 		  width, height,
14484d9c625SLionel Sambuc 		  0, YTOP(__vi_screen, y)		/* dstx, dsty */
14584d9c625SLionel Sambuc 		  );
14684d9c625SLionel Sambuc 	/* Need to let X take over. */
14784d9c625SLionel Sambuc 	XmUpdateDisplay(__vi_screen->area);
14884d9c625SLionel Sambuc 
14984d9c625SLionel Sambuc 	return (0);
15084d9c625SLionel Sambuc }
15184d9c625SLionel Sambuc 
15284d9c625SLionel Sambuc static int
vi_discard(int ipvi)15384d9c625SLionel Sambuc vi_discard(int ipvi)
15484d9c625SLionel Sambuc {
15584d9c625SLionel Sambuc 	/* XXX: Nothing. */
15684d9c625SLionel Sambuc 	return (0);
15784d9c625SLionel Sambuc }
15884d9c625SLionel Sambuc 
15984d9c625SLionel Sambuc static int
vi_insertln(int ipvi)16084d9c625SLionel Sambuc vi_insertln(int ipvi)
16184d9c625SLionel Sambuc {
16284d9c625SLionel Sambuc 	int y, rows, height, width;
16384d9c625SLionel Sambuc 	char *from, *to;
16484d9c625SLionel Sambuc 
16584d9c625SLionel Sambuc 	y = __vi_screen->cury;
16684d9c625SLionel Sambuc 	rows = __vi_screen->rows - (1+y);
16784d9c625SLionel Sambuc 	from = CharAt(__vi_screen, y, 0),
16884d9c625SLionel Sambuc 	to = CharAt(__vi_screen, y+1, 0);
16984d9c625SLionel Sambuc 
17084d9c625SLionel Sambuc 	/* Don't want to copy the caret! */
17184d9c625SLionel Sambuc 	__vi_erase_caret(__vi_screen);
17284d9c625SLionel Sambuc 
17384d9c625SLionel Sambuc 	/* Adjust backing store. */
17484d9c625SLionel Sambuc 	memmove(to, from, __vi_screen->cols * rows);
17584d9c625SLionel Sambuc 	memset(from, ' ', __vi_screen->cols);
17684d9c625SLionel Sambuc 
17784d9c625SLionel Sambuc 	/* And the backing store. */
17884d9c625SLionel Sambuc 	from = FlagAt(__vi_screen, y, 0),
17984d9c625SLionel Sambuc 	to = FlagAt(__vi_screen, y+1, 0);
18084d9c625SLionel Sambuc 	memmove(to, from, __vi_screen->cols * rows);
18184d9c625SLionel Sambuc 	memset(from, COLOR_STANDARD, __vi_screen->cols);
18284d9c625SLionel Sambuc 
18384d9c625SLionel Sambuc 	/* Move the bits on the screen. */
18484d9c625SLionel Sambuc 	width = __vi_screen->ch_width * __vi_screen->cols;
18584d9c625SLionel Sambuc 	height = __vi_screen->ch_height * rows;
18684d9c625SLionel Sambuc 
18784d9c625SLionel Sambuc 	XCopyArea(XtDisplay(__vi_screen->area),		/* display */
18884d9c625SLionel Sambuc 		  XtWindow(__vi_screen->area),		/* src */
18984d9c625SLionel Sambuc 		  XtWindow(__vi_screen->area),		/* dest */
19084d9c625SLionel Sambuc 		  __vi_copy_gc,				/* context */
19184d9c625SLionel Sambuc 		  0, YTOP(__vi_screen, y),		/* srcx, srcy */
19284d9c625SLionel Sambuc 		  width, height,
19384d9c625SLionel Sambuc 		  0, YTOP(__vi_screen, y+1)		/* dstx, dsty */
19484d9c625SLionel Sambuc 		  );
19584d9c625SLionel Sambuc 
19684d9c625SLionel Sambuc 	/* clear out the new space */
19784d9c625SLionel Sambuc 	XClearArea(XtDisplay(__vi_screen->area),	/* display */
19884d9c625SLionel Sambuc 		   XtWindow(__vi_screen->area),		/* window */
19984d9c625SLionel Sambuc 		   0, YTOP(__vi_screen, y),		/* srcx, srcy */
20084d9c625SLionel Sambuc 		   0, __vi_screen->ch_height,		/* w=full, height */
20184d9c625SLionel Sambuc 		   True					/* no exposures */
20284d9c625SLionel Sambuc 		   );
20384d9c625SLionel Sambuc 
20484d9c625SLionel Sambuc 	/* Need to let X take over. */
20584d9c625SLionel Sambuc 	XmUpdateDisplay(__vi_screen->area);
20684d9c625SLionel Sambuc 
20784d9c625SLionel Sambuc 	return (0);
20884d9c625SLionel Sambuc }
20984d9c625SLionel Sambuc 
21084d9c625SLionel Sambuc static int
vi_move(int ipvi,u_int32_t val1,u_int32_t val2)21184d9c625SLionel Sambuc vi_move(int ipvi, u_int32_t val1, u_int32_t val2)
21284d9c625SLionel Sambuc {
21384d9c625SLionel Sambuc 	__vi_move_caret(__vi_screen, val1, val2);
21484d9c625SLionel Sambuc 	return (0);
21584d9c625SLionel Sambuc }
21684d9c625SLionel Sambuc 
21784d9c625SLionel Sambuc static int
vi_redraw(int ipvi)21884d9c625SLionel Sambuc vi_redraw(int ipvi)
21984d9c625SLionel Sambuc {
22084d9c625SLionel Sambuc 	__vi_expose_func(0, __vi_screen, 0);
22184d9c625SLionel Sambuc 	return (0);
22284d9c625SLionel Sambuc }
22384d9c625SLionel Sambuc 
22484d9c625SLionel Sambuc static int
vi_refresh(int ipvi)22584d9c625SLionel Sambuc vi_refresh(int ipvi)
22684d9c625SLionel Sambuc {
22784d9c625SLionel Sambuc 	/* probably ok to scroll again */
22884d9c625SLionel Sambuc 	__vi_clear_scroll_block();
22984d9c625SLionel Sambuc 
23084d9c625SLionel Sambuc 	/* if the tag stack widget is active, set the text field there
23184d9c625SLionel Sambuc 	 * to agree with the current caret position.
23284d9c625SLionel Sambuc 	 * Note that this really ought to be done by core due to wrapping issues
23384d9c625SLionel Sambuc 	 */
23484d9c625SLionel Sambuc 	__vi_set_word_at_caret( __vi_screen );
23584d9c625SLionel Sambuc 
23684d9c625SLionel Sambuc 	/* similarly, the text ruler... */
23784d9c625SLionel Sambuc 	__vi_set_text_ruler( __vi_screen->cury, __vi_screen->curx );
23884d9c625SLionel Sambuc 
23984d9c625SLionel Sambuc 	return (0);
24084d9c625SLionel Sambuc }
24184d9c625SLionel Sambuc 
24284d9c625SLionel Sambuc static int
vi_quit(int ipvi)24384d9c625SLionel Sambuc vi_quit(int ipvi)
24484d9c625SLionel Sambuc {
24584d9c625SLionel Sambuc 	if (__vi_exitp != NULL)
24684d9c625SLionel Sambuc 		__vi_exitp();
24784d9c625SLionel Sambuc 
24884d9c625SLionel Sambuc 	return (0);
24984d9c625SLionel Sambuc }
25084d9c625SLionel Sambuc 
25184d9c625SLionel Sambuc static int
vi_rename(int ipvi,char * str1,u_int32_t len1)25284d9c625SLionel Sambuc vi_rename(int ipvi, char *str1, u_int32_t len1)
25384d9c625SLionel Sambuc {
25484d9c625SLionel Sambuc 	Widget shell;
25584d9c625SLionel Sambuc 	size_t len;
25684d9c625SLionel Sambuc 	const char *tail, *p;
25784d9c625SLionel Sambuc 
25884d9c625SLionel Sambuc 	/* For the icon, use the tail. */
25984d9c625SLionel Sambuc 	for (p = str1, len = len1; len > 1; ++p, --len)
26084d9c625SLionel Sambuc 		if (p[0] == '/')
26184d9c625SLionel Sambuc 			tail = p + 1;
26284d9c625SLionel Sambuc 	/*
26384d9c625SLionel Sambuc 	 * XXX
26484d9c625SLionel Sambuc 	 * Future:  Attach a title to each screen.  For now, we change
26584d9c625SLionel Sambuc 	 * the title of the shell.
26684d9c625SLionel Sambuc 	 */
26784d9c625SLionel Sambuc 	shell = __vi_screen->area;
26884d9c625SLionel Sambuc 	while ( ! XtIsShell(shell) ) shell = XtParent(shell);
26984d9c625SLionel Sambuc 	XtVaSetValues(shell,
27084d9c625SLionel Sambuc 		      XmNiconName,	tail,
27184d9c625SLionel Sambuc 		      XmNtitle,		str1,
27284d9c625SLionel Sambuc 		      0
27384d9c625SLionel Sambuc 		      );
27484d9c625SLionel Sambuc 	return (0);
27584d9c625SLionel Sambuc }
27684d9c625SLionel Sambuc 
27784d9c625SLionel Sambuc static int
vi_rewrite(int ipvi,u_int32_t val1)27884d9c625SLionel Sambuc vi_rewrite(int ipvi, u_int32_t val1)
27984d9c625SLionel Sambuc {
28084d9c625SLionel Sambuc 	/* XXX: Nothing. */
28184d9c625SLionel Sambuc 	return (0);
28284d9c625SLionel Sambuc }
28384d9c625SLionel Sambuc 
28484d9c625SLionel Sambuc 
28584d9c625SLionel Sambuc static int
vi_scrollbar(int ipvi,u_int32_t val1,u_int32_t val2,u_int32_t val3)28684d9c625SLionel Sambuc vi_scrollbar(int ipvi, u_int32_t val1, u_int32_t val2, u_int32_t val3)
28784d9c625SLionel Sambuc {
28884d9c625SLionel Sambuc 	int top, size, maximum, old_max;
28984d9c625SLionel Sambuc 
29084d9c625SLionel Sambuc 	/* in the buffer,
29184d9c625SLionel Sambuc 	 *	val1 contains the top visible line number
29284d9c625SLionel Sambuc 	 *	val2 contains the number of visible lines
29384d9c625SLionel Sambuc 	 *	val3 contains the number of lines in the file
29484d9c625SLionel Sambuc 	 */
29584d9c625SLionel Sambuc 	top	= val1;
29684d9c625SLionel Sambuc 	size	= val2;
29784d9c625SLionel Sambuc 	maximum	= val3;
29884d9c625SLionel Sambuc 
29984d9c625SLionel Sambuc #if 0
30084d9c625SLionel Sambuc 	fprintf( stderr, "Setting scrollbar\n" );
30184d9c625SLionel Sambuc 	fprintf( stderr, "\tvalue\t\t%d\n",	top );
30284d9c625SLionel Sambuc 	fprintf( stderr, "\tsize\t\t%d\n",	size );
30384d9c625SLionel Sambuc 	fprintf( stderr, "\tmaximum\t\t%d\n",	maximum );
30484d9c625SLionel Sambuc #endif
30584d9c625SLionel Sambuc 
30684d9c625SLionel Sambuc 	/* armor plating.  core thinks there are no lines in an
30784d9c625SLionel Sambuc 	 * empty file, but says we are on line 1
30884d9c625SLionel Sambuc 	 */
30984d9c625SLionel Sambuc 	if ( top >= maximum ) {
31084d9c625SLionel Sambuc #if 0
31184d9c625SLionel Sambuc 	    fprintf( stderr, "Correcting for top >= maximum\n" );
31284d9c625SLionel Sambuc #endif
31384d9c625SLionel Sambuc 	    maximum	= top + 1;
31484d9c625SLionel Sambuc 	    size	= 1;
31584d9c625SLionel Sambuc 	}
31684d9c625SLionel Sambuc 
31784d9c625SLionel Sambuc 	/* armor plating.  core may think there are more
31884d9c625SLionel Sambuc 	 * lines visible than remain in the file
31984d9c625SLionel Sambuc 	 */
32084d9c625SLionel Sambuc 	if ( top+size >= maximum ) {
32184d9c625SLionel Sambuc #if 0
32284d9c625SLionel Sambuc 	    fprintf( stderr, "Correcting for top+size >= maximum\n" );
32384d9c625SLionel Sambuc #endif
32484d9c625SLionel Sambuc 	    size	= maximum - top;
32584d9c625SLionel Sambuc 	}
32684d9c625SLionel Sambuc 
32784d9c625SLionel Sambuc 	/* need to increase the maximum before changing the values */
32884d9c625SLionel Sambuc 	XtVaGetValues( __vi_screen->scroll, XmNmaximum, &old_max, 0 );
32984d9c625SLionel Sambuc 	if ( maximum > old_max )
33084d9c625SLionel Sambuc 	    XtVaSetValues( __vi_screen->scroll, XmNmaximum, maximum, 0 );
33184d9c625SLionel Sambuc 
33284d9c625SLionel Sambuc 	/* change the rest of the values without generating a callback */
33384d9c625SLionel Sambuc 	XmScrollBarSetValues( __vi_screen->scroll,
33484d9c625SLionel Sambuc 			      top,
33584d9c625SLionel Sambuc 			      size,
33684d9c625SLionel Sambuc 			      1,	/* increment */
33784d9c625SLionel Sambuc 			      size,	/* page_increment */
33884d9c625SLionel Sambuc 			      False	/* do not notify me */
33984d9c625SLionel Sambuc 			      );
34084d9c625SLionel Sambuc 
34184d9c625SLionel Sambuc 	/* need to decrease the maximum after changing the values */
34284d9c625SLionel Sambuc 	if ( maximum < old_max )
34384d9c625SLionel Sambuc 	    XtVaSetValues( __vi_screen->scroll, XmNmaximum, maximum, 0 );
34484d9c625SLionel Sambuc 
34584d9c625SLionel Sambuc 	/* done */
34684d9c625SLionel Sambuc 	return (0);
34784d9c625SLionel Sambuc }
34884d9c625SLionel Sambuc 
34984d9c625SLionel Sambuc static int
vi_select(int ipvi,char * str1,u_int32_t len1)35084d9c625SLionel Sambuc vi_select(int ipvi, char *str1, u_int32_t len1)
35184d9c625SLionel Sambuc {
35284d9c625SLionel Sambuc 	/* XXX: Nothing. */
35384d9c625SLionel Sambuc 	return (0);
35484d9c625SLionel Sambuc }
35584d9c625SLionel Sambuc 
35684d9c625SLionel Sambuc static int
vi_split(int ipvi)35784d9c625SLionel Sambuc vi_split(int ipvi)
35884d9c625SLionel Sambuc {
35984d9c625SLionel Sambuc 	/* XXX: Nothing. */
36084d9c625SLionel Sambuc 	return (0);
36184d9c625SLionel Sambuc }
36284d9c625SLionel Sambuc 
36384d9c625SLionel Sambuc IPSIOPS ipsi_ops_motif = {
36484d9c625SLionel Sambuc 	vi_addstr,
36584d9c625SLionel Sambuc 	vi_attribute,
36684d9c625SLionel Sambuc 	vi_bell,
36784d9c625SLionel Sambuc 	vi_busyoff,
36884d9c625SLionel Sambuc 	vi_busyon,
36984d9c625SLionel Sambuc 	vi_clrtoeol,
37084d9c625SLionel Sambuc 	vi_deleteln,
37184d9c625SLionel Sambuc 	vi_discard,
37284d9c625SLionel Sambuc 	__vi_editopt,
37384d9c625SLionel Sambuc 	vi_insertln,
37484d9c625SLionel Sambuc 	vi_move,
37584d9c625SLionel Sambuc 	vi_quit,
37684d9c625SLionel Sambuc 	vi_redraw,
37784d9c625SLionel Sambuc 	vi_refresh,
37884d9c625SLionel Sambuc 	vi_rename,
37984d9c625SLionel Sambuc 	vi_rewrite,
38084d9c625SLionel Sambuc 	vi_scrollbar,
38184d9c625SLionel Sambuc 	vi_select,
38284d9c625SLionel Sambuc 	vi_split,
38384d9c625SLionel Sambuc 	vi_addstr,
38484d9c625SLionel Sambuc };
385