📄 syntax.c
字号:
a++;
c->between_delimiters = 1;
}
check_a;
if (!strcmp (*a, "whole")) {
a++;
c->whole_word_chars_left = strdup (whole_left);
c->whole_word_chars_right = strdup (whole_right);
} else if (!strcmp (*a, "wholeleft")) {
a++;
c->whole_word_chars_left = strdup (whole_left);
} else if (!strcmp (*a, "wholeright")) {
a++;
c->whole_word_chars_right = strdup (whole_right);
}
check_a;
if (!strcmp (*a, "linestart")) {
a++;
c->line_start_left = 1;
}
check_a;
c->left = strdup (*a++);
check_a;
if (!strcmp (*a, "linestart")) {
a++;
c->line_start_right = 1;
}
check_a;
c->right = strdup (*a++);
c->last_left = c->left[strlen (c->left) - 1];
c->last_right = c->right[strlen (c->right) - 1];
c->first_left = *c->left;
c->first_right = *c->right;
c->single_char = (strlen (c->right) == 1);
}
c->keyword = syntax_malloc (1024 * sizeof (struct key_word *));
num_words = 1;
c->keyword[0] = syntax_malloc (sizeof (struct key_word));
fg = *a;
if (*a)
a++;
bg = *a;
if (*a)
a++;
#ifdef MIDNIGHT
c->keyword[0]->fg = this_try_alloc_color_pair (fg, bg);
#else
c->keyword[0]->fg = this_allocate_color (fg);
c->keyword[0]->bg = this_allocate_color (bg);
#endif
c->keyword[0]->keyword = strdup (" ");
check_not_a;
num_contexts++;
} else if (!strcmp (args[0], "keyword")) {
struct key_word *k;
if (num_words == -1)
*a = 0;
check_a;
k = r[num_contexts - 1]->keyword[num_words] = syntax_malloc (sizeof (struct key_word));
if (!strcmp (*a, "whole")) {
a++;
k->whole_word_chars_left = strdup (whole_left);
k->whole_word_chars_right = strdup (whole_right);
} else if (!strcmp (*a, "wholeleft")) {
a++;
k->whole_word_chars_left = strdup (whole_left);
} else if (!strcmp (*a, "wholeright")) {
a++;
k->whole_word_chars_right = strdup (whole_right);
}
check_a;
if (!strcmp (*a, "linestart")) {
a++;
k->line_start = 1;
}
check_a;
if (!strcmp (*a, "whole")) {
*a = 0;
check_a;
}
k->keyword = strdup (*a++);
k->last = k->keyword[strlen (k->keyword) - 1];
k->first = *k->keyword;
fg = *a;
if (*a)
a++;
bg = *a;
if (*a)
a++;
#ifdef MIDNIGHT
k->fg = this_try_alloc_color_pair (fg, bg);
#else
k->fg = this_allocate_color (fg);
k->bg = this_allocate_color (bg);
#endif
check_not_a;
num_words++;
} else if (!strncmp (args[0], "#", 1)) {
/* do nothing for comment */
} else if (!strcmp (args[0], "file")) {
break;
} else { /* anything else is an error */
*a = 0;
check_a;
}
free_args (args);
syntax_free (l);
}
free_args (args);
syntax_free (l);
if (result)
return result;
if (num_contexts == -1) {
result = line;
return result;
}
for (i = 1; edit->rules[i]; i++) {
for (j = i + 1; edit->rules[j]; j++) {
if (strstr (edit->rules[j]->right, edit->rules[i]->right) && strcmp (edit->rules[i]->right, "\n")) {
unsigned char *s;
if (!edit->rules[i]->conflicts)
edit->rules[i]->conflicts = syntax_malloc (sizeof (unsigned char) * 260);
s = edit->rules[i]->conflicts;
s[strlen ((char *) s)] = (unsigned char) j;
}
}
}
{
char first_chars[1024], *p;
char last_chars[1024], *q;
for (i = 0; edit->rules[i]; i++) {
c = edit->rules[i];
p = first_chars;
q = last_chars;
*p++ = (char) 1;
*q++ = (char) 1;
for (j = 1; c->keyword[j]; j++) {
*p++ = c->keyword[j]->first;
*q++ = c->keyword[j]->last;
}
*p = '\0';
*q = '\0';
c->keyword_first_chars = strdup (first_chars);
c->keyword_last_chars = strdup (last_chars);
}
}
return result;
}
void (*syntax_change_callback) (CWidget *) = 0;
void edit_set_syntax_change_callback (void (*callback) (CWidget *))
{
syntax_change_callback = callback;
}
void edit_free_syntax_rules (WEdit * edit)
{
int i, j;
if (!edit)
return;
if (!edit->rules)
return;
syntax_free (edit->syntax_type);
if (syntax_change_callback)
#ifdef MIDNIGHT
(*syntax_change_callback) (&edit->widget);
#else
(*syntax_change_callback) (edit->widget);
#endif
for (i = 0; edit->rules[i]; i++) {
if (edit->rules[i]->keyword) {
for (j = 0; edit->rules[i]->keyword[j]; j++) {
syntax_free (edit->rules[i]->keyword[j]->keyword);
syntax_free (edit->rules[i]->keyword[j]->whole_word_chars_left);
syntax_free (edit->rules[i]->keyword[j]->whole_word_chars_right);
syntax_free (edit->rules[i]->keyword[j]);
}
}
syntax_free (edit->rules[i]->conflicts);
syntax_free (edit->rules[i]->left);
syntax_free (edit->rules[i]->right);
syntax_free (edit->rules[i]->whole_word_chars_left);
syntax_free (edit->rules[i]->whole_word_chars_right);
syntax_free (edit->rules[i]->keyword);
syntax_free (edit->rules[i]->keyword_first_chars);
syntax_free (edit->rules[i]->keyword_last_chars);
syntax_free (edit->rules[i]);
}
syntax_free (edit->rules);
}
#define CURRENT_SYNTAX_RULES_VERSION "22"
char *syntax_text =
"# syntax rules version " CURRENT_SYNTAX_RULES_VERSION "\n"
"# Allowable colors for mc are\n"
"# (after the slash is a Cooledit color, 0-26 or any of the X colors in rgb.txt)\n"
"# black\n"
"# red\n"
"# green\n"
"# brown\n"
"# blue\n"
"# magenta\n"
"# cyan\n"
"# lightgray\n"
"# gray\n"
"# brightred\n"
"# brightgreen\n"
"# yellow\n"
"# brightblue\n"
"# brightmagenta\n"
"# brightcyan\n"
"# white\n"
"\n"
"###############################################################################\n"
"file ..\\*\\\\.tex$ LaTeX\\s2.09\\sDocument\n"
"context default\n"
"wholechars left \\\\\n"
"wholechars right abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\n"
"\n"
"# type style\n"
" keyword whole \\\\tiny yellow/24\n"
" keyword whole \\\\scriptsize yellow/24\n"
" keyword whole \\\\footnotesize yellow/24\n"
" keyword whole \\\\small yellow/24\n"
" keyword whole \\\\normalsize yellow/24\n"
" keyword whole \\\\large yellow/24\n"
" keyword whole \\\\Large yellow/24\n"
" keyword whole \\\\LARGE yellow/24\n"
" keyword whole \\\\huge yellow/24\n"
" keyword whole \\\\Huge yellow/24\n"
"\n"
"# accents and symbols\n"
" keyword whole \\\\`{\\[aeiouAEIOU\\]} yellow/24\n"
" keyword whole \\\\'{\\[aeiouAEIOU\\]} yellow/24\n"
" keyword whole \\\\^{\\[aeiouAEIOU\\]} yellow/24\n"
" keyword whole \\\\\"{\\[aeiouAEIOU\\]} yellow/24\n"
" keyword whole \\\\~{\\[aeiouAEIOU\\]} yellow/24\n"
" keyword whole \\\\={\\[aeiouAEIOU\\]} yellow/24\n"
" keyword whole \\\\.{\\[aeiouAEIOU\\]} yellow/24\n"
" keyword whole \\\\u{\\[aeiouAEIOU\\]} yellow/24\n"
" keyword whole \\\\v{\\[aeiouAEIOU\\]} yellow/24\n"
" keyword whole \\\\H{\\[aeiouAEIOU\\]} yellow/24\n"
" keyword whole \\\\t{\\[aeiouAEIOU\\]} yellow/24\n"
" keyword whole \\\\c{\\[aeiouAEIOU\\]} yellow/24\n"
" keyword whole \\\\d{\\[aeiouAEIOU\\]} yellow/24\n"
" keyword whole \\\\b{\\[aeiouAEIOU\\]} yellow/24\n"
"\n"
" keyword whole \\\\dag yellow/24\n"
" keyword whole \\\\ddag yellow/24\n"
" keyword whole \\\\S yellow/24\n"
" keyword whole \\\\P yellow/24\n"
" keyword whole \\\\copyright yellow/24\n"
" keyword whole \\\\pounds yellow/24\n"
"\n"
"# sectioning and table of contents\n"
" keyword whole \\\\part[*]{*} brightred/19\n"
" keyword whole \\\\part{*} brightred/19\n"
" keyword whole \\\\part\\*{*} brightred/19\n"
" keyword whole \\\\chapter[*]{*} brightred/19\n"
" keyword whole \\\\chapter{*} brightred/19\n"
" keyword whole \\\\chapter\\*{*} brightred/19\n"
" keyword whole \\\\section[*]{*} brightred/19\n"
" keyword whole \\\\section{*} brightred/19\n"
" keyword whole \\\\section\\*{*} brightred/19\n"
" keyword whole \\\\subsection[*]{*} brightred/19\n"
" keyword whole \\\\subsection{*} brightred/19\n"
" keyword whole \\\\subsection\\*{*} brightred/19\n"
" keyword whole \\\\subsubsection[*]{*} brightred/19\n"
" keyword whole \\\\subsubsection{*} brightred/19\n"
" keyword whole \\\\subsubsection\\*{*} brightred/19\n"
" keyword whole \\\\paragraph[*]{*} brightred/19\n"
" keyword whole \\\\paragraph{*} brightred/19\n"
" keyword whole \\\\paragraph\\*{*} brightred/19\n"
" keyword whole \\\\subparagraph[*]{*} brightred/19\n"
" keyword whole \\\\subparagraph{*} brightred/19\n"
" keyword whole \\\\subparagraph\\*{*} brightred/19\n"
"\n"
" keyword whole \\\\appendix brightred/19\n"
" keyword whole \\\\tableofcontents brightred/19\n"
"\n"
"# misc\n"
" keyword whole \\\\item[*] yellow/24\n"
" keyword whole \\\\item yellow/24\n"
" keyword whole \\\\\\\\ yellow/24\n"
" keyword \\\\\\s yellow/24 black/0\n"
" keyword %% yellow/24\n"
"\n"
"# docuement and page styles \n"
" keyword whole \\\\documentstyle[*]{*} yellow/20\n"
" keyword whole \\\\documentstyle{*} yellow/20\n"
" keyword whole \\\\pagestyle{*} yellow/20\n"
"\n"
"# cross references\n"
" keyword whole \\\\label{*} yellow/24\n"
" keyword whole \\\\ref{*} yellow/24\n"
"\n"
"# bibliography and citations\n"
" keyword whole \\\\bibliography{*} yellow/24\n"
" keyword whole \\\\bibitem[*]{*} yellow/24\n"
" keyword whole \\\\bibitem{*} yellow/24\n"
" keyword whole \\\\cite[*]{*} yellow/24\n"
" keyword whole \\\\cite{*} yellow/24\n"
"\n"
"# splitting the input\n"
" keyword whole \\\\input{*} yellow/20\n"
" keyword whole \\\\include{*} yellow/20\n"
" keyword whole \\\\includeonly{*} yellow/20\n"
"\n"
"# line breaking\n"
" keyword whole \\\\linebreak[\\[01234\\]] yellow/24\n"
" keyword whole \\\\nolinebreak[\\[01234\\]] yellow/24\n"
" keyword whole \\\\linebreak yellow/24\n"
" keyword whole \\\\nolinebreak yellow/24\n"
" keyword whole \\\\[+] yellow/24\n"
" keyword whole \\\\- yellow/24\n"
" keyword whole \\\\sloppy yellow/24\n"
"\n"
"# page breaking\n"
" keyword whole \\\\pagebreak[\\[01234\\]] yellow/24\n"
" keyword whole \\\\nopagebreak[\\[01234\\]] yellow/24\n"
" keyword whole \\\\pagebreak yellow/24\n"
" keyword whole \\\\nopagebreak yellow/24\n"
" keyword whole \\\\samepage yellow/24\n"
" keyword whole \\\\newpage yellow/24\n"
" keyword whole \\\\clearpage yellow/24\n"
"\n"
"# defintiions\n"
" keyword \\\\newcommand{*}[*] cyan/5\n"
" keyword \\\\newcommand{*} cyan/5\n"
" keyword \\\\newenvironment{*}[*]{*} cyan/5\n"
" keyword \\\\newenvironment{*}{*} cyan/5\n"
"\n"
"# boxes\n"
"\n"
"# begins and ends\n"
" keyword \\\\begin{document} brightred/14\n"
" keyword \\\\begin{equation} brightred/14\n"
" keyword \\\\begin{eqnarray} brightred/14\n"
" keyword \\\\begin{quote} brightred/14\n"
" keyword \\\\begin{quotation} brightred/14\n"
" keyword \\\\begin{center} brightred/14\n"
" keyword \\\\begin{verse} brightred/14\n"
" keyword \\\\begin{verbatim} brightred/14\n"
" keyword \\\\begin{itemize} brightred/14\n"
" keyword \\\\begin{enumerate} brightred/14\n"
" keyword \\\\begin{description} brightred/14\n"
" keyword \\\\begin{array} brightred/14\n"
" keyword \\\\begin{tabular} brightred/14\n"
" keyword \\\\begin{thebibliography}{*} brightred/14\n"
" keyword \\\\begin{sloppypar} brightred/14\n"
"\n"
" keyword \\\\end{document} brightred/14\n"
" keyword \\\\end{equation} brightred/14\n"
" keyword \\\\end{eqnarray} brightred/14\n"
" keyword \\\\end{quote} brightred/14\n"
" keyword \\\\end{quotation} brightred/14\n"
" keyword \\\\end{center} brightred/14\n"
" keyword \\\\end{verse} brightred/14\n"
" keyword \\\\end{verbatim} brightred/14\n"
" keyword \\\\end{itemize} brightred/14\n"
" keyword \\\\end{enumerate} brightred/14\n"
" keyword \\\\end{description} brightred/14\n"
" keyword \\\\end{array} brightred/14\n"
" keyword \\\\end{tabular} brightred/14\n"
" keyword \\\\end{thebibliography}{*} brightred/14\n"
" keyword \\\\end{sloppypar} brightred/14\n"
"\n"
" keyword \\\\begin{*} brightcyan/16\n"
" keyword \\\\end{*} brightcyan/16\n"
"\n"
" keyword \\\\theorem{*}{*} yellow/24\n"
"\n"
"# if all else fails\n"
" keyword whole \\\\+[*]{*}{*}{*} brightcyan/17\n"
" keyword whole \\\\+[*]{*}{*} brightcyan/17\n"
" keyword whole \\\\+{*}{*}{*}{*} brightcyan/17\n"
" keyword whole \\\\+{*}{*}{*} brightcyan/17\n"
" keyword whole \\\\+{*}{*} brightcyan/17\n"
" keyword whole \\\\+{*} brightcyan/17\n"
" keyword \\\\\\[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\\]\\n brightcyan/17\n"
" keyword \\\\\\[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\\]\\s brightcyan/17\n"
" keyword \\\\\\[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\\]\\t brightcyan/17\n"
"\n"
"context \\\\pagenumbering{ } yellow/20\n"
" keyword arabic brightcyan/17\n"
" keyword roman brightcyan/17\n"
" keyword alph brightcyan/17\n"
" keyword Roman brightcyan/17\n"
" keyword Alph brightcyan/17\n"
"\n"
"context % \\n brown/22\n"
"\n"
"# mathematical formulas\n"
"context $ $ brightgreen/6\n"
"context exclusive \\\\begin{equation} \\\\end{equation} brightgreen/6\n"
"context exclusive \\\\begin{eqnarray} \\\\end{eqnarray} brightgreen/6\n"
"\n"
"\n"
"###############################################################################\n"
"file ..\\*\\\\.([chC]|CC|cxx|cc|cpp|CPP|CXX)$ C/C\\+\\+\\sProgram\n"
"context default\n"
" keyword whole auto yellow/24\n"
" keyword whole break yellow/24\n"
" keyword whole case yellow/24\n"
" keyword whole char yellow/24\n"
" keyword whole const yellow/24\n"
" keyword whole continue yellow/24\n"
" keyword whole default yellow/24\n"
" keyword whole do yellow/24\n"
" keyword whole double yellow/24\n"
" keyword whole else yellow/24\n"
" keyword whole enum yellow/24\n"
" keyword whole extern yellow/24\n"
" keyword whole float yellow/24\n"
" keyword whole for yellow/24\n"
" keyword whole goto yellow/24\n"
" keyword whole if yellow/24\n"
" keyword whole int yellow/24\n"
" keyword whole long yellow/24\n"
" keyword whole register yellow/24\n"
" keyword whole return yellow/24\n"
" keyword whole short yellow/24\n"
" keyword whole signed yellow/24\n"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -