Commit Graph

2046 Commits

Author SHA1 Message Date
Johannes Altmanninger
50775b26e4 *sh.kak: do not highlight expansions if their $ is escaped 2020-09-19 08:06:46 +02:00
Johannes Altmanninger
19b54a8a6e Highlight more Perl quoting syntaxes
This adds highlighting for

- quoting operators qw, qr, and qx, like `qw< some words >`
- angle brackets after a quoting operator, like `q<string>`
- punctuation as quoting delimiter, like `q|string|`
- POD sections, which start with ^=\w and and with ^=cut
- heredocs; the marker can be a bare word, or a quoted word, like

	print <<~ 'EOF'
		single quoted heredoc
	EOF

Closes #3736

No attempt is made to use different highlighting for interpolated (qq or
"") strings just yet. Recognizing quote boundaries is more important.
2020-09-18 20:55:12 +02:00
Frank LENORMAND
4025ac8167 rc modeline: Print the final command directly 2020-09-18 15:12:13 +03:00
Frank LENORMAND
2a51ebf105 rc modeline: Factorise the use of kakquote 2020-09-18 15:12:13 +03:00
Frank LENORMAND
2d78b0760d rc modeline: Error out on unsupported formats
This commit makes `:modeline-parse` grab all lines that look like
modelines, and lets the parser deal with invalid formats.

This allows actually printing an error on unsupported modelines
formats, instead of ignoring them upfront.
2020-09-18 14:54:57 +03:00
Frank LENORMAND
30ee97386d rc modeline: Use more idiomatic shell 2020-09-18 14:54:57 +03:00
Frank LENORMAND
7731fe4cb2 rc modeline: Print error messages correctly 2020-09-18 09:01:32 +03:00
Frank LENORMAND
6976b1dce4 rc modeline: Prevent command execution
This commit prevents specially crafted modelines from making the
editor execute arbitrary Kakoune commands.

By using a tabulation character as a separator, commands can be
injected in the value of the options listed in the modeline. For
example:

	# kak: tabstop=2;set-option	buffer	pwned	yes

Fixes #3735.
2020-09-18 09:01:32 +03:00
Maxime Coste
dbd7e4da79 Merge remote-tracking branch 'voroskoi/gopls' into master 2020-09-17 19:49:33 +10:00
Maxime Coste
fd658f6995 Merge remote-tracking branch 'lenormf/fix-3733' into master 2020-09-17 19:39:48 +10:00
Maxime Coste
b8f56a65ed Merge remote-tracking branch 'deviant/add-go-alternative-file' into master 2020-09-17 19:38:59 +10:00
Maxime Coste
cb047a4a7d Merge remote-tracking branch 'tototest99/ninja-syntax' into master 2020-09-17 19:34:54 +10:00
Maxime Coste
81163ce48a Merge remote-tracking branch 'Aajn/python-highlighter' into master 2020-09-17 19:33:51 +10:00
VÖRÖSKŐI András
9fe1a2a9a4 gopls: fixes based on krobelus@ review 2020-09-16 21:58:22 +02:00
antab
810689ad60 fix: variables adjacent to = and in build declaration 2020-09-16 21:09:27 +02:00
Frank LENORMAND
95c095f3fb rc modeline: Don't select more lines than configured
This commit addresses an off-by-one error that selected `modelines`+1
lines when looking for modelines in a buffer.

Note that setting `modelines` to 0 will still select one line.

Fixes #3733.
2020-09-16 11:00:15 +03:00
antab
ea4f2b8837 feat: add basic ninjafile support 2020-09-16 00:03:17 +02:00
David Arnold
1ff9895fe4 just: re-implment bash/sh interpreter 2020-09-15 16:32:07 -05:00
David Arnold
3857696df6
just-highlighter: pre call out to shebang regions 2020-09-15 16:10:40 -05:00
David Arnold
3770baaab0 fix justfile highlighter
This fixes serveral shortcomings of the current implementation:

- valid recipt definitions eg
foo bar="quz":
where previously interrupted by justfile/double_string
and therefore they where not highlighted correctly

- global variable assignments where not captured at all
2020-09-15 15:52:00 -05:00
Piotr Chrominski
bfbf4d2080 Fix python docstring highlighter
Escaped ' or " at the end of a docstring no longer break highlighting.
2020-09-15 22:01:55 +02:00
VÖRÖSKŐI András
2b18b1d088 rc/go-tools.kak: remove
Working functions replaced by gopls
Use kak-lsp if you need in place documentation and autocompletion
2020-09-15 01:02:19 +02:00
VÖRÖSKŐI András
568020d67b rc gopls.kak: initial import
Add support for the following gopls commands:
 - format
 - imports
 - definition
 - references

