]> code.delx.au - gnu-emacs/blobdiff - src/cm.c
(Vdefault_properties): New vbl.
[gnu-emacs] / src / cm.c
index f0ea1e26f1c84fcd62c52d5ca2090296d54b72a6..5d18e812e5a5f21520ce7a150c0e9a8645773692 100644 (file)
--- a/src/cm.c
+++ b/src/cm.c
@@ -99,6 +99,35 @@ addcol (n) {
 }
 #endif
 
+/*
+ * Terminals with magicwrap (xn) don't all behave identically.
+ * The VT100 leaves the cursor in the last column but will wrap before
+ * printing the next character.  I hear that the Concept terminal does
+ * the wrap immediately but ignores the next newline it sees.  And some
+ * terminals just have buggy firmware, and think that the cursor is still
+ * in limbo if we use direct cursor addressing from the phantom column.
+ * The only guaranteed safe thing to do is to emit a CRLF immediately
+ * after we reach the last column; this takes us to a known state.
+ */
+void
+cmcheckmagic ()
+{
+  if (curX == FrameCols)
+    {
+      if (!MagicWrap || curY >= FrameRows - 1)
+       abort ();
+      if (termscript)
+       putc ('\r', termscript);
+      putchar ('\r');
+      if (termscript)
+       putc ('\n', termscript);
+      putchar ('\n');
+      curX = 0;
+      curY++;
+    }
+}
+
+
 /*
  * (Re)Initialize the cost factors, given the output speed of the terminal
  * in the variable ospeed.  (Note: this holds B300, B9600, etc -- ie stuff