aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2025-12-16main: replace key action enum, prototype, and table with single X-macro listRandy Palamar2-1276/+347
The lists were very long and if you need to change anything in them you need to do so in at least 3 different places to ensure they remain in sync. The idiomatic way of solving this problem in C (without using features outside the language) is to use a sequence of X-macros. This was motivated by the fact that many of the functions in this file have names that collide with other names in the program. When the program is compiled into separate object files this is not a problem but I want to compile vis in a single translation unit. It also adds more mental overhead when debugging if you have to keep track of which file you are in as well as which function you are in. The macro definition for the function args is less common but is a good way of ensuring that if you need to modify the type of the function pointer (i.e. change its arguments) you will not have to locate hundreds of locations throughout the code. This also makes it much easier to potentially refactor the KeyAction array of structs into separate arrays.
2025-12-16text-iterator: fix one byte over-read in codepoint iteratorRandy Palamar1-8/+8
Reported by @kyx0r here: https://github.com/kyx0r/nextvi/issues/189#issuecomment-3650406932 The crash is relatively hard to reproduce as it relies on there being no padding after the end of the memory allocation. This can only happen if the text size is an exact multiple of the system page size. In the linked backtrace it->start = 0x7ffff0e00000 and it->end = 0x7ffff7200000 (page size was likely 4K or 0x1000) so it->end, which is one past the last byte of the text, was pointing to an entirely different page. Dereferencing it can cause a segfault. If it doesn't segfault it is still incorrect to read beyond the end of the text even if it happens to work due to padding. The underlying text_iterator_byte_{next,prev}() functions were already handling this correctly. The fix is to not throw away their work.
2025-12-14Use STYLE_WHITESPACE for spaces, newlines, and tabsLaurence de Bruxelles4-5/+21
Allow theming the replacement characters shown for showspaces, showtabs, and/or shownewlines.
2025-12-09vis-lua: add file:snapshot methodRandy Palamar1-0/+12
A number of plugins, for example vis-spellcheck[0], want to perform bulk edits on the file text. They may desire for those edits to be split into multiple undo/redo points. This is achievable by switching the mode between insert and normal mode but that has other side effects. Instead introduce a method of doing this directly. [0]: https://gitlab.com/muhq/vis-spellcheck
2025-12-09show "pattern not found: foo" on search without resultChristian Hesse1-3/+8
2025-12-09introduce search_common...Christian Hesse1-7/+9
... and make search_{forward,backward} wrapper to that function.
2025-12-08map: stop setting errno on errorRandy Palamar3-32/+15
the return of these functions already give all the necessary information. this is not c standard library code, we have no need of such a nonsensical error reporting mechanism NOTE: since errno needs to be thread local accessing it from non-libc code ends up being a function call and serves as a pointless optimization barrier.
2025-12-08util: replace memrchr with internal versionRandy Palamar6-46/+19
The amount of code we need to detect if this is present and handle the fallback is more than if we just provide it ourselves. Also we are passing in a difference of pointers so the argument type should be ptrdiff_t. This avoids a C brain damage of having unsigned size type which can wrap around if the caller is careful.
2025-12-06build: update alpine in docker build to version 3.23Christian Hesse1-1/+1
Just a version bump, no changes required.
2025-12-05vis-lua: complete_command: utilize map_prefix() instead of grepRandy Palamar3-9/+9
we already have a function for filtering by a prefix. No need for snprintf and extra grep process for filtering. also use simpler buffer_append for appending instead of going through string formatting
2025-12-02doc/Makefile: add an empty clean target...Christian Hesse1-1/+4
... now that this is made with 12fc09a442939d0af09d700c7a8074cca9b1694e. This unbreaks `make docker`, which triggered the catch-all target and failed.
2025-12-02test: add gdb debugging support to lua testsMatěj Cepl1-8/+36
This commit refactors the lua test runner (`test.sh`) to support running a test inside `gdb` when the `-d` or `--debug` flag is passed.
2025-11-29cmd_write: show error message for non-existing path componentsFlorian Fischer1-1/+3
2025-11-29Clarify testing infrastructure for vis editorJorge Gomez1-2/+1
Updated README to clarify repository purpose and structure.
2025-11-28Add command completion with tab keyMax Schillinger4-4/+67
In the command prompt, press <tab> to get a list of all available commands and pick one (using vis-menu). This works also after typing the first letters of a command (p.e. `:la<tab>`). Co-authored-by: Matěj Cepl <mcepl@cepl.eu>
2025-11-28build: make clean also documentaitonMatěj Cepl1-0/+1
2025-11-28filetype: detect additional shell filesunrealapex1-1/+1
2025-11-28docs: remove $ from environment variable nameunrealapex1-1/+1
remove $ from environment variable name because environment variables are referenced by name without it
2025-11-28lua/lexers: synchronization with new release scintillua_6.6mitchell21-63/+316
Bugfixes: - Fixed Pascal numeric literals. - Fixed folding of HTML/XML comments and XML processing instructions. - Fixed incorrectly highlighting '..' range operators between numbers. Changes: - Added Janet and todo.txt lexers. - Updated Python lexer to recognize t-strings. - Migrated ini and Dart lexers. - Updated org lexer word lists.
2025-11-27ui: add missing includes for printfssewn1-0/+2
functions such as [v]snprintf and sscanf require stdio and stdarg.
2025-11-24text-util: convert trivial functions to macrosRandy Palamar2-15/+3
This would be less of an issue if vis was compiled as a single translation unit but even then compiler may not inline them if they are not marked as static.
2025-11-24text: remove a bunch of unused save functionsRandy Palamar7-68/+26
These functions were only used for testing the text system. One of them was moved to text-test.c to continue to facilitate this. Otherwise these functions are just cluttering up the code and making it hard to modify.
2025-11-24text-io: make TextSave visibleRandy Palamar4-72/+53
Having a failure case on allocing a TextSave is stupid. Ideally there would be no allocations in the file saving path but we have to replace the braindead dirname(3) with an internal implementation.
2025-11-24text-io: do not free the temporary file name before unlinking the fileFlorian Fischer1-2/+0
2025-11-12Fixed typoStefan1-1/+1
2025-08-19Fixes waycopy hanging due to unclosed stderr fdrunitclean1-2/+2
2025-06-13doc: source_suffix should be a map, not a listMatěj Cepl1-1/+1
2025-06-13lua/lexers: update to scintillua 6.5Matěj Cepl7-532/+720
This is an amalgamation of the following upstream commits: - Overhauled API documentation for lexer.lua. - Fixed Markdown to allow code fence blocks to be indented. - Use GitHub Pages' Primer theme for documentation. Build static pages with Jekyll, like GitHub Pages does. - Migrated systemd lexer. Thanks to Matěj Cepl. - Migrated Lisp lexer and highlight character escapes. Thanks to Matěj Cepl. - Migrated rpmspec lexer and made some improvements. Thanks to Matěj Cepl. - Modernized reST lexer. Thanks to Matěj Cepl. - Markdown lexer should just tag the start of a blockquote. The quote's contents may contain markdown. - Output lexer can highlight CSI color sequences. - Allow lexers to define their own fold functions. - Added custom folder for Markdown headers. - Added `lexer.line_start`, `lexer.line_end` and `lexer.text_range()`. - Fixed Markdown lexer to not lex some continuation lines as code. - Fixed SciTE not using Scintillua's markdown lexer. - Markdown lexer should not highlight secondary paragraphs in list items as code blocks. - Have SciTE recognize CMakeLists.txt.
2025-06-13doc: fix Markdown in CHANGELOG.mdMatěj Cepl1-2/+2
2025-06-13doc: fix Doxygen comments for vis-subprocess.cMatěj Cepl1-1/+5
2025-06-13doc: fix Doxygen comments for view.hMatěj Cepl1-18/+23
2025-06-13doc: fix Doxygen comments for text.hMatěj Cepl1-24/+31
2025-06-13doc: fix Doxygen comments for vis.hMatěj Cepl1-201/+634
2025-06-13doc: fix Doxygen comments for map.hMatěj Cepl1-23/+53
2025-06-13doc: change default_role to 'c:any'Matěj Cepl1-1/+1
2025-06-13use <vis-prompt-show> instead of ':'Alvaro Sanchez1-11/+11
fixes #1246 - Remapping : break other mappings like <C-w>s or <C-w>v
2025-06-02build: update alpine in docker build to version 3.22Christian Hesse1-1/+1
Just a version bump, no changes required.
2025-05-17ci: drop ubuntu-20.04, deprecatedsewn1-4/+1
Github CI ubuntu-20.04 runner image deprecated, seen in https://github.com/actions/runner-images/issues/11101
2025-04-17vis.1: fix typoAlan Urmancheev1-1/+1
2025-04-01filetype: use .container extension for podman containersMatěj Cepl1-2/+2
2025-04-01vis-clipboard: add wsl support with wslclipEvan Gates1-0/+13
2025-03-22doc: upgrade Doxyfile via doxygen -u (1.13.2)Matěj Cepl1-423/+836
2025-03-20Dockerfile: Upgrade lua5.3 to 5.4zdiff1-4/+4
2025-02-28buffer: remove more unused exposed functionsRandy Palamar4-23/+7
NOTE: buffer-test.c now directly includes buffer.c so that it can continue to test functions which are defined as static/internal to buffer.c
2025-02-28buffer: remove buffer_printfRandy Palamar4-20/+2
There was only a single user of this function because buffer_appendf is significantly more useful. Change that caller and reduce the code.
2025-02-22ci: also don't fail when the coverage file doesn't download correctlyRandy Palamar2-6/+6
2025-02-22ci: don't let test coverage upload fail a workflowRandy Palamar2-2/+2
Yes it would be better if some commits didn't have missing coverage but failing over it doesn't give us any useful info about the commit
2025-02-22style_set: add option to keep non-default style valuesinfastin6-24/+35
2025-02-22update to scintillua-6.4 + 1 (org-mode lexer)Matěj Cepl155-155/+259
2025-02-22complete-filename: speed-up the tilda handlingMatěj Cepl1-2/+3