qemacs-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemacs-commit] qemacs shell.c


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs shell.c
Date: Thu, 10 Apr 2008 20:57:25 +0000

CVSROOT:        /cvsroot/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        08/04/10 20:57:25

Modified files:
        .              : shell.c 

Log message:
        fixed terminal emulation for charset selection

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/shell.c?cvsroot=qemacs&r1=1.52&r2=1.53

Patches:
Index: shell.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/shell.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -b -r1.52 -r1.53
--- shell.c     9 Apr 2008 16:51:30 -0000       1.52
+++ shell.c     10 Apr 2008 20:57:25 -0000      1.53
@@ -63,6 +63,7 @@
     int state;
     int esc1, esc2;
     int shifted;
+    int cset, charset[2];
     int grab_keys;
     EditBuffer *b;
     EditBuffer *b_color; /* color buffer, one byte per char */
@@ -704,14 +705,10 @@
             s->cur_offset = eb_goto_bol(s->b, s->cur_offset);
             break;
         case 14:        /* ^N  SO = shift out */
-            // was in qemacs-0.3.1.g2.gw
-            //eb_set_charset(s->b, &charset_8859_1);
-            s->shifted = 1;
+            s->shifted = s->charset[s->cset = 1];
             break;
         case 15:        /* ^O  SI = shift in */
-            // was in qemacs-0.3.1.g2.gw
-            //eb_set_charset(s->b, &charset_cp1125);
-            s->shifted = 0;
+            s->shifted = s->charset[s->cset = 0];
             break;
         default:
             if (c >= 32) {
@@ -764,6 +761,7 @@
              *        set-window-title=\E]0;title text\007,
              */
             switch (c) {
+            case '%':
             case '(':
             case ')':
             case '*':
@@ -790,14 +788,26 @@
         s->state = TTY_STATE_NORM;
         s->esc2 = c;
         switch (ESC2(s->esc1, c)) {
-        case ESC2('(','B'):     /* exit_alt_charset_mode */
-            s->shifted = 0;
+        case ESC2('%','G'):     /* set utf mode */
+        case ESC2('%','8'):     /* set utf mode */
+        case ESC2('%','@'):     /* reset utf mode */
+            break;
+        case ESC2('(','A'):     /* set charset0 CSET_GBCHR */
+        case ESC2('(','U'):     /* set charset0 CSET_SCOACS */
+        case ESC2('(','B'):     /* set charset0 CSET_ASCII */
+            s->charset[0] = 0;
+            break;
+        case ESC2('(','0'):     /* set charset0 CSET_LINEDRW */
+            s->charset[0] = 1;
+            break;
+        case ESC2(')','A'):     /* set charset1 CSET_GBCHR */
+        case ESC2(')','U'):     /* set charset1 CSET_SCOACS */
+        case ESC2(')','B'):     /* set charset1 CSET_ASCII */
+            s->charset[1] = 0;
             break;
-        case ESC2('(','0'):     /* enter_alt_charset_mode */
-            s->shifted = 1;
+        case ESC2(')','0'):     /* set charset1 CSET_LINEDRW */
+            s->charset[1] = 1;
             break;
-        case ESC2(')','B'):
-        case ESC2(')','0'):
         case ESC2('*','B'):
         case ESC2('+','B'):
             /* XXX: Todo */
@@ -814,6 +824,7 @@
             /* XXX: Todo */
             break;
         }
+        s->shifted = s->charset[s->cset];
         break;
     case TTY_STATE_STRING:
         /* CG: should store the string */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]