qemacs-commit
[Top][All Lists]
Advanced

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

[Qemacs-commit] qemacs TODO.org clang.c extra-modes.c extras.c ...


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs TODO.org clang.c extra-modes.c extras.c ...
Date: Fri, 31 Mar 2017 11:33:03 -0400 (EDT)

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        17/03/31 11:33:02

Modified files:
        .              : TODO.org clang.c extra-modes.c extras.c qe.c 
                         qe.h 

Log message:
        tags: fix some bugs, extend system
        - pass target window to completion functions
        - fix tag completion at find-tag prompt
        - add tag support in python mode
        - set tag offset to the actual word instead of start of line

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/TODO.org?cvsroot=qemacs&r1=1.30&r2=1.31
http://cvs.savannah.gnu.org/viewcvs/qemacs/clang.c?cvsroot=qemacs&r1=1.118&r2=1.119
http://cvs.savannah.gnu.org/viewcvs/qemacs/extra-modes.c?cvsroot=qemacs&r1=1.56&r2=1.57
http://cvs.savannah.gnu.org/viewcvs/qemacs/extras.c?cvsroot=qemacs&r1=1.62&r2=1.63
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.c?cvsroot=qemacs&r1=1.258&r2=1.259
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.243&r2=1.244

Patches:
Index: TODO.org
===================================================================
RCS file: /sources/qemacs/qemacs/TODO.org,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- TODO.org    31 Mar 2017 07:51:56 -0000      1.30
+++ TODO.org    31 Mar 2017 15:33:02 -0000      1.31
@@ -1,11 +1,10 @@
 ; TODO list for qemacs
 ;
 ; Author: Charles Gordon
-; Updated: 2017-03-25
+; Updated: 2017-03-31
 
 * Needed for release version 5
 
-
 * Priority 0
 
 ** basic: fix current position when changing buffer attached to window
@@ -238,7 +237,9 @@
    qemacs does not take into account combination performed by the terminal.
    Terminal glyph width of 0 should be supported.
 ** deal with accents in filenames (OS/X uses separate utf8 accents)
-** 256 color mode
+** support 256 and true color escapes in tty emulator
+** support st-256-color terminal
+** support 256 and true color terminals
 ** auto-fill-mode
 ** auto-revert-mode, global-auto-revert-mode, auto-revert-tail-mode
 ** rectangular regions, cut/paste
@@ -568,3 +569,37 @@
 M-g M-g goto-line (with prefix argument)
 M-g M-p previous-error
 M-g M-n next-error
+
+colorizing bug: static int (*qe__initcall_first)(void) qe__init_call = NULL;
+missed tag: static int (*qe__initcall_first)(void) qe__init_call = NULL;
+
+create tags in other languages:
+ats.c:201:                        style = ATS_STYLE_FUNCTION;
+elm.c:233:                    style = ELM_STYLE_FUNCTION;
+extra-modes.c:515:                    style = VIM_STYLE_FUNCTION;
+extra-modes.c:686:                        style = PASCAL_STYLE_FUNCTION;
+extra-modes.c:866:                style = ADA_STYLE_FUNCTION;
+extra-modes.c:1017:                style = FORTRAN_STYLE_FUNCTION;
+extra-modes.c:1086:                style = INI_STYLE_FUNCTION;
+extra-modes.c:1706:                    SET_COLOR(str, start, i, 
LUA_STYLE_FUNCTION);
+extra-modes.c:1973:                    SET_COLOR(str, start, i, 
JULIA_STYLE_FUNCTION);
+extra-modes.c:2194:                    style = HASKELL_STYLE_FUNCTION;
+extra-modes.c:2551:                    style = COFFEE_STYLE_FUNCTION;
+extra-modes.c:2793:                    style = PYTHON_STYLE_FUNCTION;
+extra-modes.c:3285:                    style = RUBY_STYLE_FUNCTION;
+extra-modes.c:3540:                style = ERLANG_STYLE_FUNCTION;
+extra-modes.c:3829:                    style = ELIXIR_STYLE_FUNCTION;
+extra-modes.c:4054:                    style = OCAML_STYLE_FUNCTION;
+extra-modes.c:4165:                style = EMF_STYLE_FUNCTION;
+extra-modes.c:4331:                    style = AGENA_STYLE_FUNCTION;
+extra-modes.c:4693:                        style = SCAD_STYLE_FUNCTION;
+groovy.c:425:                    style = GROOVY_STYLE_FUNCTION;
+icon.c:177:                    style = ICON_STYLE_FUNCTION;
+jai.c:215:                    style = JAI_STYLE_FUNCTION;
+latex-mode.c:94:            SET_COLOR(str, start, i, LATEX_STYLE_FUNCTION);
+makemode.c:253:                    SET_COLOR(str, start, i, 
CMAKE_STYLE_FUNCTION);
+nim.c:306:                    style = NIM_STYLE_FUNCTION;
+rlang.c:169:                    style = R_STYLE_FUNCTION;
+rust.c:249:                    style = RUST_STYLE_FUNCTION;
+swift.c:284:                    style = C_STYLE_FUNCTION;
+virgil.c:426:                    style = VIRGIL_STYLE_FUNCTION;

