Commit Graph

1026 Commits

Author SHA1 Message Date
Famiu Haque
b3d5138fd0 refactor(options): remove getoption_T and introduce OptVal (#23850)
Removes the `getoption_T` struct and also introduces the `OptVal` struct
to unify the methods of getting/setting different option value types.
This is the first of many PRs to reduce code duplication in the Vim
option code as well as to make options easier to maintain. It also
increases the flexibility and extensibility of options. Which opens the
door for things like Array and Dictionary options.
2023-06-07 08:05:16 +08:00
Famiu Haque
175e5c8b96 refactor(api): remove BOOL macro #23936
Remove redundant `BOOL` macro that does the same thing as `BOOLEAN_OBJ`.
2023-06-06 07:18:55 -07:00
Null Chilly
5a08b5be3c fix(tui): don't set tty background if &bg was set before VimEnter (#23701) 2023-05-26 11:51:02 +02:00
Famiu Haque
cfd4fdfea4 refactor(api): new helper macros
Adds new API helper macros `CSTR_AS_OBJ()`, `STATIC_CSTR_AS_OBJ()`, and `STATIC_CSTR_TO_OBJ()`, which cleans up a lot of the current code. These macros will also be used extensively in the upcoming option refactor PRs because then API Objects will be used to get/set options. This PR also modifies pre-existing code to use old API helper macros like `CSTR_TO_OBJ()` to make them cleaner.
2023-05-23 15:20:41 +06:00
ii14
d36dd2bae8 refactor: use xstrl{cpy,cat} on IObuff (#23648)
Replace usage of STR{CPY,CAT} with xstrl{cpy,cat} when using on IObuff

Co-authored-by: ii14 <ii14@users.noreply.github.com>
2023-05-16 11:33:03 +08:00
zeertzjq
fa1baa9a47 vim-patch:9.0.1520: completion for option name includes all bool options (#23518)
Problem:    Completion for option name includes all bool options.
Solution:   Do not recognize the "noinv" prefix.  Prefix "no" or "inv" when
            appropriate.

048d9d2521

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-07 08:00:08 +08:00
Luuk van Baal
9128fc79f0 vim-patch:9.0.0644: 'smoothscroll' is not copied to a new window on :split
Problem:    'smoothscroll' is not copied to a new window on :split.
Solution:   Copy the option value.  Add a test.

b1fd26d208

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-02 13:11:46 +02:00
Luuk van Baal
be11f80d01 vim-patch:9.0.0640: cannot scroll by screen line if a line wraps
Problem:    Cannot scroll by screen line if a line wraps.
Solution:   Add the 'smoothscroll' option.  Only works for CTRL-E and CTRL-Y
            so far.

f6196f4244

vim-patch:9.0.0641: missing part of the new option code

Problem:    Missing part of the new option code.
Solution:   Add missing WV_SMS.

bbbda8fd81

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-02 13:11:26 +02:00
Lewis Russell
2722bff0f3 refactor(option.c): make did_set callbacks static 2023-04-28 23:04:12 +08:00
Lewis Russell
d04770a543 vim-patch:9.0.1369: still some "else if" constructs for setting options
Problem:    Still some "else if" constructs for setting options.
Solution:   Add a few more functions for handling options. (Yegappan
            Lakshmanan, closes vim/vim#12090)

c6ff21e876
2023-04-28 23:04:12 +08:00
Lewis Russell
bb7371ad82 vim-patch:9.0.1353: too many "else if" statements to handle option values
Problem:    Too many "else if" statements to handle option values.
Solution:   Add more functions to handle option value changes. (Yegappan
            Lakshmanan, closes vim/vim#12058)

6d611de58c
2023-04-28 23:04:12 +08:00
Lewis Russell
ff34c91194 vim-patch:9.0.1330: handling new value of an option has a long "else if" chain
Problem:    Handling new value of an option has a long "else if" chain.
Solution:   Use a function pointer. (Yegappan Lakshmanan, closes vim/vim#12015)

af93691b53
2023-04-28 23:04:09 +08:00
dundargoc
3b0df1780e refactor: uncrustify
Notable changes: replace all infinite loops to `while(true)` and remove
`int` from `unsigned int`.
2023-04-26 23:23:44 +02:00
luukvbaal
bab4bcdefb fix(column): don't reset 'statuscolumn' width after it has been drawn
Problem:     'statuscolumn' width may be reset after it has been drawn
              when multiple windows contain the same buffer. This results
              in an offset for the drawn cursor position.
Solution:     Loop over all windows (twice) prior to drawing them to
              reset the 'statuscolumn' width and validate the sign
              column when necessary.
2023-04-24 15:22:11 +01:00
Lewis Russell
4d7a8b47b9 vim-patch:9.0.1311: Coverity warns for using a NULL pointer
Problem:    Coverity warns for using a NULL pointer.
Solution:   Use "empty_option" instead of NULL.

339e114d70

N/A patches for version.c:

vim-patch:9.0.1405: missing check for out-of-memory

Problem:    Missing check for out-of-memory.
Solution:   Check for alloc() returning NULL pointer. (closes vim/vim#12149)

14338024c1
2023-04-22 11:02:16 +01:00
Lewis Russell
a093c66bcd vim-patch:9.0.1308: the code for setting options is too complicated
Problem:    The code for setting options is too complicated.
Solution:   Refactor the code for setting options. (Yegappan Lakshmanan,
            closes vim/vim#11989)

1a6476428f
2023-04-22 11:02:04 +01:00
Lewis Russell
df4013cfc7 vim-patch:9.0.1293: the set_num_option() is too long
Problem:    The set_num_option() is too long.
Solution:   Move code to separate functions. (Yegappan Lakshmanan,
            closes vim/vim#11954)

0caaf1e465
2023-04-22 09:11:24 +01:00
Lewis Russell
5a643da450 vim-patch:9.0.1294: the set_bool_option() function is too long
Problem:    The set_bool_option() function is too long.
Solution:   Move code to separate functions. (Yegappan Lakshmanan,
            closes vim/vim#11964)

80b817b749

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2023-04-21 13:04:33 +01:00
Lewis Russell
3e41121e86 Merge pull request #23187 from luukvbaal/statuscolumn
fix(column): rebuild status column when sign column is invalid
2023-04-21 11:46:30 +01:00
zeertzjq
ea52961c54 refactor: fix PVS warnings (#23200) 2023-04-19 22:49:14 +08:00
Luuk van Baal
44d4f03573 fix(column): rebuild status column when sign column is invalid 2023-04-19 03:22:27 +02:00
zeertzjq
0c99ae7a88 vim-patch:8.2.4180: 'balloonexpr' is evaluated in the current script context
Problem:    'balloonexpr' is evaluated in the current script context.
Solution:   Use the script context where the option was set.

5600a709f4

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-17 15:46:24 +08:00
zeertzjq
8729c41f44 vim-patch:8.2.1080: Vim9: no line break allowed in a for loop
Problem:    Vim9: no line break allowed in a for loop.
Solution:   Skip line breaks in for command.

b7a78f7a67

Omit *_break_count and skip_for_lines(): Vim9 script only.

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-14 16:10:09 +08:00
ii14
2d78e656b7 refactor: remove redundant casts 2023-04-07 21:43:00 +02:00
ii14
04933b1ea9 refactor: remove redundant casts 2023-04-07 21:08:16 +02:00
ii14
9408f2dcf7 refactor: remove redundant const char * casts 2023-04-07 19:40:57 +02:00
ii14
371823d407 refactor: make error message definitions const
message.c functions now take const char * as a format. Error message
definitions can be made const.
2023-04-05 21:13:53 +02:00
dundargoc
d510bfbc8e refactor: remove char_u (#22829)
Closes https://github.com/neovim/neovim/issues/459
2023-04-02 16:11:42 +08:00
Michal Liszcz
b7748662ed fix(api): Use local LastSet structure in nvim_get_option_info (#22741)
fix(api): use local LastSet structure in nvim_get_option_info

* nvim_get_option_info is deprecated.
  It is always using the global LastSet information as reported in #15232.
* nvim_get_option_info2 is added.
  The new function additionally accepts an 'opts' table {scope, buf, win}
  allowing to specify the option scope and query local options from another
  buffer or window.
2023-03-29 09:59:01 +02:00
luukvbaal
eeac80de0c fix(column): invalidate statuscolumn width when UPD_NOT_VALID (#22723) 2023-03-19 09:21:49 +00:00
luukvbaal
204a8b17c8 fix(column): rebuild status column when sign column is invalidated (#22690)
* fix(column): rebuild status column when sign column is invalidated

Problem:    When implementing a custom sign column through
            `'statuscolumn'`, the status column is not properly rebuilt
            when the sign column width changes.
Solution:   Force a rebuild of the status column when the sign column
            width is invalidated.

* test(column): 'statuscolumn' has correct width when (un)placing signs
2023-03-18 11:44:44 +00:00
bfredl
d6ecead364 refactor(screen): screen.c delenda est
drawscreen.c vs screen.c makes absolutely no sense.
The screen exists only to draw upon it, therefore helper functions
are distributed randomly between screen.c and the file that
does the redrawing. In addition screen.c does a lot of drawing on the
screen.

It made more sense for vim/vim as our grid.c is their screen.c

Not sure if we want to dump all the code for option chars into
optionstr.c, so keep these in a optionchar.c for now.
2023-03-14 13:37:43 +01:00
ii14
2daf0b37db feat(options)!: deprecate paste, remove pastetoggle (#22647)
we cannot remove 'paste'. It is very common in plugins and configs.

'pastetoggle' can and should be removed though, it's a total waste of everyone's time because it generates bug reports and doesn't work well, and is useless because bracketed-paste works better.
2023-03-13 10:29:11 +08:00
bfredl
846a056744 refactor(redraw): make cursor position redraw use the "redraw later" pattern 2023-03-12 10:18:57 +01:00
Luuk van Baal
fe11079721 perf(statusline): UI elements are always redrawn on K_EVENT
Problem:    'statusline'-format UI elements are redrawn on each K_EVENT.
Solution:   Only redraw UI elements when something relevant has changed.
2023-03-08 12:36:03 +01:00
luukvbaal
bf4eada2c8 fix(column): issues with 'statuscolumn' width (#22542)
Problem:    'statuscolumn' width can be incorrect when toggling 'number'
            or setting 'statuscolumn'.
Solution:   Make sure the width is reset and re-estimated when
            'statuscolumn' and 'number' are set. (When 'relativenumber'
            is set this already happens because it always changes
            "nrwidth_line_count".)
2023-03-07 08:45:08 +08:00
zeertzjq
419819b624 vim-patch:9.0.1380: CTRL-X on 2**64 subtracts two (#22530)
Problem:    CTRL-X on 2**64 subtracts two. (James McCoy)
Solution:   Correct computation for large number. (closes vim/vim#12103)

5fb78c3fa5

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-03-05 09:18:42 +08:00
dundargoc
6cab36e5b7 refactor: replace char_u with char or uint8_t (#22400)
Work on https://github.com/neovim/neovim/issues/459
2023-03-04 20:10:00 +08:00
bfredl
1b3c1f6c06 refactor(build): graduate HAVE_LOCALE_H feature
Merge locale.h into os/lang.h
Having a source file with the same name as a system header we use is
considered an anti-pattern.
2023-03-03 14:19:46 +01:00
bfredl
cf07f2baab feat(edit)!: remove old c implementation of hebrew keymap
This feature has long been obsolete. The 'keymap' option can be used
to support language keymaps, including hebrew and hebrewp (phonetic
mapping). There is no need to keep the old c code with hardcoded
keymaps for some languages.
2023-02-28 15:14:03 +01:00
Lewis Russell
264fb6945b Merge pull request #22113 from luukvbaal/nrwidth
fix(column): no longer reset nrwidth_line_count for 'statuscolumn'
2023-02-14 14:37:01 +00:00
Justin M. Keyes
46a87a5d2b refactor(api): VALIDATE macros #22187
Problem:
- API validation involves too much boilerplate.
- API validation errors are not consistently worded.

Solution:
Introduce some macros. Currently these are clumsy, but they at least
help with consistency and avoid some nesting.
2023-02-14 02:19:04 -08:00
zeertzjq
20c9f4b352 vim-patch:9.0.1307: setting 'formatoptions' with :let doesn't check for errors (#22252)
Problem:    Setting 'formatoptions' with :let doesn't check for errors.
Solution:   Pass "errbuf" to set_string_option(). (Yegappan Lakshmanan,
            closes vim/vim#11974, closes vim/vim#11972)

32ff96ef01

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-02-14 08:29:05 +08:00
dundargoc
27177e5819 refactor: reduce scope of locals as per the style guide (#22211) 2023-02-11 14:14:24 +01:00
zeertzjq
224a3c77ca vim-patch:9.0.1295: the option initialization function is too long (#22222)
Problem:    The option initialization function is too long.
Solution:   Move code to separate functions. (Yegappan Lakshmanan,
            closes vim/vim#11966)

6c41bedeed

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-02-11 20:56:42 +08:00
dundargoc
4be6c6cf0d refactor: replace char_u with char (#21901)
refactor: replace char_u with char

Work on https://github.com/neovim/neovim/issues/459
2023-02-11 11:05:57 +01:00
dundargoc
7224c889e0 build: enable MSVC level 3 warnings (#21934)
MSVC has 4 different warning levels: 1 (severe), 2 (significant), 3
(production quality) and 4 (informational). Enabling level 3 warnings
mostly revealed conversion problems, similar to GCC/clang -Wconversion
flag.
2023-02-11 10:25:24 +01:00
bfredl
30b29a36e8 refactor(ui): remove some superfluous ui_flush() calls
- <expr> mapping has no business saving and restoring the
  low-level UI cursor. The cursor will be put in a reasonable
  position after input is processed, chill out.
- TUI handles output needed for suspend
- vgetc() family of function does flushing
2023-02-09 21:39:56 +01:00
Luuk van Baal
7a710f5f08 fix(column): no longer reset nrwidth_line_count for 'statuscolumn'
Problem:    We still explicitly reset `nrwidth_line_count` when changing
            `'number'` or `'relativenumber'` but this is no longer
            needed since the introduction of a `statuscol_line_count`.
Solution:   Remove reset of `nrwidth_line_count`. Resolve
            https://github.com/neovim/neovim/pull/22094#issuecomment-1416168926.
2023-02-04 00:17:04 +01:00
Lewis Russell
82fb6ce487 Merge pull request #21994 from lewis6991/refactor/option_set 2023-01-27 11:23:44 +00:00