summaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)Author
2024-03-31patch 9.1.0233: Vim9: string() output of enum is problematicv9.1.0233Yegappan Lakshmanan
Problem: Vim9: string() output of enum is problematic Solution: Make string() output for an enum consistent with that of a regular object (Yegappan Lakshmanan). closes: #14343 Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-31patch 9.1.0232: Conceal test fails when rightleft feature is disabledv9.1.0232Julio B
Problem: Conceal test fails when rightleft feature is disabled. Solution: Skip test if rightleft feature is missing (Julio B). closes: #14342 Signed-off-by: Julio B <julio.bacel@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-31patch 9.1.0231: Filetype may be undetected when SwapExists sets ft in other bufv9.1.0231zeertzjq
Problem: Filetype may be undetected when a SwapExists autocommand sets filetype in another buffer. Solution: Make filetype detection state buffer-specific. Also fix a similar problem for 'modified' (zeertzjq). closes: #14344 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-31patch 9.1.0230: TextChanged autocommand not triggered under some circumstancesv9.1.0230Christian Brabandt
Problem: TextChanged autocommand not triggered under some circumstances (Sergey Vlasov) Solution: Trigger TextChanged when TextChangedI has not been triggered fixes: #14332 closes: #14339 Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-31patch 9.1.0229: Error E877 is not translatedv9.1.0229Christian Brabandt
Problem: Error E877 is not translated (RestorerZ) Solution: Declare the error with N_ to mark it as translatable, add _() around the error message in regexp_nfa.c fixes: #14333 Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-29patch 9.1.0228: Two unrelated things are tested by a single testv9.1.0228zeertzjq
Problem: Two unrelated things are tested by a single test. Solution: Split it into two, restoring the old Test_brace_single_line(). Add missing cleanup to some tests. (zeertzjq) closes: #14323 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-29patch 9.1.0227: Recording may still be wrong in Select modev9.1.0227zeertzjq
Problem: Recording may still be wrong in Select mode (after 8.2.3993). Solution: Make sure a character isn't split between two buffer blocks. (zeertzjq) closes: #14326 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-29patch 9.1.0226: Not able to assign enum values to an enum static variablev9.1.0226Yegappan Lakshmanan
Problem: Not able to assign enum values to an enum static variable (zzzyxwvut) Solution: Make it work (Yegappan Lakshmanan) related: #14224 closes: #14329 Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-28patch 9.1.0225: test_matchparen not run in CIv9.1.0225Christian Brabandt
Problem: test_matchparen not run in CI Solution: add test_matchparen.res to NEW_TESTS_RES in Makefile, update changed highlighting dump from v9.1.61 closes: #14322 Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-28patch 9.1.0224: cursor may move too many lines over "right" & "below" virt textv9.1.0224Dylan Thacker-Smith
Problem: If a line has "right" & "below" virtual text properties, where the "below" property may be stored first due to lack of ordering between them, then the line height is calculated to be 1 more and causes the cursor to far over the line. Solution: Remove some unnecessary setting of a `next_right_goes_below = TRUE` flag for "below" and "above" text properties. (Dylan Thacker-Smith) I modified a regression test I recently added to cover this case, leveraging the fact that "after", "right" & "below" text properties are being stored in the reverse of the order they are added in. The previous version of this regression test was crafted to workaround this issue so it can be addressed by this separate patch. closes: #14317 Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-28patch 9.1.0223: code duplication in loop to add active text propertiesv9.1.0223Dylan Thacker-Smith
Problem: There are two dense conditions with duplication that needs to be kept in sync between the while loop break condition and the condition to skip certain text properties. Solution: Refactor the loop by moving while loop conditions into the body of the while loop so they can be shared with skip conditions. `break` and an `active` variable are used to handle the outcome of these merged conditions. (Dylan Thacker-Smith) closes: #14307 Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-28patch 9.1.0222: missing 'below' virt text if truncation precedes after/right ↵v9.1.0222Dylan Thacker-Smith
text Problem: When a line is truncated just before 'after'/'right' virtual text and the line also has 'below' virtual text, then the 'below' virtual text would not be displayed, depending on the order these text properties were added. Solution: In the loop to make text properties active, skip instead of break for 'after'/'right' virtual text properties that are ignored due to truncation, so following 'below' text properties can still be made active. Similarly, a loop is needed to determine if a text property follows at the end of the screen. (Dylan Thacker-Smith) related: #14307 Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-28patch 9.1.0221: lines following virt text (that fills the window) might be ↵v9.1.0221Dylan Thacker-Smith
truncated Problem: The if branch to set `text_prop_follows` was both checking if it was at the end of the buffer text line or if it was at the end of the screen line, but the former being true skipped a guard condition in the latter to only consider 'below' virtual text to follow. `text_prop_follows` being improperly set caused it to skip a conditional block to break at the end as well as one to move `ptr` to the end of the text line, while repeated for each following line of the window. Solution: Move the check for whether 'below' virtual text should follow so it is also used when at the end of the buffer text line. (Dylan Thacker-Smith) fixes: #12213 related: #14307 Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-28patch 9.1.0220: Few typos in source and test filesv9.1.0220zeertzjq
Problem: Typos in code and tests. Solution: Fix typos (zeertzjq). closes: #14321 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-28patch 9.1.0219: Vim9: No enum supportv9.1.0219Yegappan Lakshmanan
Problem: No enum support Solution: Implement enums for Vim9 script (Yegappan Lakshmanan) closes: #14224 Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-28patch 9.1.0218: Unnecessary multiplications in backspace codev9.1.0218zeertzjq
Problem: Unnecessary multiplications in backspace code, as "col / ts * ts" is the same as "col - col % ts". Solution: Change "col / ts * ts" to "col - col % ts". Adjust the loop and the comments ins_bs() to be easier to understand. Update tests to reset 'smarttab' properly. (zeertzjq) closes: #14308 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-28patch 9.1.0217: regexp: verymagic cannot match before/after a markv9.1.0217Julio B
Problem: regexp: verymagic cannot match before/after a mark Solution: Correctly check for the very magic check (Julio B) Fix regexp parser for \v%>'m and \v%<'m Currently \v%'m works fine, but it is unable to match before or after the position of mark m. closes: #14309 Signed-off-by: Julio B <julio.bacel@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-28patch 9.1.0216: Error on exit with EXITFREE and 'winfixbuf'v9.1.0216zeertzjq
Problem: Error on exit with EXITFREE and 'winfixbuf'. Solution: Handle DT_FREE before checking for 'winfixbuf'. (zeertzjq) closes: #14314 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-28patch 9.1.0215: Half-page scrolling does not support smooth-scrollingv9.1.0215Luuk van Baal
Problem: Page-wise scrolling with Ctrl-D/Ctrl-U implements it's own logic to change the topline and cursor. More logic than necessary for scrolling with Ctrl-F/Ctrl-B was removed in patch 9.1.0211. Solution: Re-use the logic from Ctrl-E/Ctrl-Y/Ctrl-F/Ctrl-B while staying backward compatible as much as possible. Restore some of the logic that determined how many lines will be scrolled (Luuk van Baal) closes: #14316 Signed-off-by: Luuk van Baal <luukvbaal@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-28patch 9.1.0214: Duplicate condition in win_lbr_chartabsize()v9.1.0214zeertzjq
Problem: Duplicate condition in win_lbr_chartabsize(). Solution: Remove the duplicate condition, as it's already checked above. (zeertzjq) closes: #14320 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-28patch 9.1.0213: CI: MS-Windows fails in test_winfixbufv9.1.0213Sean Dewar
Problem: CI: MS-Windows fails in test_winfixbuf (after v9.1.208) Solution: Instead of skipping the test, write the file so it exists on disk, to verify that MS-Windows short filename expansion is successful. (Sean Dewar) related: #14286 Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-27patch 9.1.0212: CI: MS-Windows fails in test_winfixbufv9.1.0212Christian Brabandt
Problem: CI: MS-Windows fails in test_winfixbuf (after v9.1.208) Solution: Skip Ms-Windows for now, fix style related: #14286 Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-26patch 9.1.0211: page-wise scrolling does not support smooth-scrollingv9.1.0211Luuk van Baal
Problem: Page-wise scrolling with Ctrl-F/Ctrl-B implements it's own logic to change the topline and cursor. In doing so, skipcol is not handled properly for 'smoothscroll', and virtual lines. Solution: Re-use the logic from Ctrl-E/Ctrl-Y while staying backward compatible as much as possible. closes: #14268 Signed-off-by: Luuk van Baal <luukvbaal@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-26patch 9.1.0210: Motif: leaking memory when mui_mch_dialog() failsv9.1.0210Christian Brabandt
Problem: Motif: leaking memory when mui_mch_dialog() fails (LuMingYinDetect) Solution: When allocating the label using the XmStringCreateLtoR() function fails, before returning also free the allocated buttons pointer. fixes: #14247 closes: #14280 Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-26patch 9.1.0209: leaking memory in exe_newdict() on errorv9.1.0209Christian Brabandt
Problem: leaking memory in exe_newdict() on error (LuMingYinDetect) Solution: free allocated dict if GA_GROW_FALIS() fixes: #14255 closes: #14281 Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-26patch 9.1.0208: winfixbuf does not allow to re-edit current bufferv9.1.0208Colin Kennedy
Problem: winfixbuf does not allow to re-edit current buffer (Tim Pope, after v9.1.0147) Solution: Explicitly allow :e even when 'winfixbuf' is set, since it just re-loads the current buffer (Colin Kennedy) fixes: #14237 closes: #14286 Signed-off-by: Colin Kennedy <colinvfx@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-26patch 9.1.0207: No autocommand when writing session filev9.1.0207Colin Kennedy
Problem: No autocommand when writing session file Solution: Add SessionWritePost autocommand (Colin Kennedy) fixes: ##14242 closes: #14288 Co-authored-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Colin Kennedy <colinvfx@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-26patch 9.1.0206: unused display_text_first boolean var in win_line()v9.1.0206Dylan Thacker-Smith
Problem: unused display_text_first boolean var in win_line() Solution: Remove unused display_text_first boolean variable (Dylan Thacker-Smith) The only place it is used, uses its initial constant value, then the following conditionally values set to the variable are unused. Specifically, it was commit 234c3fab28c14846b962c90097496b27ee1b4df8 that changed the use of display_text_first such that it doesn't have any effect. closes: #14305 Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-25patch 9.1.0205: Cannot use modifiers before :-Ntabmovev9.1.0205zeertzjq
Problem: Cannot use modifiers before :-Ntabmove. Solution: Check backwards from the command instead of checking from the start of the command line. Slightly adjust docs to make them more consistent (zeertzjq). closes: #14289 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-25patch 9.1.0204: Backspace inserts spaces with virtual text and 'smarttab'v9.1.0204zeertzjq
Problem: Backspace inserts spaces with virtual text and 'smarttab'. Solution: Ignore virtual text and wrapping when backspacing. (zeertzjq) related: neovim/neovim#28005 closes: #14296 Co-authored-by: VanaIgr <vanaigranov@gmail.com> Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-25patch 9.1.0203: build-error on GNU/Hurdv9.1.0203James McCoy
Problem: build-error on GNU HURD Solution: Define _XOPEN_SOURCE like for Android and Cygwin (James McCoy) strptime() requires _XOPEN_SOURCE to be defined for its declaration to be visible. This is already done for non-Android Linux and Cygwin, but also needs to be exposed for GNU/Hurd. closes: #14285 Signed-off-by: James McCoy <jamessan@jamessan.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-24patch 9.1.0202: leaking memory in add_user() on failurev9.1.0202Christian Brabandt
Problem: leaking memory in add_user() (LuMingYinDetect) Solution: free user_copy pointer instead of the user ptr add_user() is called with a user pointer and the user pointer comes from these functions: - return value from the getpwent() function (Unix). - return value from the getpwnam() function (Unix). - return value from the NetUserEnum() function (MS Windows). For the first 2 callers, the man page for those functions directly says, one should not free the returned pointer (since it comes from static memory). For the third caller (on MS Windows), the returned buffer is already freed directly after calling the add_user() function in NetApiBufferFree(), so this would lead to a double free(). This all indicates, the user ptr is wrongly freed in the add_user() function and the intention was to free the user_copy pointer instead in case of an error. So let's just use that now. fixes: #14250 closes: #14260 Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-24patch 9.1.0201: gM not working correctly with virt textv9.1.0201Dylan Thacker-Smith
Problem: `gM` would include outer virtual text and its padding when getting the line length used to calculate the middle of the line, putting the cursor much closer to virtual text lines. Solution: Exclude outer virtual text in getting the line length for `gM`, so that virtual text doesn't influence where the cursor is moved to (Dylan Thacker-Smith). closes: #14262 Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-24patch 9.1.0200: `gj`/`gk` not skipping over outer virtual text linesv9.1.0200Dylan Thacker-Smith
Problem: `gj`/`gk` was updating the desired cursor virtual column to the outer virtual text, even though the actual cursor position was moved to not be on the virtual text, leading the need to do an extra `gj`/`gk` to move past each virtual text line. (rickhowe) Solution: Exclude the outer virtual text when getting the line length for moving the cursor with `gj`/`gk`, so that no extra movement is needed to skip over virtual text lines. (Dylan Thacker-Smith) fixes: #12028 related: #14262 Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-23patch 9.1.0199: Not enough tests for the slice() functionv9.1.0199zeertzjq
Problem: Not enough tests for the slice() function. Solution: Test with multibyte chars, and in both Legacy and Vim9 script. Update docs to be clearer about how it treats composing chars. (zeertzjq) closes: #14275 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-22patch 9.1.0198: Vim9: compound operators broken for lambdas in an objectv9.1.0198Yegappan Lakshmanan
Problem: Vim9: compound operators broken for lambdas in an object (girishji) Solution: When using an object from the outer scope, use the LOADOUTER instruction to load the object (Yegappan Lakshmanan). fixes: #14236 closes: #14266 Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-22patch 9.1.0197: Vim9: problem evaluating negated boolean logicv9.1.0197Yegappan Lakshmanan
Problem: Vim9: problem evaluating negated boolean logic (lxhillwind) Solution: Don't clear the first value on short circuit evaluation (Yegappan Lakshmanan) fixes: #14265 closes: #14269 Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-21patch 9.1.0196: filetype: support for gnuplot files is lackingv9.1.0196RobbiZ98
Problem: filetype: support for gnuplot files is lacking Solution: Also detect *.gnuplot files (RobbiZ98) closes: #14243 Signed-off-by: RobbiZ98 <113035863+RobbiZ98@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-21patch 9.1.0195: memleak with ex_drop, NULL dereferencev9.1.0195Christian Brabandt
Problem: memleak with ex_drop(), NULL dereference (zeertzjq) Solution: revert back to ex_rewind(), use curbuf instead of buf fixes: #14246 closes: #14251 Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-21patch 9.1.0194: gcc complains about uninitialized varv9.1.0194Christian Brabandt
Problem: gcc complains about uninitialized var (Tony Mechelynck) Solution: initialize to NULL Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-21patch 9.1.0193: May leak memory in completion when ga_grow() failsv9.1.0193zeertzjq
Problem: May leak memory in completion when ga_grow() fails. Solution: Free "wca" when ga_grow() fails (zeertzjq). fixes: #14248 closes: #14249 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-20patch 9.1.0192: drop: don't rewind when editing the same filev9.1.0192Christian Brabandt
Problem: :drop tries to :rewind the argumentlist, which results in E37 (after v9.1.0046) Solution: instead of calling ex_rewind(), call open_buffer() only when re-using the initial empty buffer fixes: #14219 closes: #14220 Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-20patch 9.1.0191: Installer does not remove all filesv9.1.0191RestorerZ
Problem: Installer does not remove all files Solution: Update installer and delete all files on uninstall update Sodium library dependency, update Readme (RestorerZ) closes: #14214 Signed-off-by: RestorerZ <restorer@mail2k.ru> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-20patch 9.1.0190: complete_info() returns wrong order of itemsv9.1.0190Girish Palya
Problem: complete_info() returns wrong order of items (after v9.0.2018) Solution: Revert Patch v9.0.2018 (Girish Palya) bug fix: complete_info() gives wrong results 1) complete_info() reverses list of items during <c-p> 2) 'selected' item index is wrong during <c-p> 3) number of items returnd can be wrong Solution: - Decouple 'cp_number' from 'selected' index since they need not be correlated - Do not iterate the list backwards - Add targeted tests Regression introduced by https://github.com/vim/vim/commit/69fb5afb3bc9da24c2fb0eafb0027ba9c6502fc2 Following are unnecessary commits to patch problems from above: https://github.com/vim/vim/commit/fef66301665027f1801a18d796f74584666f41ef https://github.com/vim/vim/commit/daef8c74375141974d61b85199b383017644978c All the tests from above commits are retained though. fixes: #14204 closes: #14241 Signed-off-by: Girish Palya <girishji@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-20patch 9.1.0189: Memory leak with "above" virttext and 'relativenumber'v9.1.0189zeertzjq
Problem: Memory leak with "above" virtual text and 'relativenumber'. Solution: Free "text_props" and "text_prop_idxs" before returning. Also fix off-by-one error causing line number to be drawn beyond end of window (zeertzjq). fixes: #14239 closes: #14241 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-19patch 9.1.0188: filetype: no support for Vento filesv9.1.0188wrapperup
Problem: Vento files are not recognized. Solution: Recognize *.vto files as filetype "vento" (wrapperup) Vento is a templating engine https://vento.js.org/ closes: #14229 Signed-off-by: wrapperup <wrapperup4@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-18patch 9.1.0187: filetype: no support for Dafny filesv9.1.0187zeertzjq
Problem: Dafny files are not recognized. Solution: Recognize *.dfy files as filetype "dafny" (zeertzjq). Ref: https://dafny.org/ Ref: https://github.com/mlr-msft/vim-loves-dafny closes: #14226 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-17patch 9.1.0186: cursor pos wrong on mouse click after eol with 'rl', 've' ↵v9.1.0186zeertzjq
and conceal Problem: Wrong cursor position when clicking after end of line with 'rightleft', 'virtualedit' and conceal. Solution: Set values in ScreenCols[] also with SLF_RIGHTLEFT. Also fix off-by-one cursor position with 'colorcolumn' (zeertzjq). closes: #14218 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-17patch 9.1.0185: 'wincolor' hl missing with 'rightleft', "below" virttext, ↵v9.1.0185zeertzjq
'nowrap' Problem: 'wincolor' highlight missing with 'rightleft', "below" virtual text and 'nowrap'. Solution: Handle 'rightleft' in draw_screen_line() (zeertzjq). closes: #14216 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-03-16patch 9.1.0184: Cursor pos wrong when clicking with conceal and wrapv9.1.0184zeertzjq
Problem: Cursor position wrong when clicking with conceal and wrap. Solution: Use the virtual column of the last char for ScreenCols[] in boguscols. Remove use of MAXCOL in ScreenCols[]. Rename third argument of wlv_screen_line() to "clear_end" as that's clearer what it does (zeertzjq). related: 14192 closes: #14200 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>