diff options
author | bfredl <bjorn.linse@gmail.com> | 2023-10-06 23:01:24 +0200 |
---|---|---|
committer | bfredl <bjorn.linse@gmail.com> | 2023-12-25 14:13:52 +0100 |
commit | e8acbc1ade5082563a9464ed3d1225414723390d (patch) | |
tree | 04ee4ebcc87ab7beaebd5e0b4390b0f4e4f5a213 /src | |
parent | ddc8dd187d1c4da451332faf545171f242aa6b7a (diff) | |
download | rneovim-e8acbc1ade5082563a9464ed3d1225414723390d.tar.gz rneovim-e8acbc1ade5082563a9464ed3d1225414723390d.tar.bz2 rneovim-e8acbc1ade5082563a9464ed3d1225414723390d.zip |
refactor(cpoptions): remove 'p'
Deleting a cpo flag a day keeps the doctor away
We don't need two different ways to indent LISP code
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/indent.c | 137 | ||||
-rw-r--r-- | src/nvim/option_vars.h | 1 | ||||
-rw-r--r-- | src/nvim/options.lua | 3 |
3 files changed, 63 insertions, 78 deletions
diff --git a/src/nvim/indent.c b/src/nvim/indent.c index adb609358d..051ff8643d 100644 --- a/src/nvim/indent.c +++ b/src/nvim/indent.c @@ -1167,9 +1167,6 @@ int get_lisp_indent(void) pos_T paren; int amount; - // Set vi_lisp to use the vi-compatible method. - int vi_lisp = (vim_strchr(p_cpo, CPO_LISP) != NULL); - pos_T realpos = curwin->w_cursor; curwin->w_cursor.col = 0; @@ -1247,36 +1244,74 @@ int get_lisp_indent(void) char *that = get_cursor_line_ptr(); - if (vi_lisp && (get_indent() == 0)) { - amount = 2; + char *line = that; + chartabsize_T cts; + init_chartabsize_arg(&cts, curwin, pos->lnum, 0, line, line); + while (*cts.cts_ptr != NUL && col > 0) { + cts.cts_vcol += lbr_chartabsize_adv(&cts); + col--; + } + amount = cts.cts_vcol; + that = cts.cts_ptr; + clear_chartabsize_arg(&cts); + + // Some keywords require "body" indenting rules (the + // non-standard-lisp ones are Scheme special forms): + // (let ((a 1)) instead (let ((a 1)) + // (...)) of (...)) + if (((*that == '(') || (*that == '[')) && lisp_match(that + 1)) { + amount += 2; } else { - char *line = that; - chartabsize_T cts; - init_chartabsize_arg(&cts, curwin, pos->lnum, 0, line, line); - while (*cts.cts_ptr != NUL && col > 0) { - cts.cts_vcol += lbr_chartabsize_adv(&cts); - col--; + if (*that != NUL) { + that++; + amount++; + } + colnr_T firsttry = amount; + + init_chartabsize_arg(&cts, curwin, (colnr_T)(that - line), + amount, line, that); + while (ascii_iswhite(*cts.cts_ptr)) { + cts.cts_vcol += lbr_chartabsize(&cts); + cts.cts_ptr++; } - amount = cts.cts_vcol; that = cts.cts_ptr; + amount = cts.cts_vcol; clear_chartabsize_arg(&cts); - // Some keywords require "body" indenting rules (the - // non-standard-lisp ones are Scheme special forms): - // (let ((a 1)) instead (let ((a 1)) - // (...)) of (...)) - if (!vi_lisp && ((*that == '(') || (*that == '[')) - && lisp_match(that + 1)) { - amount += 2; - } else { - if (*that != NUL) { - that++; - amount++; + if (*that && (*that != ';')) { + // Not a comment line. + // Test *that != '(' to accommodate first let/do + // argument if it is more than one line. + if ((*that != '(') && (*that != '[')) { + firsttry++; + } + + parencount = 0; + + init_chartabsize_arg(&cts, curwin, + (colnr_T)(that - line), amount, line, that); + if (((*that != '"') && (*that != '\'') && (*that != '#') + && (((uint8_t)(*that) < '0') || ((uint8_t)(*that) > '9')))) { + int quotecount = 0; + while (*cts.cts_ptr + && (!ascii_iswhite(*cts.cts_ptr) || quotecount || parencount)) { + if (*cts.cts_ptr == '"') { + quotecount = !quotecount; + } + if (((*cts.cts_ptr == '(') || (*cts.cts_ptr == '[')) && !quotecount) { + parencount++; + } + if (((*cts.cts_ptr == ')') || (*cts.cts_ptr == ']')) && !quotecount) { + parencount--; + } + if ((*cts.cts_ptr == '\\') && (*(cts.cts_ptr + 1) != NUL)) { + cts.cts_vcol += lbr_chartabsize_adv(&cts); + } + + cts.cts_vcol += lbr_chartabsize_adv(&cts); + } } - colnr_T firsttry = amount; - init_chartabsize_arg(&cts, curwin, (colnr_T)(that - line), - amount, line, that); while (ascii_iswhite(*cts.cts_ptr)) { cts.cts_vcol += lbr_chartabsize(&cts); cts.cts_ptr++; @@ -1285,54 +1320,8 @@ int get_lisp_indent(void) amount = cts.cts_vcol; clear_chartabsize_arg(&cts); - if (*that && (*that != ';')) { - // Not a comment line. - // Test *that != '(' to accommodate first let/do - // argument if it is more than one line. - if (!vi_lisp && (*that != '(') && (*that != '[')) { - firsttry++; - } - - parencount = 0; - - init_chartabsize_arg(&cts, curwin, - (colnr_T)(that - line), amount, line, that); - if (vi_lisp || ((*that != '"') && (*that != '\'') - && (*that != '#') - && (((uint8_t)(*that) < '0') || ((uint8_t)(*that) > '9')))) { - int quotecount = 0; - while (*cts.cts_ptr - && (!ascii_iswhite(*cts.cts_ptr) || quotecount || parencount) - && (!((*cts.cts_ptr == '(' || *cts.cts_ptr == '[') - && !quotecount && !parencount && vi_lisp))) { - if (*cts.cts_ptr == '"') { - quotecount = !quotecount; - } - if (((*cts.cts_ptr == '(') || (*cts.cts_ptr == '[')) && !quotecount) { - parencount++; - } - if (((*cts.cts_ptr == ')') || (*cts.cts_ptr == ']')) && !quotecount) { - parencount--; - } - if ((*cts.cts_ptr == '\\') && (*(cts.cts_ptr + 1) != NUL)) { - cts.cts_vcol += lbr_chartabsize_adv(&cts); - } - - cts.cts_vcol += lbr_chartabsize_adv(&cts); - } - } - - while (ascii_iswhite(*cts.cts_ptr)) { - cts.cts_vcol += lbr_chartabsize(&cts); - cts.cts_ptr++; - } - that = cts.cts_ptr; - amount = cts.cts_vcol; - clear_chartabsize_arg(&cts); - - if (!*that || (*that == ';')) { - amount = firsttry; - } + if (!*that || (*that == ';')) { + amount = firsttry; } } } diff --git a/src/nvim/option_vars.h b/src/nvim/option_vars.h index c3ab034c4c..dbbbfc6632 100644 --- a/src/nvim/option_vars.h +++ b/src/nvim/option_vars.h @@ -151,7 +151,6 @@ #define CPO_NUMCOL 'n' // 'number' column also used for text #define CPO_LINEOFF 'o' #define CPO_OVERNEW 'O' // silently overwrite new file -#define CPO_LISP 'p' // 'lisp' indenting #define CPO_FNAMEAPP 'P' // set file name for ":w >>file" #define CPO_JOINCOL 'q' // with "3J" use column after first join #define CPO_REDO 'r' diff --git a/src/nvim/options.lua b/src/nvim/options.lua index 8295483954..a997a41b77 100644 --- a/src/nvim/options.lua +++ b/src/nvim/options.lua @@ -1709,9 +1709,6 @@ return { when it didn't exist when editing it. This is a protection against a file unexpectedly created by someone else. Vi didn't complain about this. - *cpo-p* - p Vi compatible Lisp indenting. When not present, a - slightly better algorithm is used. *cpo-P* P When included, a ":write" command that appends to a file will set the file name for the current buffer, if |