aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-02-01allow disabling of statusbarsewn3-0/+18
2024-01-23fix bug report templateRandy Palamar1-1/+1
Apparently `labels:` should be an empty list and not an empty string if you want no default labels; my bad.
2024-01-23add github issue templatesSneethe3-0/+57
2024-01-23lua: fix deprecated name for change-256colorsMichiel van den Heuvel1-1/+1
2023-12-14complete-filename: include '{' in leading delimiter patternFlorian Fischer1-1/+1
This allows to complete file names in latex code (e.g. `\include{foo}`).
2023-12-10build: update alpine in docker build to version 3.19Christian Hesse1-1/+1
Just a version bump, no changes required.
2023-12-05lua: drop redrawtime optionRandy Palamar2-18/+1
This hasn't worked in almost a year and even if it did it makes no sense. Based on my testing lexing takes a couple milliseconds at most. If it took 1 second (the default value for this option) vis would be completely unusable. If people want support for this it should be submitted upstream and vis will act based on the outcome of that. closes #1122: lexer no longer obeys redrawtime
2023-12-05lua: filetype: use alt_name field to alias to other lexersRandy Palamar1-4/+5
This obviously draws on the alt_name parameter used in scintillua but rather then passing it all the way up to the chain to lexers.load() we will just handle it in set_filetype(). 8a420ec accidently readded detection for the removed git-commit lexer which somehow went unnoticed until we readded caching for the new lexers. Instead of just removing it we can alias to the diff filetype and only set the colorcolumn for commit messages. This fixes the incorrect behaviour of adding a colorcolumn to diff and patch files and thus completely reverts 0cc684f.
2023-12-02Add ansi escaping values and theming keyword for dimmed textHaz3-0/+7
This adds `[not]dim` to the set of accepted theme keywords
2023-12-02Recognize also Python type stub files.Matěj Cepl1-1/+1
As defined in https://peps.python.org/pep-0484/#stub-files.
2023-11-23luadoc: fix broken link and add links between vis/win.optionsRandy Palamar1-1/+3
2023-11-18destroy the correct subprocessFlorian Fischer1-6/+8
When a new subprocess is created during an EXIT event of another subprocess new_process_in_pool will update the process_pool pointer. Since we use a pointer to a pointer for iterating all processes during vis_process_tick its value will be different before executing the event and after creating the new subprocess. This causes the updated pointer to be erroneously destroyed and leaves the Process of the reaped child behind which causes consecutive waitpid calls to fail with ECHILD. This is fixed by destroying the proper current subprocess and updating the iteration pointer accordingly. Fixes: 0b015320382e74fcb385a46a81304f588ed27f77
2023-11-03lua: refactor complete-filename pluginRandy Palamar1-33/+28
There are probably more things to simplify but at least this makes it easier to see what exactly is different between `<C-x><C-f>` and `<C-x><C-o>`. Some differences were removed: * whitespace in range is treated the same for both actions * empty range will expand to files in CWD for both actions closes #1146: Complete file name and file path swapped in doc
2023-10-23sam: reject invalid ranges for cmd_extract ("x"/"y")Randy Palamar1-1/+1
fixes #1152: `:2x/foo/<cr>` in a file with only one line makes vis get stuck in an infinite loop
2023-10-17apply configured foreground to matching pairRandy Palamar1-0/+1
fixes #1151 (part 2): Set foreground color for matching pair
2023-10-17apply configured foreground to selectionsRandy Palamar1-0/+1
fixes #1151: Set foreground color for visual selection
2023-10-15view: skip empty cells before applying a styleFlorian Fischer1-0/+4
The view_style function is used to apply styles to ranges of text in a view. It approaches the starting position where the style should be applied by iterating the columns in the appropriate line using this while loop: while (pos < start && col < width) pos += line->cells[col++].len; The while loop will stop at the last character before the range where the style should be applied. This works fine until we encounter "empty" cells between the last cell containing an actual character and the first cell to be styled. This can happen if the last character before the range to style is '\t' which gets expanded with empty cells by vis according to the tabwidth option. Those empty cells get erroneously styled as well. This is fixed by skipping all empty cells encountered before the range to style. fixes #1147: `win:style` styles more terminal cells than expected
2023-10-10vis_pipe: correctly return non-zero exit statusRandy Palamar1-1/+4
according to POSIX wait(3p) the return status needs to be checked and the macro WEXITSTATUS(stat_val) should be used to get the actual return value on a normal exit. POSIX doesn't specify the value of stat_val on abnormal exit and thus vis_pipe() should just return -1 as it does for other errors closes #1130: vis:pipe returns wrong exit status (when non-zero) Thanks @pippi1otta for the report and suggestion.
2023-10-10ci: test: update submoduleRandy Palamar1-22/+13
Sourcehut recurses into submodules when cloning the repo for building so unlike github it uses the version of `test` that is checked into the repo. This is better behaviour but does mean that the submodule needs to be updated.
2023-10-10revert c22b2c2 & 364d212Randy Palamar2-3/+1
aka: "check for EOF before unsetting row, col & line cache in view_coord_get" "fix bug where visual-line selections after view were considered visible" These commits have created more bugs then they fix. Reverting them reintroduces #1074: Slave selection strangled by view cliff. Fixes #1143: Disappearing selection
2023-10-05lua: filetype: fix fstab detectionRandy Palamar1-1/+1
same as last commit, `fstab.lua` shouldn't be matched as `fstab`
2023-10-05fix literal makefile name detectionFlorian Fischer1-1/+1
The current literal file name detection for GNUmakefile, makefile or Makefile could match anywhere in the file name. For example the file type of `makefile.lua` (the name of our makefile lexer) was detected as makefile. This is fixed by requiring the literal patterns to start and end with the string.
2023-10-05vis-lua: fail when mapping a key to an invalid handler typeKarthin Srinavakili1-0/+2
When passing an invalid handler type (i.e., any type that isn't a string, function, or KeyAction) to Vis:map/Window:map, the editor would map the key to an empty (zeroed) KeyBinding struct. vis_keys_process() doesn't take this into account, so the key is never consumed from the input queue, causing the editor to get stuck in an infinite loop.
2023-09-27vis-complete: also split on `\`Randy Palamar1-1/+1
suggested in [0] since it will be help for latex [0]: https://github.com/martanne/vis/commit/dac6a7e#comments
2023-09-27filetype.lua: add common *roff extensionsTom Schwindl1-1/+2
2023-09-25vis-menu.c: add space for terminating NUL byteTom Schwindl1-1/+1
2023-09-22vis-subprocess.c: remove unnecessary NULL checkTom Schwindl1-3/+1
2023-09-22vis-complete: use hand picked set of characters for word splittingRandy Palamar1-1/+1
{w,}ctype(3) character classes are essentially broken for non-ascii text. 711447a tried to fix this for words surrounded by blanks but forgot the use case of completing function and variable names in source code. Instead of relying on the terrible ctype interface we can hand pick a set that is good enough for both source code completion and writing prose. This set is consistent with the old [:alnum:] behaviour for ascii text but also supports words with single width non-ascii characters. fixes 711447a: vis-complete: handle non-ascii text closes #1132: Source code completion are broken
2023-09-22vis-single: respect TMPDIREvan Gates1-3/+13
The temporary directory for vis-single was hard coded to /tmp. If /tmp happens to be mounted noexec then vis fails as it cannot run anything placed inside the temporary directory. If the TMPDIR environment variable is set, respect it for vis-single.
2023-09-20filetype: add psm1 and search for xml using mime typeMichiel van den Heuvel1-1/+2
2023-09-17vis-subprocess.c: fix signature of new_process_in_pool()Tom Schwindl1-1/+1
2023-08-27Make expandtab option window-localAlexey Yerin6-16/+16
2023-08-27Make tabwidth option window-localAlexey Yerin8-22/+19
2023-08-27lua: make sure lpeg is in fact optionalRandy Palamar2-0/+2
fixes #1119: lua: lpeg module isn't actually optional
2023-08-27vis-lua.c: silence warning about implicit conversionRandy Palamar1-1/+5
`SIZE_MAX` cannot be represented accurately in `lua_Number`. A correct solution probably doesn't exist but we can silence the warning by explicitly casting to `lua_Number` and changing the comparison to `<` instead of `<=`. checkpos() deals with large numbers for file ranges. For most users we can assume no one is editing files that are `SIZE_MAX` bytes long (many petabytes). For obscure systems where `SIZE_MAX` is a small number this will result in a maximum range (in lua) of 1 byte less than before. fixes #1120: vis-lua.c:504:21: warning: implicit conversion changes value
2023-08-26support old option names but mark as deprecatedRandy Palamar3-10/+24
This is in response to a comment left on a35e7ea. Backwards compatibility is a good idea for at least a release.
2023-08-25configure: also check for lua-5.4Donald C. Allen1-1/+1
2023-08-24lua api: fix a couple typos in process_response() documentationRandy Palamar1-2/+2
I thought I fixed these in the applied patch but I guess they slipped by
2023-08-24Implementation of the non-blocking process running Lua APIxomachine7-1/+350
Rationale A modern text editor usually includes tools for helping user to avoid mistakes in texts. Those tools include spell checkers and programming language integrations. Though vis explicitly states that the full featured IDE is not a goal, implementing some of the tools might be achieved using its Lua API. Unfortunatelly the API misses the ability to start a process and to perform a communication with it without completely blocking the editor UI, which is crucial for any tool that performs background tracking of the inserted text (e. g. language servers). Implementation details New feature introduces new API method: communicate. The method start a new process and returns a handle to communicate with the process instantly. The patch inserts stderr and stdout file descriptors of the process to the pselect call of the main loop used for reading user input to track the process state without blocking the main loop until the process is finished. Any changes in the process state cause the iteration of the main loop and are being exposed to the Lua API as new event: PROCESS_RESPONSE.
2023-08-24sam.c: rename a number of options to match lua apiRandy Palamar2-9/+9
2023-08-24Lua API: access and set all available optionsRandy Palamar7-27/+433
The first point of this commit is to allow all options to be read from lua. This has a number of uses for plugin writers. They are grouped into a couple of tables depending on what they control: `vis.options`: table with global configuration `win.options`: table with window specific configuration The second point is to allow you to set all these options as if they were simply lua variables. Technically this is already possible by using `vis:command("set ...")` but personally I think this interface is cleaner. Note that this already possible for some things like the current mode (eg. vis.mode = vis.modes.VISUAL). Examples: `vis.options.ai = true` `win.options.brk = " !?."` `win.options = { showeof = true, showtabs = true } There are a number of related issues and pull requests: closes #803: Lua API: let plugins read the values of options closes #812: Window layout property supersedes/closes #717: Add ability to access tabwidth from Lua supersedes/closes #1066: expose UI layout and allow it to be set from lua API
2023-08-17build: don't use the '|' GNU extensionRandy Palamar1-3/+4
2023-08-17build: don't pollute base dir with .o and .d filesRandy Palamar2-9/+11
some users were (rightfully) annoyed by this
2023-08-16build: stop setting _POSIX_C_SOURCERandy Palamar2-2/+2
from feature_test_macros(7): > Defining _XOPEN_SOURCE with a value of 700 or greater produces the > same effects as defining _POSIX_C_SOURCE with a value of 200809L or > greater. Depending on the configuration and system pkg-conf files there can be redefinition warnings. Rather than patching with a -U_POSIX_C_SOURCE it can just be dropped instead.
2023-08-16build: support incremental rebuildsRandy Palamar6-8/+22
2023-08-14vis-complete: handle non-ascii textSilvan Jegen1-1/+1
The '[:alnum:]' set does not include non-ascii text which results in the non-ascii text being replaced with newlines. Using the '[:blank:]' set with no complement flag fixes this issue.
2023-08-14vis-menu: try to preserve valid Unicode pointsSilvan Jegen1-3/+37
Before we were not taking non-ascii characters into account properly. With this patch we still mix byte counts and "grapheme cluster" (i.e. complete glyphs that are rendered in a terminal cell) counts but the code should be less broken in the more common case now.
2023-08-12ci: freebsd: use lua 5.3 like the othersRandy Palamar1-2/+2
2023-08-10vis-lua.c: stop obj_ref_get() from leaving the lua stack modifiedRandy Palamar1-17/+8
The only place where this behaviour was encountered was in file_lines_iterator() and it was just being worked around.
2023-08-01Prevent flickering in cursesIan Hixson5-1/+26
Reading from curs_refresh(3X) from curses, calling doupdate() repeatedly will cause 'several bursts of output to the screen'. wnoutrefresh() has the smarts to only copy the changed lines to the copied virtual screen, but doupdate() does not. There have been several bug reports related to flickering but all seems to be inconsistenly reproducible due to different terminal buffering behavior. See #1032, #327 Unfortunately, when I am using a slow display, I still notice flickering, so this commit changes the routines for opening new windows and splitting windows to wait until the last change is finished before calling doupdate().