Thanks krobelus@ and lenormf@ for their review and suggestions.
2020-09-15 01:01:35 +02:00
V
c6b7e3d74a Add :alt command for go files 2020-09-10 00:23:46 +02:00
Maxime Coste
6f260c2ab2 Merge remote-tracking branch 'm-kru/latex' into master 2020-09-08 19:06:56 +10:00
Michał Kruszewski
0f63dd339a Provide better support for Go language.
1. Highlight short variable declaration operator :=.
2. 'while' is not go keyword.
3. Auto insert ')', '}', when line ends with '(' or '{'.
2020-09-07 21:48:06 +02:00
Maxime Coste
cfbff4e132 Merge remote-tracking branch 'kayhide/purescript-filetype' into master 2020-09-06 11:23:48 +10:00
Maxime Coste
c98d6c3062 Merge remote-tracking branch 'krobelus/initialize-shell-vars' into master 2020-09-06 10:52:07 +10:00
Maxime Coste
cf7955cdfb Merge remote-tracking branch 'lenormf/docstring-newline-format' into master 2020-09-06 10:50:51 +10:00
Maxime Coste
f84c550d30
Apply suggestions from code review
Co-authored-by: Screwtapello <thristian@gmail.com>
Co-authored-by: Johannes Altmanninger <aclopte@gmail.com>
2020-09-06 10:56:37 +10:00
Maxime Coste
22676647fe Merge remote-tracking branch 'krobelus/python-no-indent-after-comment' into master 2020-09-06 10:48:49 +10:00
Maxime Coste
97fd0c0510 Merge remote-tracking branch 'lenormf/repl-normalise' into master 2020-09-06 10:48:08 +10:00
Michał Kruszewski
705712f13b Improve latex support.
Auto insert "\end{[word]}" for "\begin{[word]}".
2020-09-05 16:14:22 +02:00
Tim Allen
a25cc215e8 Reference content goes in docstrings, explanations go in prose docs.
Also, make sure docstrings reference the prose docs, so people who stumble over
an interesting-looking command or option can find out more about it.
2020-09-04 19:20:50 +10:00
Hideaki Kawai
c613e3c7f1 Create purescript filetype 2020-09-04 11:33:08 +09:00
Tim Allen
66cc39cb14 Update plugin docs to not duplicate docstring information. 2020-09-03 17:18:19 +10:00
Tim Allen
9934788155 Add more user-oriented documentation for the documentation system. 2020-09-03 16:49:18 +10:00
Tim Allen
e3298c6320 Address code-review comments
- some wording changes in included documentation
- find supports multiple starting paths, we don't need to launch it 3 times
- Change the regex that trims the file extension to only trim the last extension

Some additional things I noticed:

- find should use -L to see through symlinks like the autoload processing does.
- find should check the user's autoload directory first, so users can override
  Kakoune's built-in documentation.
2020-09-03 15:21:54 +10:00
Tim Allen
d628cb50cf rc: Add some documentation for existing plugins.. 2020-09-03 01:55:36 +10:00
Tim Allen
4296305171 doc.kak: Also search through plugins (stdlib and per-user) for docs.
This makes the somewhat-dubious assumption that every plugin will have uniquely-
named documentation files, instead of automatically putting every plugin's docs
into a namespace. However, plugins already have to deal with flat namespaces for
commands, options, filetypes, etc. so one more shouldn't hurt.

Fixes #2466.
2020-09-03 01:19:20 +10:00
Frank LENORMAND
0cd706254a rc clang grep: Make docstrings more readable 2020-09-02 11:57:34 +03:00
Johannes Altmanninger
407c72d90a Clear unwanted environment variable
This adds two things I forgot in
9a7d8df4 (Avoid accidentally using environment variables in sh scopes)

Mea culpa, the problem was that I was skipping matches with "filetype"
because that's usually just a hook parameter as in "WinSetOption filetype=.."

	rg --pcre2 '\b(?!filetype=)\w+=' rc/

So I missed these two cases where a shell variable is actually called "filetype".

The one in git.kak was not a problem because show_git_cmd_output is only
ever called with sane inputs.  However, file.kak does use the filetype
environment variable for many mime types, for example:

	filetype=somefiletype\''; echo -debug injection; nop '\' kak /dev/null

Will run the echo since /dev/null has mime type "inode/chardevice"
2020-09-02 06:54:19 +02:00
Johannes Altmanninger
e1de4aa118 python.kak: Do not indent after comments ending in :
Fixes #3693

This will not work for lines like the one below but I think that's okay
because it does work for most comments.

	foo() # foo:
2020-09-02 06:44:36 +02:00
Frank LENORMAND
87f9be6723 rc repl: Normalise REPL commands
It's unclear what the `send-text` alias does at first glance,
so prefixing it with "repl-" both fixes that and helps make it
discoverable via the command prompt's fuzzy matcher.

