this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

added support for outline and more keywords

+48 -2
+48 -2
src/api/scheme.c
··· 870 870 871 871 static const char* const SchemeKeywords [] = 872 872 { 873 + "define", "lambda", "begin", "set!", "=", "<", "<=", ">", ">=", "+", "*", 874 + "/", "'", "`", "`@", "define-macro", "let", "let*", "letrec", 875 + "if", "cond", "floor", "ceiling", "sin", "cos", "log", "sqrt", "abs" 876 + "expt", "tan", "acos", "asin", "atan", "truncate", "round", 877 + "modulo", "remainder", "gcd", "lcm", "and", "or", 873 878 "eq?", "eqv?", "equal?", "equivalent?", "boolean?", "pair?", 874 879 "cons", "car", "cdr", "set-car!", "set-cdr!", "cadr", "cddr", 875 880 "cdar", "caar", "caadr", "caddr", "cadar", "caaar", "cdadr", ··· 901 906 "let?", "let-ref", "openlet", "openlet?" 902 907 }; 903 908 904 - /* static inline bool isalnum_(char c) {return isalnum(c) || c == '_';} */ 909 + static inline bool isalnum_(char c) {return isalnum(c) || c == '_' || c == '-' || c == ':' || c == '#';} 905 910 906 911 static const tic_outline_item* getSchemeOutline(const char* code, s32* size) 907 912 { ··· 915 920 free(items); 916 921 items = NULL; 917 922 } 918 - // todo: don't know what this does... 923 + 924 + const char* ptr = code; 925 + 926 + while(true) 927 + { 928 + static const char FuncString[] = "(define ("; 929 + 930 + ptr = strstr(ptr, FuncString); 931 + 932 + if(ptr) 933 + { 934 + ptr += sizeof FuncString - 1; 935 + 936 + const char* start = ptr; 937 + const char* end = start; 938 + 939 + while(*ptr) 940 + { 941 + char c = *ptr; 942 + 943 + if(isalnum_(c)); 944 + else 945 + { 946 + end = ptr; 947 + break; 948 + } 949 + ptr++; 950 + } 951 + 952 + if(end > start) 953 + { 954 + items = realloc(items, (*size + 1) * Size); 955 + 956 + items[*size].pos = start; 957 + items[*size].size = (s32)(end - start); 958 + 959 + (*size)++; 960 + } 961 + } 962 + else break; 963 + } 964 + 919 965 return items; 920 966 } 921 967