aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/screen.c
Commit message (Collapse)AuthorAge
* win_T.w_cline_folded from int to boolNicolas Cornu2015-09-07
|
* screen.c: remove `screen_char_attr` #3235Justin M. Keyes2015-08-25
| | | | | | | screen_char_attr is always 0, it was obviated by 3baba1e7bc6698e6bc9f1d37fce88b30d6274bc9. References #1889
* vim-patch:7.4.667 #3043Marco Hinz2015-07-18
| | | | | | | | | | | | Problem: 'colorcolumn' isn't drawn in a closed fold while 'cursorcolumn' is. (Carlos Pita) Solution: Make it consistent. (Christian Brabandt) Original patch: https://github.com/vim/vim/commit/v7-4-667 Discussion: https://groups.google.com/forum/#!topic/vim_dev/Lidb7s4xn3Q
* vim-patch:7.4.719 #2817Andrea Cedraro2015-06-14
| | | | | | | Problem: Overflow when adding MAXCOL to a pointer. Solution: Subtract pointers instead. (James McCoy) https://github.com/vim/vim/commit/v7-4-719
* vim-patch:7.4.579 #2652David Bürgin2015-05-26
| | | | | | | | | Problem: Wrong cursor positioning when 'linebreak' is set and lines wrap. Solution: (Christian Brabandt) https://github.com/vim/vim/commit/v7-4-579 See https://groups.google.com/d/msg/vim_dev/Eh3N9L68Ajw/4dB5x1RTQJQJ
* Cleanup misc.Michael Reed2015-05-18
| | | | | | | | | | | | | | | Regarding debugger.txt (which was Spotted by @Hettomei): The third section was empty, and the second section is very outdated. Nvim doesn't have things like Balloon Evalutation and Sun Visual workshop integration, so just remove the section. Regarding everything else: - term.[ch] and term_defs.h don't exist anymore, so remove refs to them - Add ttybuiltin to vim_diff.txt. It should have been done before, but vim_diff.txt didn't exist when ttybuiltin was removed (done in 3baba1e7bc6698e6bc9f1d37fce88b30d6274bc9,) Helped-by: Justin M. Keyes <justinkz@gmail.com>
* vim-patch:7.4.562 #2593David Bürgin2015-05-16
| | | | | | | Problem: Segfault with wide screen and error in 'rulerformat'. (Ingo Karkat) Solution: Check there is enough space. (Christian Brabandt) https://github.com/vim/vim/commit/v7-4-562
* vim-patch:7.4.587 #2622David Bürgin2015-05-13
| | | | | | | Problem: Conceal does not work properly with 'linebreak'. (cs86661) Solution: Save and restore boguscols. (Christian Brabandt) https://github.com/vim/vim/commit/v7-4-587
* src: Misc. cleanupMichael Reed2015-05-01
| | | | | These macros (and global) haven't been used since 3baba1e7bc6698e6bc9f1d37fce88b30d6274bc9
* Enable -Wconversion: normal.c.Eliseo Martínez2015-04-27
| | | | | | | | | | | | | | | | | | | | | | | | Refactor summary: - extern int opcount --> extern long opcount - bool find_decl(..., int len, ...) --> bool find_decl(..., size_t len, ...) * int find_ident_under_cursor(...) --> size_t find_ident_under_cursor(...) - int find_ident_at_pos(...) --> size_t find_ident_at_pos(...) - int modify_fname(..., int *usedlen, ..., int *fnamelen) --> int modify_fname(..., size_t *usedlen, ..., size_t *fnamelen) * char_u *eval_vars(..., int *usedlen, ...) --> char_u *eval_vars(..., size_t *usedlen, ...) - int find_cmdline_var(..., int *usedlen) --> ssize_t find_cmdline_var(..., size_t *usedlen) - static char_u *repl_cmdline(..., int srclen, ...) --> static char_u *repl_cmdline(..., size_t srclen, ...) - bool get_visual_text(..., int *lenp) --> bool get_visual_text(..., size_t *lenp) * char_u *find_file_name_in_path(..., int len, ...) --> char_u *find_file_name_in_path(..., size_t len, ...) - static char_u *eval_includeexpr(..., int len) --> static char_u *eval_includeexpr(..., size_t len) - char_u *find_file_in_path(..., int len, ...) --> char_u *find_file_in_path(..., size_t len, ...) * char_u *find_file_in_path_option(..., int len, ...) --> char_u *find_file_in_path_option(..., size_t len, ...) - char_u *find_directory_in_path(..., int len, ...) --> char_u *find_directory_in_path(..., size_t len, ...) * int spell_move_to(...) --> size_t spell_move_to(...) - int spell_check(...) --> size_t spell_check(...) - static int spell_bad_len --> static size_t spell_bad_len - void find_pattern_in_path(..., int len, ...) --> void find_pattern_in_path(..., size_t len, ...) Helped-by: Justin M. Keyes <justinkz@gmail.com>
* vim-patch:7.4.710David Bürgin2015-04-27
| | | | | | | | | Problem: It is not possible to make spaces visibible in list mode. Solution: Add the "space" item to 'listchars'. (David Bürgin, issue 350) https://github.com/vim/vim/releases/tag/v7-4-710 Closes #2485.
* Replace VIM_ISDIGIT() and vim_isdigit() with ascii_isdigit() defined in ascii.hFelipe Oliveira Carvalho2015-04-24
|
* Replace vim_iswhite with ascii_iswhite() defined in ascii.hFelipe Oliveira Carvalho2015-04-24
|
* memory: Add `free` wrapper and refactor project to use itThiago de Arruda2015-04-13
| | | | | | We already use wrappers for allocation, the new `xfree` function is the equivalent for deallocation and provides a way to fully replace the malloc implementation used by Neovim.
* terminal: New module that implements a terminal emulatorThiago de Arruda2015-03-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit integrates libvterm with Neovim and implements a terminal emulator with nvim buffers as the display mechanism. Terminal buffers can be created using any of the following methods: - Opening a file with name following the "term://[${cwd}//[${pid}:]]${cmd}" URI pattern where: - cwd is the working directory of the process - pid is the process id. This is just for use in session files where a pid would have been assigned to the saved buffer title. - cmd is the command to run - Invoking the `:terminal` ex command - Invoking the `termopen` function which returns a job id for automating the terminal window. Some extra changes were also implemented to adapt with terminal buffers. Here's an overview: - The `main` function now sets a BufReadCmd autocmd to intercept the term:// URI and spawn the terminal buffer instead of reading the file. - terminal buffers behave as if the following local buffer options were set: - `nomodifiable` - `swapfile` - `undolevels=-1` - `bufhidden=hide` - All commands that delete buffers(`:bun`, `:bd` and `:bw`) behave the same for terminal buffers, but only work when bang is passed(eg: `:bwipeout!`) - A new "terminal" mode was added. A consequence is that a new set of mapping commands were implemented with the "t" prefix(tmap, tunmap, tnoremap...) - The `edit` function(which enters insert mode) will actually enter terminal mode if the current buffer is a terminal - The `put` operator was adapted to send data to the terminal instead of modifying the buffer directly. - A window being resized will also trigger a terminal resize if the window displays the terminal.
* ui: Replace cursor_{on,off} by busy_{stop,start}Thiago de Arruda2015-03-15
| | | | | | | | | | | | | | | | | | | | | | | | Switching cursor off is only necessary in two occasions: - When redrawing to avoid terminal flickering - When the editor is busy The first can now be handled by the TUI, so most calls to ui_cursor_off can be removed from the core. So, before this commit it was only necessary to switch the cursor off to notify the user that nvim was running some long operation. Now the cursor_{on,off} functions have been replaced by busy_{stop,start} which can be handled in a UI-specific way(turning the cursor off or showing a busy indicator, for example). To make things even more simpler, nvim is always busy except when waiting for user input or other asynchronous events: It automatically switches to a non-busy state when the event loop is about to be entered for more than 100 milliseconds. `ui_busy_start` can be called when its not desired to change the busy state in the event loop (As its now done by functions that perform blocking shell invocations).
* Remove redundant castsAnton Ovchinnikov2015-03-09
|
* Macro cleanup: UNICODE16Michael Reed2015-03-05
| | | | Fix clint warnings as well.
* Fix warnings: screen.c: screen_puts_len(): Various (4): FP/MI.Eliseo Martínez2015-02-21
| | | | | | | | | | | | | | | | Problems : Assigned value is garbage or undefined @ 5363. Result of operation is garbage or undefined @ 5356. Result of operation is garbage or undefined @ 5320. Result of operation is garbage or undefined @ 5192. Diagnostic : False positives / Multithreading issues. Rationale : Suggested error paths contain incoherent values for has_mbyte, enc_utf8, and enc_dbcs, which should always hold the relationship has_mbyte = enc_utf8 || enc_dbcs, with enc_utf8 and enc_dbcs being mutually exclusive. Asserting on the globals, though, fails, because checker believes they could be modified by other threads in between. Resolution : Make local copy of globals and assert relationship on them.
* refactor: Remove term modules and termcap optionsThiago de Arruda2015-02-21
| | | | | | | | | | | | | | | - Removed term.c, term.h and term_defs.h - Tests for T_* values were removed. screen.c was simplified as a consequence(the best strategy for drawing is implemented in the UI layer) - Redraw functions now call ui.c functions directly. Updates are flushed with `ui_flush()` - Removed all termcap options(they now return empty strings for compatibility) - &term/&ttybuiltin options return a constant value(nvim) - &t_Co is still available, but it mirrors t_colors directly - Remove cursor tracking from screen.c and the `screen_start` function. Now the UI is expected to maintain cursor state across any call, and reset it when resized. - Remove unused code
* coverity/72768: Negative array index read: FP.Eliseo Martínez2015-02-20
| | | | | | | | | | | Problem : Negative array index read @ 5674. Diagnostic : False positive. Rationale : Problem occurs if for loop does not find any match, which implies shl->lnum == 0, and then we enter the `if (shl->lnum == lnum)` branch, which implies lnum == 0 as well. That's not possible, as function should not be called with lnum == 0. Resolution : Change conditions `shl->lnum == lnum` into `bot != -1`.
* syntax: Refactor to store all term and gui attributes independentlyThiago de Arruda2015-02-16
| | | | | Now the attrentry_T structure will store all attributes in separate fields for cterm and rgb UIs.
* ui: Remove/adapt some old code for a big UI refactorThiago de Arruda2015-02-16
| | | | | | | | | | | | | - Remove abstract_ui global, now it is always active - Remove some terminal handling code - Remove unused functions - Remove HAVE_TGETENT/TERMINFO/TERMIOS/IOCTL #ifdefs - Remove tgetent/terminfo from version.c - Remove curses/terminfo dependencies - Only start/stop termcap when starting/exiting the program - msg_use_printf will return true if there are no attached UIs( messages will be written to stdout) - Remove `ex_winpos`(implement `:winpos` with `ex_ni`)
* Remove 'ttyfast'Michael Reed2015-02-08
| | | | | | | | refs #1045 #1051 This was enabled by default a while ago (#1051), and has apparently not created any issues. The amount of actual code related to it is tiny, so it has been removed.
* Add EndOfBuffer hl group for ~ lines after the last line in buffersMarco Hinz2015-02-02
| | | | | | | | This makes it possible to highlight the lines starting with ~ at the end of buffers and other elements highlighted using NonText. As proposed by mhinz at https://groups.google.com/forum/#!topic/vim_dev/p3de1iU1GXI/discussion
* Remove nonnullret deadcode: vim_strsave.Eliseo Martínez2015-01-27
|
* vim-patch:7.4.517Florian Walch2015-01-26
| | | | | | | | Problem: With a wrapping line the cursor may not end up in the right place. (Nazri Ramliy) Solution: Adjust n_extra for a Tab that wraps. (Christian Brabandt) https://code.google.com/p/vim/source/detail?r=v7-4-517
* "halfway a line" is a very confusing phraseJack Danger Canty2015-01-22
| | | | | | | | | If you Google for this phrase found in the Vim documentation you'll find almost exclusively hits from the Vim documentation. I think changing "halfway a line" to "halfway through a line" makes more sense. There seems to be an pervasive odd use of the word 'halfway' in the original docs which I'm updating everywhere.
* screen: Fix screen_resize to consider minimum screen sizeThiago de Arruda2015-01-15
|
* screen: Fix highlight reset for abstract_uiThiago de Arruda2015-01-13
|
* main: Fix color schemes for abstract_uiThiago de Arruda2015-01-13
| | | | | | | | | - Set 't_Co' to 256 at startup. The value can be changed by the user for compatibility with terminals that are less capable. - `has('gui_running')` will return 1 if at least one rgb UI is attached. Even though these changes are hacky, they are necessary to make the transition to the new UI architecture smoother.
* ui: Fix redraw bug caused by race conditions with remote clientsThiago de Arruda2015-01-13
| | | | | Before sending a resize command to the UIs, flush the current output buffer to ensure no redraw commands for a screen with invalid size are processed.
* vim-patch:7.4.567Florian Walch2015-01-08
| | | | | | | Problem: Non-ascii vertical separater characters are always redrawn. Solution: Compare only the one byte that's stored. (Thiago Padilha) https://code.google.com/p/vim/source/detail?r=v7-4-567
* vim-patch:7.4.528Florian Walch2014-12-27
| | | | | | | Problem: Crash when using matchadd() (Yasuhiro Matsumoto) Solution: Copy the match regprog. https://code.google.com/p/vim/source/detail?r=v7-4-528
* vim-patch:7.4.545Florian Walch2014-12-24
| | | | | | | Problem: Highlighting for multi-line matches is not correct. Solution: Stop highlight at the end of the match. (Hirohito Higashi) https://code.google.com/p/vim/source/detail?r=v7-4-545
* Simple refatorings that didn't fit the pattern of the last commitFelipe Oliveira Carvalho2014-12-13
|
* strings.c: replace copy_spaces, copy_chars with equivalent memset.Daniel Fairhead2014-12-12
|
* ui: Add abstract_ui termcap and split UI layerThiago de Arruda2014-12-08
| | | | | | | | | | | | | | | | | | This is how Nvim behaves when the "abstract_ui" termcap is activated: - No data is written/read to stdout/stdin by default. - Instead of sending data to stdout, ui_write will parse the termcap codes and invoke dispatch functions in the ui.c module. - The dispatch functions will forward the calls to all attached UI instances(each UI instance is an implementation of the UI layer and is registered with ui_attach). - Like with the "builtin_gui" termcap, "abstract_ui" does not contain any key sequences. Instead, vim key strings(<cr>, <esc>, etc) are parsed directly by input_enqueue and the translated strings are pushed to the input buffer. With this new input model, its not possible to send mouse events yet. Thats because mouse sequence parsing happens in term.c/check_termcodes which must return early when "abstract_ui" is activated.
* term: Move "set_shellsize" to screen.c as "screen_resize"Thiago de Arruda2014-12-02
|
* Merge pull request #1516 from fmoralesc/new-patchesJustin M. Keyes2014-11-27
|\ | | | | vim-patch:7.4.425,435,467,472,473,478
| * vim-patch:7.4.472: Only draw "precedes" entry in 'listchar' when 'list' is onFelipe Morales2014-11-27
| | | | | | | | | | | | | | | | | | | | | | vim-patch:7.4.472 Problem: The "precedes" entry in 'listchar' will be drawn when 'showbreak is set and list is not. Solution: Only draw this character when 'list' is on. (Christian Brabandt) https://code.google.com/p/vim/source/detail?r=af998690a8841d4df95cea0bed4246f2ba98e247
| * vim-patch:7.4.467: Avoid a problem with unwanted linebreaks in block modeFelipe Morales2014-11-27
| | | | | | | | | | | | | | | | vim-patch:7.4.467 Avoid a problem with unwanted linebreaks in block mode https://code.google.com/p/vim/source/detail?r=v7-4-467
* | ui: Remove redundant ui.h includesThiago de Arruda2014-11-27
| | | | | | | | Also move read_error_exit to os/input.c
* | ui: Remove ui_delay, ui_breakcheck and ui_set_shellsizeThiago de Arruda2014-11-27
| | | | | | | | | | These functions only used to call another os_* function, so remove them and replace all occurences in the project.
* | Fix warnings: screen.c: screenalloc(): Np arg (2): MI.Eliseo Martínez2014-11-18
|/ | | | | | | | | | | Problems : Null pointer argument in call to memory copy function @ 6465. Null pointer argument in call to memory copy function @ 6475. Diagnostic : Multithreading issues. Rationale : Problem occurs if globals `enc_utf8` and `enc_dbcs` are modified while function is executing. Resolution : Use local copy of globals.
* Convert some values from buffer_defs.h to boolsWayne Rowcliffe2014-11-12
|
* Fix warnings: screen.c: draw_tabline(): Dead assignment: HI.Eliseo Martínez2014-11-06
| | | | | | | | | | | | | Problem: Dead assignment @ 7711. http://neovim.org/doc/reports/clang/report-835eb6.html#EndPath Diagnostic: Harmless issue. Rationale : `scol` is only used within `FOR_ALL_TABS` body, which assigns another value to `scol` at the beginning of each iteration. If `FOR_ALL_TABS` body would not execute (no tabs) nothing harmful would happen, as code following `FOR_ALL_TABS` doesn't use `scol`. Resolution: Remove.
* Fix warnings: screen.c: showmode(): Dead assignment: HI.Eliseo Martínez2014-11-06
| | | | | | | | | Problem: Dead assignment @ 7535. http://neovim.org/doc/reports/clang/report-19a5cd.html#EndPath Diagnostic: Harmless issue. Rationale : `length = msg_col;` is unconditionally executed after this. Resolution: Remove assignment.
* Fix warnings: screen.c: win_line(): Dead assigment: HI.Eliseo Martínez2014-11-06
| | | | | | | | | | | | Problem: Dead assigment. http://neovim.org/doc/reports/clang/report-7362ba.html#EndPath Diagnostic: Harmless issue. Rationale : `boguscols` is in fact unread by downstream code. Resolution: Comment out. This is preferred here over just removing the line because involved logic is complex, and future readers of this code could find this extra knowledge useful to understand what the code is doing.
* Fix warnings: screen.c: win_line(): Dead initialization: HI.Eliseo Martínez2014-11-06
| | | | | | | | | | | | Problem: Dead initialization @ 3477. http://neovim.org/doc/reports/clang/report-94b736.html#EndPath Diagnostic: Harmless issue. Rationale : `len` is assigned a new value just some lines below. So, this just seems something due to old-style variable declarations. Resolution: We could just remove initialization, but prefer moving declaration down to point of initialization.