The `repl` alias also seems too generic a name, the "-new" suffix
should hopefully give a hint that it creates a new window.
2020-09-01 13:34:52 +03:00
Frank LENORMAND
3145e3e939 rc markdown: Highlight trailing spaces properly
This commit addresses the following issues:

* highlight trailing space characters with the `meta` face, instead of
  `PrimarySelection`
* make the regex more readable by using a capture group in stead of
  `\K`
* specifically match space characters, not other horizontal whitespace
  characters
* match two or more space characters

Reference[1]:

> When you do want to insert a <br /> break tag using Markdown, you
> end a line with two or more spaces, then type return.

[1] https://daringfireball.net/projects/markdown/syntax#p

Note that the original reproducer doesn't seem to work anymore,
probably because of changes made to how lists are highlighted.

Fixes #911
2020-09-01 13:12:58 +03:00
Ludvig Böklin
0e84cdb016 Mercury-lang filetype support 2020-08-31 16:36:43 +02:00
Maxime Coste
4793a4e8ce Allow multiple arguments in tmux repl
Fixes #3680
2020-08-30 10:53:03 +10:00
Johannes Altmanninger
9a7d8df447 Avoid accidentally using environment variables in sh scopes
On the instances with altfile this was already the case, but this makes it more obvious.

Closes #3673
2020-08-24 19:01:05 +02:00
Maxime Coste
4b7fd68d48 Merge remote-tracking branch 'krobelus/indent-after-keyword' 2020-08-24 19:24:19 +10:00
Maxime Coste
beeaf19801 Merge remote-tracking branch 'krobelus/highlight-nested-variable-expansions' 2020-08-24 19:23:35 +10:00
Johannes Altmanninger
ab76ec981a Avoid extra indent when line does not end on keyword
For example there was an indent after a line like "echo todo" with filetype sh
because the "do" in "todo" was recognised as keyword.
2020-08-23 19:15:52 +02:00
Johannes Altmanninger
473967df04 fish.kak: add missing highlighting for builtins true and string
I forgot them last time, sorry for the noise
2020-08-23 19:15:52 +02:00
Johannes Altmanninger
caf9739329 sh.kak: Don't leak highlighting of nested variable expansions
Fixes #3675
2020-08-23 19:15:52 +02:00
Maxime Coste
78a7c5fe9b Merge remote-tracking branch 'alexherbo2/kakrc' 2020-08-23 13:59:41 +10:00
Maxime Coste
7f5959d295 Merge branch 'grep' of http://github.com/vbauerster/kakoune 2020-08-23 13:57:40 +10:00
Alex Leferry 2
3f8d3dcf86 kakrc: Add trigger-user-hook keyword 2020-08-22 23:16:46 +02:00
Maxime Coste
0b3b912ffc Merge remote-tracking branch 'SolitudeSF/nim' 2020-08-20 19:00:36 +10:00
Maxime Coste
4e4a65e944 Merge branch 'sh-insert' of http://github.com/SeerLite/kakoune 2020-08-17 20:03:12 +10:00
Maxime Coste
83685501ea Merge remote-tracking branch 'caksoylar/fix-python-ops' 2020-08-17 19:59:43 +10:00
SeerLite
e0c756d943 kakrc.kak: Split auto-insert and auto-indent hooks 2020-08-14 23:43:43 -04:00
SeerLite
1af4a1b1a8 sh.kak: Split auto-insert and auto-indent hooks 2020-08-14 23:42:52 -04:00
Vladimir Bauer
649e252f75 bring *grep* buffer to front in context of toolsclient 2020-08-14 00:52:22 +05:00
Cem Aksoylar
03032d6c3e Add assignment expression := (walrus) operator 2020-08-12 23:12:35 -07:00
Cem Aksoylar
e9b0e9a57d Fix <> and ** operators highlighting 2020-08-12 23:11:43 -07:00
Parasrah
151fe01a5c
fix #3651
Similar to Jinja, getting `eex` highlighting in *.ex files
will require users to setup a filetype hook similar to the
following:

hook global WinSetOption filetype=elixir %{
    require-module eex
    add-highlighter window/eex ref eex
}