Index: clang.c
===================================================================
RCS file: /sources/qemacs/qemacs/clang.c,v
retrieving revision 1.118
retrieving revision 1.119
diff -u -b -r1.118 -r1.119
--- clang.c     31 Mar 2017 07:51:56 -0000      1.118
+++ clang.c     31 Mar 2017 15:33:02 -0000      1.119
@@ -546,7 +546,8 @@
         case '(':
         case '{':
             tag = 0;
-            break;
+            continue;
+
         default:
         normal:
             if (state & IN_C_PREPROCESS)
@@ -584,7 +585,8 @@
                     i2++;
 
                 if (tag && qe_findchar("({[,;=", str[i1])) {
-                    eb_add_property(cp->b, cp->offset, QE_PROP_TAG, 
qe_strdup(kbuf));
+                    eb_add_property(cp->b, cp->offset + start,
+                                    QE_PROP_TAG, qe_strdup(kbuf));
                 }
 
                 if ((start == 0 || str[start - 1] != '.')
@@ -1723,14 +1725,16 @@
                     style = C_STYLE_FUNCTION;
                     if (tag) {
                         /* tag function definition */
-                        eb_add_property(cp->b, cp->offset, QE_PROP_TAG, 
qe_strdup(kbuf));
+                        eb_add_property(cp->b, cp->offset + start,
+                                        QE_PROP_TAG, qe_strdup(kbuf));
                         tag = 0;
                     }
                     break;
                 } else
                 if (tag && qe_findchar("(,;=", str[i1])) {
                     /* tag variable definition */
-                    eb_add_property(cp->b, cp->offset, QE_PROP_TAG, 
qe_strdup(kbuf));
+                    eb_add_property(cp->b, cp->offset + start,
+                                    QE_PROP_TAG, qe_strdup(kbuf));
                 }
 
                 if ((start == 0 || str[start - 1] != '.')

Index: extra-modes.c
===================================================================
RCS file: /sources/qemacs/qemacs/extra-modes.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -b -r1.56 -r1.57
--- extra-modes.c       25 Mar 2017 18:14:59 -0000      1.56
+++ extra-modes.c       31 Mar 2017 15:33:02 -0000      1.57
@@ -2621,7 +2621,7 @@
 static void python_colorize_line(QEColorizeContext *cp,
                                  unsigned int *str, int n, ModeDef *syn)
 {
-    int i = 0, start = i, c, style = 0, sep, klen;
+    int i = 0, start = i, c, style = 0, sep, klen, i1, tag = 0;
     int state = cp->colorize_state;
     char kbuf[32];
 
@@ -2642,6 +2642,8 @@
         goto parse_long_string;
     }
 
+    tag = !qe_isblank(str[i]);
+
     while (i < n) {
         start = i;
         c = str[i++];
@@ -2724,6 +2726,11 @@
             }
             goto has_alpha;
 
+        case '(':
+        case '{':
+            tag = 0;
+            continue;
+
         default:
             if (qe_isdigit(c)) {
                 if (c == '0' && qe_tolower(str[i]) == 'b') {
@@ -2778,13 +2785,30 @@
                 kbuf[klen] = '\0';
 
                 if (strfind(syn->keywords, kbuf)) {
+                    tag = strequal(kbuf, "def");
                     style = PYTHON_STYLE_KEYWORD;
                     break;
                 }
                 if (check_fcall(str, i)) {
                     style = PYTHON_STYLE_FUNCTION;
+                    if (tag) {
+                        /* tag function definition */
+                        eb_add_property(cp->b, cp->offset + start,
+                                        QE_PROP_TAG, qe_strdup(kbuf));
+                        tag = 0;
+                    }
                     break;
                 }
+                if (tag) {
+                    for (i1 = i; i1 < n && qe_isblank(str[i1]); i1++)
+                        continue;
+                    if (qe_findchar(",=", str[i1])) {
+                        /* tag variable definition */
+                        eb_add_property(cp->b, cp->offset + start,
+                                        QE_PROP_TAG, qe_strdup(kbuf));
+                        /* XXX: should colorize variable definition */
+                    }
+                }
                 continue;
             }
             continue;

Index: extras.c
===================================================================
RCS file: /sources/qemacs/qemacs/extras.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -b -r1.62 -r1.63
--- extras.c    31 Mar 2017 07:51:56 -0000      1.62
+++ extras.c    31 Mar 2017 15:33:02 -0000      1.63
@@ -1518,13 +1518,15 @@
     /* XXX: only support current buffer */
     QEProperty *p;
 
-    tag_buffer(cp->s);
+    if (cp->target) {
+        tag_buffer(cp->target);
 
-    for (p = cp->s->b->property_list; p; p = p->next) {
+        for (p = cp->target->b->property_list; p; p = p->next) {
         if (p->type == QE_PROP_TAG) {
             complete_test(cp, p->data);
         }
     }
+    }
 }
 
 static void do_find_tag(EditState *s, const char *str) {

Index: qe.c
===================================================================
RCS file: /sources/qemacs/qemacs/qe.c,v
retrieving revision 1.258
retrieving revision 1.259
diff -u -b -r1.258 -r1.259
--- qe.c        31 Mar 2017 07:51:57 -0000      1.258
+++ qe.c        31 Mar 2017 15:33:02 -0000      1.259
@@ -5711,10 +5711,11 @@
     return NULL;
 }
 
-static void complete_start(EditState *s, CompleteState *cp)
+static void complete_start(CompleteState *cp, EditState *s, EditState *target)
 {
     memset(cp, 0, sizeof(*cp));
     cp->s = s;
+    cp->target = target;
     cp->len = eb_get_contents(s->b, cp->current, sizeof(cp->current));
 }
 
@@ -5797,7 +5798,7 @@
         return;
     }
 
-    complete_start(s, &cs);
+    complete_start(&cs, s, check_window(&minibuffer_saved_active));
     (*completion_function)(&cs);
     count = cs.cs.nb_items;
     outputs = cs.cs.items;

Index: qe.h
===================================================================
RCS file: /sources/qemacs/qemacs/qe.h,v
retrieving revision 1.243
retrieving revision 1.244
diff -u -b -r1.243 -r1.244
--- qe.h        31 Mar 2017 07:51:57 -0000      1.243
+++ qe.h        31 Mar 2017 15:33:02 -0000      1.244
@@ -184,8 +184,9 @@
 typedef struct CompleteState {
     StringArray cs;
     struct EditState *s;
-    char current[MAX_FILENAME_SIZE];
+    struct EditState *target;
     int len;
+    char current[MAX_FILENAME_SIZE];
 } CompleteState;
 
 /* media definitions */



reply via email to

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