summaryrefslogtreecommitdiffstats
path: root/contrib/nvi/common/msg.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/nvi/common/msg.h')
-rw-r--r--contrib/nvi/common/msg.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/contrib/nvi/common/msg.h b/contrib/nvi/common/msg.h
new file mode 100644
index 0000000..b10f4cc
--- /dev/null
+++ b/contrib/nvi/common/msg.h
@@ -0,0 +1,65 @@
+/*-
+ * Copyright (c) 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ * Copyright (c) 1993, 1994, 1995, 1996
+ * Keith Bostic. All rights reserved.
+ *
+ * See the LICENSE file for redistribution information.
+ *
+ * @(#)msg.h 10.10 (Berkeley) 5/10/96
+ */
+
+/*
+ * Common messages (continuation or confirmation).
+ */
+typedef enum {
+ CMSG_CONF, CMSG_CONT, CMSG_CONT_EX,
+ CMSG_CONT_R, CMSG_CONT_S, CMSG_CONT_Q } cmsg_t;
+
+/*
+ * Message types.
+ *
+ * !!!
+ * In historical vi, O_VERBOSE didn't exist, and O_TERSE made the error
+ * messages shorter. In this implementation, O_TERSE has no effect and
+ * O_VERBOSE results in informational displays about common errors, for
+ * naive users.
+ *
+ * M_NONE Display to the user, no reformatting, no nothing.
+ *
+ * M_BERR Error: M_ERR if O_VERBOSE, else bell.
+ * M_ERR Error: Display in inverse video.
+ * M_INFO Info: Display in normal video.
+ * M_SYSERR Error: M_ERR, using strerror(3) message.
+ * M_VINFO Info: M_INFO if O_VERBOSE, else ignore.
+ *
+ * The underlying message display routines only need to know about M_NONE,
+ * M_ERR and M_INFO -- all the other message types are converted into one
+ * of them by the message routines.
+ */
+typedef enum {
+ M_NONE = 1, M_BERR, M_ERR, M_INFO, M_SYSERR, M_VINFO } mtype_t;
+
+/*
+ * There are major problems with error messages being generated by routines
+ * preparing the screen to display error messages. It's possible for the
+ * editor to generate messages before we have a screen in which to display
+ * them, or during the transition between ex (and vi startup) and a true vi.
+ * There's a queue in the global area to hold them.
+ *
+ * If SC_EX/SC_VI is set, that's the mode that the editor is in. If the flag
+ * S_SCREEN_READY is set, that means that the screen is prepared to display
+ * messages.
+ */
+typedef struct _msgh MSGH; /* MSGS list head structure. */
+LIST_HEAD(_msgh, _msg);
+struct _msg {
+ LIST_ENTRY(_msg) q; /* Linked list of messages. */
+ mtype_t mtype; /* Message type: M_NONE, M_ERR, M_INFO. */
+ char *buf; /* Message buffer. */
+ size_t len; /* Message length. */
+};
+
+/* Flags to msgq_status(). */
+#define MSTAT_SHOWLAST 0x01 /* Show the line number of the last line. */
+#define MSTAT_TRUNCATE 0x02 /* Truncate the file name if it's too long. */
OpenPOWER on IntegriCloud