This is done both to fix a circular dependency between the `elixir`
and `eex` modules, and avoid polluting `elixir` files with false
positives from `eex` highlighting given `eex` is framework specific
2020-08-12 19:14:27 -06:00
SolitudeSF
328ef122ae
Update keywords and suffixes in nim.kak 2020-08-07 12:59:00 +03:00
Maxime Coste
ba7831035f Merge remote-tracking branch 'johnisom/crystal-filetype' 2020-08-03 18:57:45 +10:00
John Isom
72f658f896 Replace my implementation of crystal-insert-on-new-line with already-existing ruby one
This fixed a weird bug where if you were typing in the top level scope of a
program (no indentation before statements), the `end`s wouldn't be inserted
for you.
2020-08-02 11:39:59 -06:00
John Isom
f59bdc614f Fix typo in comment 2020-08-02 11:33:56 -06:00
John Isom
fdf38ecc5e Fix auto indentation for if/case and else 2020-08-02 11:28:27 -06:00
John Isom
6cf39a5f4f Fix auto indentation for if/case and else 2020-08-02 11:22:28 -06:00
Maxime Coste
616f6bbe9b Merge remote-tracking branch 'krobelus/fail-on-missing-tools' 2020-08-02 16:50:33 +10:00
Maxime Coste
f60b0a1441 Merge remote-tracking branch 'johnisom/ruby-indentation' 2020-08-02 16:25:07 +10:00
John Isom
8a02bafe0d Beautify indenting in add-highlighter region for percent literals 2020-08-01 13:54:16 -06:00
John Isom
dee96f8e82 Improve syntax highlighting of Ruby percent literals
The syntax highlighting has been broken down into 3 main categories:
string: string, array of words
variable: symbol, array of symbols
meta: regexp, shell execution
2020-08-01 13:37:40 -06:00
John Isom
92558bb675 Add rule for % string literals without bracket/style chars; no recurse yet
Becuase %Q^hello^ is a perfectly valid Ruby string literal. Strange, I know.
2020-08-01 13:18:47 -06:00
John Isom
e858df3ca2 Add 'else' to auto deindent/align logic in context of 'case' statement 2020-08-01 12:12:48 -06:00
John Isom
57e9719c25 Add 'else' to auto deindent/align logic in context of 'case' statement 2020-08-01 11:57:38 -06:00
John Isom
322d0659fd Add 'when' to list of keywords that signifies end for ruby-insert-on-new-line 2020-08-01 11:54:57 -06:00
John Isom
dbb548af2d Fill in implementation of crystal-insert-on-new-line 2020-08-01 11:46:35 -06:00
John Isom
c36583524c Reorder definition of 3 indent/insert commands 2020-08-01 11:32:16 -06:00
John Isom
0d4dfbc349 Implement copying comment char (#) and whitespace after it 2020-08-01 11:31:28 -06:00
John Isom
8f0843978e Beautify indentation of 'crystal-indent-on-char' 2020-08-01 11:19:36 -06:00
John Isom
a6329b4bfc Fix deindentation of end to make it go to the right level 2020-08-01 11:18:41 -06:00
John Isom
d6e3c1ff19 Fix deindenting nested blocks/statements 2020-08-01 10:52:26 -06:00
John Isom
145f2db741 Add rule to align 'end' with opening statement 2020-08-01 10:35:34 -06:00
John Isom
0fe71ebada Add deindentation rule for 'rescue' statement 2020-08-01 10:33:35 -06:00
John Isom
21c083f47c Add rule to align 'when' to 'case' 2020-08-01 10:32:45 -06:00
John Isom
b7490d853d Add support for deindenting rescue statment when part of def (instead of just begin) 2020-08-01 10:28:54 -06:00
John Isom
76eadef00b Add rule to align else/elsif to opening if 2020-08-01 10:27:51 -06:00
John Isom
e84ebfdfab Replace ') <a-&>' with '1<a-&>' 2020-08-01 10:16:48 -06:00
John Isom
2c382de1e8 Add indenting after starting structure/opening statement 2020-08-01 10:08:47 -06:00
John Isom
ee842da85a Replace manual whitespace trimming to use function created in prev. commit 2020-08-01 09:59:53 -06:00
John Isom
62ac42bb23 Add 'crystal-trim-indent' command
This removes trailing whitespaces from the end of lines
2020-08-01 09:58:21 -06:00
John Isom
783fac3d61 Remove single quotes from 'execute-keys -draft ...' keys 2020-08-01 09:56:02 -06:00
John Isom
0063e4c4f5 Collapse 'try %{ execute-keys ... }' blocks to one line 2020-08-01 09:55:15 -06:00
John Isom
73f5f32385 Wrap all 'indent-on-new-line' commands in 'evaluate-commands -no-hook -draft -itersel' 2020-08-01 09:53:51 -06:00
John Isom
b23a85e747 Beautify percent string literals highlighters spacing/indentation 2020-08-01 09:50:27 -06:00
John Isom
0c591baae3 Add 'crystal-indent-on-char' and 'crystal-insert-on-new-line' hooks and functions 2020-08-01 09:49:53 -06:00
John Isom
591cb83da4 Rename 'crystal-new-line-inserted' to 'crystal-indent-on-new-line'
This gives the function clear responsibility, whereas the naming
before was unclear
2020-08-01 09:39:08 -06:00