feat(kauffinger/lazyvim): new config with my own from kauffinger/lazyvim
This commit is contained in:
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
tt.*
|
||||
.tests
|
||||
doc/tags
|
||||
debug
|
||||
.repro
|
||||
foo.*
|
||||
*.log
|
||||
data
|
||||
15
.neoconf.json
Normal file
15
.neoconf.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"neodev": {
|
||||
"library": {
|
||||
"enabled": true,
|
||||
"plugins": true
|
||||
}
|
||||
},
|
||||
"neoconf": {
|
||||
"plugins": {
|
||||
"lua_ls": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
201
LICENSE
Normal file
201
LICENSE
Normal file
@@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
56
README.md
Normal file
56
README.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# 💤 LazyVim + Laravel
|
||||
|
||||
(and some stuff I also use)
|
||||
This is my best effort to fully integrate my LazyVim config with Laravel and all Laravel-related tools.
|
||||
Works great with Livewire v3 as well as Volt and Folio.
|
||||
When using Volt, use class-based syntax for maximum compatibility.
|
||||
Functional Volt works, too, but has issues with `$this`.
|
||||
|
||||
A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
|
||||
Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
|
||||
|
||||
## Laravel Native
|
||||
|
||||
This config is setup with the best available dev tooling for laravel
|
||||
|
||||
- Intelephense
|
||||
- Blade Language Support
|
||||
- Blade Formatter
|
||||
- Pint
|
||||
- Phpstan (make sure you configure larastan in your project)
|
||||
- Rustywind
|
||||
- Tailwind LS
|
||||
- XDebug with configuration for Laravel Sail
|
||||
- Treesitter beta for blade files included
|
||||
|
||||
## Additions
|
||||
|
||||
### Requirements
|
||||
|
||||
If you encounter an issue with `Intelephense` not recognising facade or model function calls, you will need to install [Laravel IDE Helper](https://github.com/barryvdh/laravel-ide-helper) into your project and execute the relevant artisan commands. Thanks to [@ermand](https://github.com/ermand) for bringing up the issue as well as the solution.
|
||||
|
||||
Make sure you install all TreeSitter parsers by doing:
|
||||
`:TSInstall all` and `:TSInstall php_only`.
|
||||
This will install both the experimental blade parser, for which configuration is included in this config, as well as the php_only parser, which is needed for it to work fully.
|
||||
For some reason php_only is not included in `all`.
|
||||
|
||||
Optional:
|
||||
|
||||
- lazygit
|
||||
- lazydocker
|
||||
|
||||
(you should use both, they are great)
|
||||
|
||||
### LSP
|
||||
|
||||
- Tailwind support
|
||||
- Intelephense for php (best in class for Laravel development)
|
||||
|
||||
### Theme
|
||||
|
||||
- I concede, we are back to using catppuccin. There is just too many integrations.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If opening a py file leads to pyright analyzing your whole library, make sure to add an empty `pyrightconfig.json` into the file root.
|
||||
This can be your $HOME folder or for example on darwin using homebrew it could be `/opt/homebrew/`.
|
||||
36
after/queries/html/injections.scm
Normal file
36
after/queries/html/injections.scm
Normal file
@@ -0,0 +1,36 @@
|
||||
;; extends
|
||||
|
||||
; AlpineJS attributes
|
||||
(attribute
|
||||
(attribute_name) @_attr
|
||||
(#lua-match? @_attr "^x%-%l")
|
||||
(#not-any-of? @_attr "x-teleport" "x-ref" "x-transition")
|
||||
(quoted_attribute_value
|
||||
(attribute_value) @injection.content)
|
||||
(#set! injection.language "javascript"))
|
||||
|
||||
; Blade escaped JS attributes
|
||||
; <x-foo ::bar="baz" />
|
||||
(element
|
||||
(_
|
||||
(tag_name) @_tag
|
||||
(#lua-match? @_tag "^x%-%l")
|
||||
(attribute
|
||||
(attribute_name) @_attr
|
||||
(#lua-match? @_attr "^::%l")
|
||||
(quoted_attribute_value
|
||||
(attribute_value) @injection.content)
|
||||
(#set! injection.language "javascript"))))
|
||||
|
||||
; Blade PHP attributes
|
||||
; <x-foo :bar="$baz" />
|
||||
(element
|
||||
(_
|
||||
(tag_name) @_tag
|
||||
(#lua-match? @_tag "^x%-%l")
|
||||
(attribute
|
||||
(attribute_name) @_attr
|
||||
(#lua-match? @_attr "^:%l")
|
||||
(quoted_attribute_value
|
||||
(attribute_value) @injection.content)
|
||||
(#set! injection.language "php_only"))))
|
||||
10
after/queries/php/indents.scm
Normal file
10
after/queries/php/indents.scm
Normal file
@@ -0,0 +1,10 @@
|
||||
;; extends
|
||||
|
||||
[
|
||||
; prevent double indent for `return new class ...`
|
||||
(return_statement
|
||||
(object_creation_expression))
|
||||
; prevent double indent for `return function() { ... }`
|
||||
(return_statement
|
||||
(anonymous_function_creation_expression))
|
||||
] @indent.dedent
|
||||
127
index.blade.php
Normal file
127
index.blade.php
Normal file
@@ -0,0 +1,127 @@
|
||||
@extends('layouts/eatvio')
|
||||
@php
|
||||
$curDiaryDate = \Carbon\Carbon::createFromFormat('Y-m-d', $curDiary->date)->format('d-m-Y');
|
||||
@endphp
|
||||
@section('main_section')
|
||||
<section class="py-5 diary" id="main">
|
||||
<div class="diary__container container-sm">
|
||||
<div class="diary__header">
|
||||
<a href="{{ route('calendar.index') }}" class="text-black diary__back icon-arrow-short-left">
|
||||
<span class="">{{ __('diary.calendar') }}</span>
|
||||
</a>
|
||||
<div class="diary__info">
|
||||
<div class="diary__info-current">
|
||||
<a class="link-dark" href="{{ route('calendar.index') }}">{{ $daysCount }}
|
||||
{{ __('meal_form.day') }}</a>
|
||||
</div>
|
||||
<div class="diary__info-date"><a href="{{ route('calendar.index') }}">{{ $curDiaryDate }}</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form method="post" action="{{ route('diary.update', $curDiary) }}">
|
||||
@method('PATCH')
|
||||
@csrf
|
||||
|
||||
<div class="diary__container container-sm" x-data="{ open: false }">
|
||||
<div class="diary__caption title">{{ __('meal_form.wakeup_and_down_time') }}
|
||||
<span class="text-eblue icon-down" x-bind:style="open ? 'rotate: 180deg' : ''"
|
||||
x-on:click="open = !open"></span>
|
||||
</div>
|
||||
<div x-bind:class="open ?
|
||||
'container flex-wrap py-2 px-0 mb-4 d-flex justify-content-between align-items-center --mw-1000 flex-md-nowrap' :
|
||||
'hidden'"
|
||||
x-transition style="display: none;" x-show="open">
|
||||
|
||||
<div
|
||||
class="py-3 px-5 mb-3 text-center w-100 w-md-50 me-md-4 mb-md-0 --bg_white --shadow --radius --f_bold --no_wrap">
|
||||
<p>{{ __('diary.waking_time') }}</p>
|
||||
<div class="mx-2 d-flex align-items-center justify-content-center position-relative">
|
||||
<svg width="24" height="24" class="--input_inline_left_icon">
|
||||
<use xlink:href="#Clock"></use>
|
||||
</svg>
|
||||
<input name="wakeup" type="time"
|
||||
class="py-2 text-center form-control --f_blue --f_bold fs-6"
|
||||
value="{{ $curDiary->wakeup }}" placeholder="06:30" required="" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="py-3 px-5 text-center w-100 w-md-50 --bg_white --shadow --radius --f_bold --no_wrap">
|
||||
<p>{{ __('diary.bedtime') }}</p>
|
||||
<div class="mx-2 d-flex align-items-center justify-content-center position-relative">
|
||||
<svg width="26" height="24" class="--input_inline_left_icon">
|
||||
<use xlink:href="#Sleep"></use>
|
||||
</svg>
|
||||
<input name="retire" type="time"
|
||||
class="py-2 text-center form-control --f_blue --f_bold fs-6"
|
||||
value="{{ $curDiary->retire }}" placeholder="22:30" required="" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@livewire('diary.meal-form', ['diaryId' => $diaryId])
|
||||
<div class="diary__container container-sm">
|
||||
<div class="diary__extras">
|
||||
<div class="diary__extras-caption">{{ __('meal_form.additional_info_for_consultant') }}</div>
|
||||
<textarea name="comment" value="{{ $curDiary->comment ?? '' }}" class="textarea"
|
||||
placeholder="{{ __('meal_form.additional_info_placeholder') }}"></textarea>
|
||||
</div>
|
||||
<button class="w-full diary__btn l-btn l-btn-primary l-btn-fullwidth"
|
||||
type="submit">{{ __('meal_form.end_the_day') }}</button>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
@once
|
||||
@push('jq_scripts')
|
||||
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
|
||||
<script>
|
||||
function initializeSwiper(initedFrom = null) {
|
||||
var mySwiper = new Swiper('.diary__product-slider', {
|
||||
loop: true,
|
||||
speed: 800,
|
||||
slidesPerView: 1,
|
||||
observeSlideChildren: true,
|
||||
observer: true,
|
||||
navigation: {
|
||||
nextEl: '.diary__product-next',
|
||||
prevEl: '.diary__product-prev',
|
||||
},
|
||||
});
|
||||
if (initedFrom == "morph-updated") {
|
||||
lastSlideIndex = mySwiper.slides.length - 1;
|
||||
mySwiper.slideTo(lastSlideIndex, 1);
|
||||
}
|
||||
console.log('inited from ' + initedFrom);
|
||||
window._mySwiper = mySwiper;
|
||||
}
|
||||
const onEvents = [
|
||||
'livewire:initialized',
|
||||
'photo-form-changed',
|
||||
'photo-form-changed-file',
|
||||
'photo-form-changed-rendered',
|
||||
'food-intake-updated',
|
||||
'meal-form-rendered',
|
||||
'photo-form-photos-updated',
|
||||
'photo-form-rendered'
|
||||
];
|
||||
onEvents.forEach((eventName) => {
|
||||
document.addEventListener(eventName, () => {
|
||||
if (eventName === 'livewire:initialized') {
|
||||
Livewire.hook('morph.updated', ({
|
||||
el,
|
||||
component
|
||||
}) => {
|
||||
if (component.name == 'diary.meal-photos' && el.className.includes(
|
||||
'diary__product-next')) {
|
||||
initializeSwiper('diary.meal-photos-component-moph-updated');
|
||||
}
|
||||
});
|
||||
}
|
||||
initializeSwiper(eventName);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
@endonce
|
||||
@endsection
|
||||
2
init.lua
Normal file
2
init.lua
Normal file
@@ -0,0 +1,2 @@
|
||||
-- bootstrap lazy.nvim, LazyVim and your plugins
|
||||
require("config.lazy")
|
||||
79
lazy-lock.json
Normal file
79
lazy-lock.json
Normal file
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"LazyVim": { "branch": "main", "commit": "fe72424e77cb9c953084bbcaaa0eb7fe8056dc70" },
|
||||
"LuaSnip": { "branch": "master", "commit": "f3b3d3446bcbfa62d638b1903ff00a78b2b730a1" },
|
||||
"SchemaStore.nvim": { "branch": "main", "commit": "0358c7e159e5502361bf3971d89bf5133bcc2893" },
|
||||
"bufferline.nvim": { "branch": "main", "commit": "b15c6daf5a64426c69732b31a951f4e438cb6590" },
|
||||
"catppuccin": { "branch": "main", "commit": "c0de3b46811fe1ce3912e2245a9dfbea6b41c300" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
||||
"cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
|
||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
|
||||
"composer.nvim": { "branch": "main", "commit": "ec9537969adc7fc128cfe9c3a9925850455896c8" },
|
||||
"conform.nvim": { "branch": "master", "commit": "192a6d2ddace343f1840a8f72efe2315bd392243" },
|
||||
"copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
|
||||
"copilot.lua": { "branch": "master", "commit": "03f825956ec49e550d07875d867ea6e7c4dc8c00" },
|
||||
"crates.nvim": { "branch": "main", "commit": "ec2b04a380c9f3a8e6ca38c230e4990d71978143" },
|
||||
"dressing.nvim": { "branch": "master", "commit": "6f212262061a2120e42da0d1e87326e8a41c0478" },
|
||||
"everforest-nvim": { "branch": "main", "commit": "eedb19079c6bf9d162f74a5c48a6d2759f38cc76" },
|
||||
"flash.nvim": { "branch": "main", "commit": "48817af25f51c0590653bbc290866e4890fe1cbe" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "2c2463dbd82eddd7dbab881c3a62cfbfbe3c67ae" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "821a7acd88587d966f7e464b0b3031dfe7f5680c" },
|
||||
"laravel.nvim": { "branch": "main", "commit": "5ef5296f9c943e88850591b5e21f17db62e874ee" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "28126922c9b54e35a192ac415788f202c3944c9f" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "7d131a8d3ba5016229e8a1d08bf8782acea98852" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "21d33d69a81f6351e5a5f49078b2e4f0075c8e73" },
|
||||
"mason-nvim-dap.nvim": { "branch": "main", "commit": "3614a39aae98ccd34124b072939d6283853b3dd2" },
|
||||
"mason.nvim": { "branch": "main", "commit": "c43eeb5614a09dc17c03a7fb49de2e05de203924" },
|
||||
"mini.ai": { "branch": "main", "commit": "ee9446a17c160aba6a04ff22097389c41872c878" },
|
||||
"mini.animate": { "branch": "main", "commit": "82519630b2760ffc516ebc387bef632f9c07b9f5" },
|
||||
"mini.bufremove": { "branch": "main", "commit": "931a3bb514147d9e812767275c4beba6b779b1d3" },
|
||||
"mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" },
|
||||
"mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
|
||||
"mini.pairs": { "branch": "main", "commit": "04f58f2545ed80ac3b52dd4826e93f33e15b2af6" },
|
||||
"mini.starter": { "branch": "main", "commit": "ce222a5b6de50a9963c1eb62aa16ec6d5efca7ee" },
|
||||
"mini.surround": { "branch": "main", "commit": "a1b590cc3b676512de507328d6bbab5e43794720" },
|
||||
"namespace.nvim": { "branch": "master", "commit": "bcf511a5a3641d6a3beaefc7048ef5b98616ebdd" },
|
||||
"neo-tree.nvim": { "branch": "v3.x", "commit": "f3941c57ec85d7bdb44fa53fd858fd80f159018f" },
|
||||
"neoconf.nvim": { "branch": "main", "commit": "faab415b0ba57f0a15a82210f346f662e6551e1a" },
|
||||
"neodev.nvim": { "branch": "main", "commit": "3157f2e876fd6223d36cfa76bee4709247d62fa5" },
|
||||
"noice.nvim": { "branch": "main", "commit": "bf67d70bd7265d075191e7812d8eb42b9791f737" },
|
||||
"none-ls.nvim": { "branch": "main", "commit": "4715e3e0480152dbbca1a3b5d09f070508a54691" },
|
||||
"nui.nvim": { "branch": "main", "commit": "c3c7fd618dcb5a89e443a2e1033e7d11fdb0596b" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" },
|
||||
"nvim-colorizer.lua": { "branch": "master", "commit": "85855b38011114929f4058efc97af1059ab3e41d" },
|
||||
"nvim-dap": { "branch": "master", "commit": "fc880e82059eb21c0fa896be60146e5f17680648" },
|
||||
"nvim-dap-ui": { "branch": "master", "commit": "9720eb5fa2f41988e8770f973cd11b76dd568a5d" },
|
||||
"nvim-dap-virtual-text": { "branch": "master", "commit": "d4542ac257d3c7ee4131350db6179ae6340ce40b" },
|
||||
"nvim-lint": { "branch": "master", "commit": "85fe14d080d902dcc566461f0205495d0c153372" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "ec7d51a619049c7c597f469f81ea199db6794651" },
|
||||
"nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
|
||||
"nvim-spectre": { "branch": "master", "commit": "3712ff0cdf4f9f877d9ca708d835a877d9a0abaf" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "6f1f407d712d1c451451db74ff3a6eb72190548d" },
|
||||
"nvim-treesitter-context": { "branch": "master", "commit": "e4a259f05032983c8611ca150ac25f1df62c0871" },
|
||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "7f00d94543f1fd37cab2afa2e9a6cd54e1c6b9ef" },
|
||||
"nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
|
||||
"nvim-ts-context-commentstring": { "branch": "main", "commit": "7ab799a9792f7cf3883cf28c6a00ad431f3d382a" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "0bb67ef952ea3eb7b1bac9c011281471d99a27bc" },
|
||||
"persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "4f71c0c4a196ceb656c824a70792f3df3ce6bb6d" },
|
||||
"rust-tools.nvim": { "branch": "master", "commit": "676187908a1ce35ffcd727c654ed68d851299d3e" },
|
||||
"symbols-outline.nvim": { "branch": "master", "commit": "564ee65dfc9024bdde73a6621820866987cbb256" },
|
||||
"tailwindcss-colorizer-cmp.nvim": { "branch": "main", "commit": "bc25c56083939f274edcfe395c6ff7de23b67c50" },
|
||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "2e1e382df42467029b493c143c2e727028140214" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" },
|
||||
"tokyonight.nvim": { "branch": "main", "commit": "610179f7f12db3d08540b6cc61434db2eaecbcff" },
|
||||
"typescript.nvim": { "branch": "main", "commit": "4de85ef699d7e6010528dcfbddc2ed4c2c421467" },
|
||||
"vim-blade": { "branch": "master", "commit": "9534101808cc320eef003129a40cab04b026a20c" },
|
||||
"vim-dadbod": { "branch": "master", "commit": "936e78f44113eac54948474e222293dd70eaef9e" },
|
||||
"vim-dadbod-completion": { "branch": "master", "commit": "c920cb0ba3dff4b1b0ed373e1c0b3007dec696c2" },
|
||||
"vim-dadbod-ui": { "branch": "master", "commit": "165699c573469e6a95b48d35052f848c340c5911" },
|
||||
"vim-dotenv": { "branch": "master", "commit": "5c51cfcf8d87280d6414e03cd6b253eb70ecb800" },
|
||||
"vim-fugitive": { "branch": "master", "commit": "4bc9d989930e37989b038540cc49e63728d3f220" },
|
||||
"vim-illuminate": { "branch": "master", "commit": "305bf07b919ac526deb5193280379e2f8b599926" },
|
||||
"vim-startuptime": { "branch": "master", "commit": "308b0088a864c4711a96e45b6734cf9294074f65" },
|
||||
"vimtex": { "branch": "master", "commit": "01c4c167338b74dc0c30621841bc548b52e96330" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" }
|
||||
}
|
||||
9
lazyvim.json
Normal file
9
lazyvim.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"extras": [
|
||||
"lazyvim.plugins.extras.lang.rust"
|
||||
],
|
||||
"news": {
|
||||
"NEWS.md": "2123"
|
||||
},
|
||||
"version": 2
|
||||
}
|
||||
33
lua/config/autocmds.lua
Normal file
33
lua/config/autocmds.lua
Normal file
@@ -0,0 +1,33 @@
|
||||
-- Autocmds are automatically loaded on the VeryLazy event
|
||||
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
||||
-- Add any additional autocmds here
|
||||
|
||||
-- Define an autocmd group for the blade workaround
|
||||
local augroup = vim.api.nvim_create_augroup("lsp_blade_workaround", { clear = true })
|
||||
|
||||
-- Autocommand to temporarily change 'blade' filetype to 'php' when opening for LSP server activation
|
||||
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
|
||||
group = augroup,
|
||||
pattern = "*.blade.php",
|
||||
callback = function()
|
||||
vim.bo.filetype = "php"
|
||||
end,
|
||||
})
|
||||
|
||||
-- Additional autocommand to switch back to 'blade' after LSP has attached
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
pattern = "*.blade.php",
|
||||
callback = function(args)
|
||||
vim.schedule(function()
|
||||
-- Check if the attached client is 'intelephense'
|
||||
for _, client in ipairs(vim.lsp.get_active_clients()) do
|
||||
if client.name == "intelephense" and client.attached_buffers[args.buf] then
|
||||
vim.api.nvim_buf_set_option(args.buf, "filetype", "blade")
|
||||
-- update treesitter parser to blade
|
||||
vim.api.nvim_buf_set_option(args.buf, "syntax", "blade")
|
||||
break
|
||||
end
|
||||
end
|
||||
end)
|
||||
end,
|
||||
})
|
||||
51
lua/config/keymaps.lua
Normal file
51
lua/config/keymaps.lua
Normal file
@@ -0,0 +1,51 @@
|
||||
-- Keymaps are automatically loaded on the VeryLazy event
|
||||
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
||||
-- Add any additional keymaps here
|
||||
|
||||
local Util = require("lazyvim.util")
|
||||
local function map(mode, lhs, rhs, opts)
|
||||
local keys = require("lazy.core.handler").handlers.keys
|
||||
---@cast keys LazyKeysHandler
|
||||
-- do not create the keymap if a lazy keys handler exists
|
||||
if not keys.active[keys.parse({ lhs, mode = mode }).id] then
|
||||
opts = opts or {}
|
||||
opts.silent = opts.silent ~= false
|
||||
vim.keymap.set(mode, lhs, rhs, opts)
|
||||
end
|
||||
end
|
||||
|
||||
map("n", "<leader>gd", function()
|
||||
Util.float_term(
|
||||
{ "lazydocker", "-f", Util.get_root() .. "docker-compose.yml" },
|
||||
{ cwd = Util.get_root(), esc_esc = false }
|
||||
)
|
||||
end, { desc = "LazyDocker (root dir)" })
|
||||
|
||||
local bind = vim.keymap.set
|
||||
local opts = { silent = true, noremap = true }
|
||||
|
||||
-- for russian layout
|
||||
bind("i", "<c-х>", "<C-[>", opts)
|
||||
bind("n", "л", "gk", opts)
|
||||
bind("n", "о", "gj", opts)
|
||||
bind("i", "<C-г>", "<C-G>u<C-U>", opts)
|
||||
bind("i", "<C-ц>", "<C-G>u<C-W>", opts)
|
||||
|
||||
bind("n", "[c", function()
|
||||
require("treesitter-context").go_to_context()
|
||||
end)
|
||||
|
||||
--personal
|
||||
--normal mode
|
||||
bind("i", "jk", "<Esc>")
|
||||
--save
|
||||
bind("n", "zz", "<Cmd>:update<CR>")
|
||||
|
||||
bind("n", ",<space>", "<Cmd>:nohlsearch<CR>")
|
||||
|
||||
-- namespace php
|
||||
vim.keymap.set("n", "<leader>u", "<cmd>GetClass<cr>")
|
||||
vim.keymap.set("n", "<leader>un", "<cmd>Namespace<cr>")
|
||||
|
||||
vim.keymap.set("n", "<leader>[", "<Cmd>call append(line('.') - 1, repeat([''], v:count1))<CR>")
|
||||
vim.keymap.set("n", "<leader>]", "<Cmd>call append(line('.'), repeat([''], v:count1))<CR>")
|
||||
55
lua/config/lazy.lua
Normal file
55
lua/config/lazy.lua
Normal file
@@ -0,0 +1,55 @@
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
-- bootstrap lazy.nvim
|
||||
-- stylua: ignore
|
||||
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable",
|
||||
lazypath })
|
||||
end
|
||||
vim.opt.rtp:prepend(vim.env.LAZY or lazypath)
|
||||
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
-- add LazyVim and import its plugins
|
||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||
-- import any extras modules here
|
||||
{ import = "lazyvim.plugins.extras.lang.typescript" },
|
||||
{ import = "lazyvim.plugins.extras.lang.json" },
|
||||
{ import = "lazyvim.plugins.extras.lang.yaml" },
|
||||
{ import = "lazyvim.plugins.extras.lang.docker" },
|
||||
{ import = "lazyvim.plugins.extras.lang.tex" },
|
||||
-- { import = "lazyvim.plugins.extras.lang.python" },
|
||||
{ import = "lazyvim.plugins.extras.coding.copilot" },
|
||||
{ import = "lazyvim.plugins.extras.dap.core" },
|
||||
{ import = "lazyvim.plugins.extras.lsp.none-ls" },
|
||||
-- { import = "lazyvim.plugins.extras.lang.go" },
|
||||
{ import = "lazyvim.plugins.extras.ui.mini-animate" },
|
||||
-- import/override with your plugins
|
||||
{ import = "plugins" },
|
||||
},
|
||||
defaults = {
|
||||
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
||||
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
||||
lazy = false,
|
||||
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
|
||||
-- have outdated releases, which may break your Neovim install.
|
||||
version = false, -- always use the latest git commit
|
||||
-- version = "*", -- try installing the latest stable version for plugins that support semver
|
||||
},
|
||||
install = { colorscheme = { "everforest" } },
|
||||
checker = { enabled = true, notify = false }, -- automatically check for plugin updates
|
||||
performance = {
|
||||
rtp = {
|
||||
-- disable some rtp plugins
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
-- "matchit",
|
||||
-- "matchparen",
|
||||
-- "netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
7
lua/config/options.lua
Normal file
7
lua/config/options.lua
Normal file
@@ -0,0 +1,7 @@
|
||||
-- Options are automatically loaded before lazy.nvim startup
|
||||
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
|
||||
-- Add any additional options here
|
||||
vim.o.relativenumber = false
|
||||
|
||||
-- vim.api.nvim_set_keymap("n", "<Tab>", ":bnext<CR>", { noremap = true })
|
||||
-- vim.api.nvim_set_keymap("n", "<S-Tab>", ":bprev<CR>", { noremap = true })
|
||||
55
lua/plugins/conform.lua
Normal file
55
lua/plugins/conform.lua
Normal file
@@ -0,0 +1,55 @@
|
||||
local util = require("conform.util")
|
||||
return {
|
||||
"stevearc/conform.nvim",
|
||||
opts = function()
|
||||
---@class ConformOpts
|
||||
local opts = {
|
||||
-- LazyVim will use these options when formatting with the conform.nvim formatter
|
||||
format = {
|
||||
timeout_ms = 3000,
|
||||
async = false, -- not recommended to change
|
||||
quiet = false, -- not recommended to change
|
||||
},
|
||||
---@type table<string, conform.FormatterUnit[]>
|
||||
formatters_by_ft = {
|
||||
lua = { "stylua" },
|
||||
fish = { "fish_indent" },
|
||||
sh = { "shfmt" },
|
||||
php = { "pint" },
|
||||
blade = { "blade-formatter", "rustywind" },
|
||||
-- python = { "black" },
|
||||
javascript = { "prettierd" },
|
||||
},
|
||||
-- LazyVim will merge the options you set here with builtin formatters.
|
||||
-- You can also define any custom formatters here.
|
||||
---@type table<string, conform.FormatterConfigOverride|fun(bufnr: integer): nil|conform.FormatterConfigOverride>
|
||||
formatters = {
|
||||
injected = { options = { ignore_errors = true } },
|
||||
-- # Example of using dprint only when a dprint.json file is present
|
||||
-- dprint = {
|
||||
-- condition = function(ctx)
|
||||
-- return vim.fs.find({ "dprint.json" }, { path = ctx.filename, upward = true })[1]
|
||||
-- end,
|
||||
-- },
|
||||
--
|
||||
-- # Example of using shfmt with extra args
|
||||
-- shfmt = {
|
||||
-- extra_args = { "-i", "2", "-ci" },
|
||||
-- },
|
||||
pint = {
|
||||
meta = {
|
||||
url = "https://github.com/laravel/pint",
|
||||
description = "Laravel Pint is an opinionated PHP code style fixer for minimalists. Pint is built on top of PHP-CS-Fixer and makes it simple to ensure that your code style stays clean and consistent.",
|
||||
},
|
||||
command = util.find_executable({
|
||||
vim.fn.stdpath("data") .. "/mason/bin/pint",
|
||||
"vendor/bin/pint",
|
||||
}, "pint"),
|
||||
args = { "$FILENAME" },
|
||||
stdin = false,
|
||||
},
|
||||
},
|
||||
}
|
||||
return opts
|
||||
end,
|
||||
}
|
||||
26
lua/plugins/database.lua
Normal file
26
lua/plugins/database.lua
Normal file
@@ -0,0 +1,26 @@
|
||||
return {
|
||||
"kristijanhusak/vim-dadbod-ui",
|
||||
dependencies = {
|
||||
"tpope/vim-dadbod",
|
||||
"kristijanhusak/vim-dadbod-completion",
|
||||
"tpope/vim-dotenv",
|
||||
},
|
||||
keys = { { "<leader><leader>db", ":tab DBUI<cr>", desc = "Open Database client" } },
|
||||
init = function()
|
||||
vim.g.db_ui_use_nerd_fonts = 1
|
||||
vim.g.db_ui_show_database_icon = 1
|
||||
vim.g.db_ui_force_echo_notifications = 1
|
||||
vim.g.db_ui_win_position = "left"
|
||||
vim.g.db_ui_winwidth = 100
|
||||
|
||||
vim.g.db_ui_table_helpers = {
|
||||
mysql = {
|
||||
Count = "select count(1) from {optional_schema}{table}",
|
||||
Explain = "EXPLAIN {last_query}",
|
||||
},
|
||||
sqlite = {
|
||||
Describe = "PRAGMA table_info({table})",
|
||||
},
|
||||
}
|
||||
end,
|
||||
}
|
||||
28
lua/plugins/emmet_ls.lua
Normal file
28
lua/plugins/emmet_ls.lua
Normal file
@@ -0,0 +1,28 @@
|
||||
return {
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = {
|
||||
-- @type lspconfig.options
|
||||
servers = {
|
||||
emmet_ls = {
|
||||
filetypes = {
|
||||
"astro",
|
||||
"blade",
|
||||
"css",
|
||||
"eruby",
|
||||
"html",
|
||||
"htmldjango",
|
||||
"javascriptreact",
|
||||
"less",
|
||||
"pug",
|
||||
"sass",
|
||||
"scss",
|
||||
"svelte",
|
||||
"typescriptreact",
|
||||
"vue",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
267
lua/plugins/example.lua
Normal file
267
lua/plugins/example.lua
Normal file
@@ -0,0 +1,267 @@
|
||||
-- since this is just an example spec, don't actually load anything here and return an empty spec
|
||||
-- stylua: ignore
|
||||
-- if true then return {} end
|
||||
|
||||
-- every spec file under config.plugins will be loaded automatically by lazy.nvim
|
||||
--
|
||||
-- In your plugin files, you can:
|
||||
-- * add extra plugins
|
||||
-- * disable/enabled LazyVim plugins
|
||||
-- * override the configuration of LazyVim plugins
|
||||
return {
|
||||
-- add gruvbox
|
||||
-- { "ellisonleao/gruvbox.nvim" },
|
||||
|
||||
-- Configure LazyVim to load everforest
|
||||
{
|
||||
"LazyVim/LazyVim",
|
||||
opts = {
|
||||
colorscheme = "everforest",
|
||||
},
|
||||
},
|
||||
|
||||
-- change trouble config
|
||||
{
|
||||
"folke/trouble.nvim",
|
||||
-- opts will be merged with the parent spec
|
||||
opts = { use_diagnostic_signs = true },
|
||||
},
|
||||
|
||||
-- disable trouble
|
||||
{ "folke/trouble.nvim", enabled = false },
|
||||
|
||||
-- add symbols-outline
|
||||
-- {
|
||||
-- "simrat39/symbols-outline.nvim",
|
||||
-- cmd = "SymbolsOutline",
|
||||
-- keys = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", desc = "Symbols Outline" } },
|
||||
-- config = true,
|
||||
-- },
|
||||
|
||||
-- override nvim-cmp and add cmp-emoji
|
||||
-- {
|
||||
-- "hrsh7th/nvim-cmp",
|
||||
-- dependencies = { "hrsh7th/cmp-emoji" },
|
||||
-- ---@param opts cmp.ConfigSchema
|
||||
-- opts = function(_, opts)
|
||||
-- local cmp = require("cmp")
|
||||
-- opts.sources = cmp.config.sources(vim.list_extend(opts.sources, { { name = "emoji" } }))
|
||||
-- end,
|
||||
-- },
|
||||
|
||||
-- change some telescope options and a keymap to browse plugin files
|
||||
-- {
|
||||
-- "nvim-telescope/telescope.nvim",
|
||||
-- keys = {
|
||||
-- -- add a keymap to browse plugin files
|
||||
-- -- stylua: ignore
|
||||
-- {
|
||||
-- "<leader>fp",
|
||||
-- function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
|
||||
-- desc = "Find Plugin File",
|
||||
-- },
|
||||
-- },
|
||||
-- change some options
|
||||
-- opts = {
|
||||
-- defaults = {
|
||||
-- layout_strategy = "horizontal",
|
||||
-- layout_config = { prompt_position = "top" },
|
||||
-- sorting_strategy = "ascending",
|
||||
-- winblend = 0,
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
|
||||
-- add telescope-fzf-native
|
||||
-- {
|
||||
-- "telescope.nvim",
|
||||
-- dependencies = {
|
||||
-- "nvim-telescope/telescope-fzf-native.nvim",
|
||||
-- build = "make",
|
||||
-- config = function()
|
||||
-- require("telescope").load_extension("fzf")
|
||||
-- end,
|
||||
-- },
|
||||
-- },
|
||||
|
||||
-- add pyright to lspconfig
|
||||
-- {
|
||||
-- "neovim/nvim-lspconfig",
|
||||
-- ---@class PluginLspOpts
|
||||
-- opts = {
|
||||
-- ---@type lspconfig.options
|
||||
-- servers = {
|
||||
-- -- pyright will be automatically installed with mason and loaded with lspconfig
|
||||
-- pyright = {},
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
|
||||
-- add tsserver and setup with typescript.nvim instead of lspconfig
|
||||
-- {
|
||||
-- "neovim/nvim-lspconfig",
|
||||
-- dependencies = {
|
||||
-- "jose-elias-alvarez/typescript.nvim",
|
||||
-- init = function()
|
||||
-- require("lazyvim.util").on_attach(function(_, buffer)
|
||||
-- -- stylua: ignore
|
||||
-- vim.keymap.set( "n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
|
||||
-- vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
|
||||
-- end)
|
||||
-- end,
|
||||
-- },
|
||||
-- ---@class PluginLspOpts
|
||||
-- opts = {
|
||||
-- ---@type lspconfig.options
|
||||
-- servers = {
|
||||
-- -- tsserver will be automatically installed with mason and loaded with lspconfig
|
||||
-- tsserver = {},
|
||||
-- },
|
||||
-- -- you can do any additional lsp server setup here
|
||||
-- -- return true if you don't want this server to be setup with lspconfig
|
||||
-- ---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?>
|
||||
-- setup = {
|
||||
-- -- example to setup with typescript.nvim
|
||||
-- tsserver = function(_, opts)
|
||||
-- require("typescript").setup({ server = opts })
|
||||
-- return true
|
||||
-- end,
|
||||
-- -- Specify * to use this function as a fallback for any server
|
||||
-- -- ["*"] = function(server, opts) end,
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
|
||||
-- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
|
||||
-- treesitter, mason and typescript.nvim. So instead of the above, you can use:
|
||||
-- { import = "lazyvim.plugins.extras.lang.typescript" },
|
||||
|
||||
-- add more treesitter parsers
|
||||
-- {
|
||||
-- "nvim-treesitter/nvim-treesitter",
|
||||
-- opts = {
|
||||
-- ensure_installed = {
|
||||
-- "bash",
|
||||
-- "help",
|
||||
-- "html",
|
||||
-- "javascript",
|
||||
-- "json",
|
||||
-- "lua",
|
||||
-- "markdown",
|
||||
-- "markdown_inline",
|
||||
-- "python",
|
||||
-- "query",
|
||||
-- "regex",
|
||||
-- "tsx",
|
||||
-- "typescript",
|
||||
-- "vim",
|
||||
-- "yaml",
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
|
||||
-- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
|
||||
-- would overwrite `ensure_installed` with the new value.
|
||||
-- If you'd rather extend the default config, use the code below instead:
|
||||
-- {
|
||||
-- "nvim-treesitter/nvim-treesitter",
|
||||
-- opts = function(_, opts)
|
||||
-- -- add tsx and treesitter
|
||||
-- vim.list_extend(opts.ensure_installed, {
|
||||
-- "tsx",
|
||||
-- "typescript",
|
||||
-- })
|
||||
-- end,
|
||||
-- },
|
||||
|
||||
-- the opts function can also be used to change the default opts:
|
||||
-- {
|
||||
-- "nvim-lualine/lualine.nvim",
|
||||
-- event = "VeryLazy",
|
||||
-- opts = function(_, opts)
|
||||
-- table.insert(opts.sections.lualine_x, "😄")
|
||||
-- end,
|
||||
-- },
|
||||
|
||||
-- or you can return new options to override all the defaults
|
||||
-- {
|
||||
-- "nvim-lualine/lualine.nvim",
|
||||
-- event = "VeryLazy",
|
||||
-- opts = function()
|
||||
-- return {
|
||||
-- --[[add your custom lualine config here]]
|
||||
-- }
|
||||
-- end,
|
||||
-- },
|
||||
|
||||
-- use mini.starter instead of alpha
|
||||
-- { import = "lazyvim.plugins.extras.ui.mini-starter" },
|
||||
|
||||
-- add jsonls and schemastore ans setup treesitter for json, json5 and jsonc
|
||||
-- { import = "lazyvim.plugins.extras.lang.json" },
|
||||
|
||||
-- add any tools you want to have installed below
|
||||
-- {
|
||||
-- "williamboman/mason.nvim",
|
||||
-- opts = {
|
||||
-- ensure_installed = {
|
||||
-- "stylua",
|
||||
-- "shellcheck",
|
||||
-- "shfmt",
|
||||
-- "flake8",
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
|
||||
-- Use <tab> for completion and snippets (supertab)
|
||||
-- first: disable default <tab> and <s-tab> behavior in LuaSnip
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
keys = function()
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
-- then: setup supertab in cmp
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
dependencies = {
|
||||
"hrsh7th/cmp-emoji",
|
||||
},
|
||||
---@param opts cmp.ConfigSchema
|
||||
opts = function(_, opts)
|
||||
local has_words_before = function()
|
||||
unpack = unpack or table.unpack
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
|
||||
local luasnip = require("luasnip")
|
||||
local cmp = require("cmp")
|
||||
|
||||
opts.mapping = vim.tbl_extend("force", opts.mapping, {
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
-- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable()
|
||||
-- they way you will only jump inside the snippet region
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
5
lua/plugins/extra_languages.lua
Normal file
5
lua/plugins/extra_languages.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
return {
|
||||
{
|
||||
"jwalton512/vim-blade",
|
||||
},
|
||||
}
|
||||
10
lua/plugins/git.lua
Normal file
10
lua/plugins/git.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
return {
|
||||
"tpope/vim-fugitive",
|
||||
keys = {
|
||||
{ "<leader>ga", ":Git fetch --all -p<cr>", desc = "Git fetch" },
|
||||
{ "<leader>gl", ":Git pull<cr>", desc = "Git pull" },
|
||||
{ "<leader>gdh", ":diffget //2<cr>", desc = "Git diff grab from left" },
|
||||
{ "<leader>gdl", ":diffget //3<cr>", desc = "Git diff grab from right" },
|
||||
},
|
||||
cmd = { "G", "Git" },
|
||||
}
|
||||
28
lua/plugins/intelephense.lua
Normal file
28
lua/plugins/intelephense.lua
Normal file
@@ -0,0 +1,28 @@
|
||||
return {
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = {
|
||||
-- @type lspconfig.options
|
||||
servers = {
|
||||
intelephense = {
|
||||
filetypes = { "php", "blade" },
|
||||
settings = {
|
||||
intelephense = {
|
||||
filetypes = { "php", "blade" },
|
||||
files = {
|
||||
associations = { "*.php", "*.blade.php" }, -- Associating .blade.php files as well
|
||||
maxSize = 5000000,
|
||||
},
|
||||
},
|
||||
},
|
||||
cmd = {
|
||||
"node",
|
||||
"--max-old-space-size=4096",
|
||||
"/home/alex/.local/share/nvim/mason/bin/intelephense",
|
||||
"--stdio",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
45
lua/plugins/laravel.lua
Normal file
45
lua/plugins/laravel.lua
Normal file
@@ -0,0 +1,45 @@
|
||||
return {
|
||||
"adalessa/laravel.nvim",
|
||||
dependencies = {
|
||||
"rcarriga/nvim-notify",
|
||||
"nvim-telescope/telescope.nvim",
|
||||
"MunifTanjim/nui.nvim",
|
||||
},
|
||||
cmd = { "Sail", "Artisan", "Composer", "Npm", "Laravel", "LaravelInfo", "DockerCompose" },
|
||||
keys = {
|
||||
{ "<leader>la", ":Laravel artisan<cr>", desc = "Laravel Application Commands" },
|
||||
{ "<leader>lr", ":Laravel routes<cr>", desc = "Laravel Application Routes" },
|
||||
{
|
||||
"<leader>lt",
|
||||
function()
|
||||
require("laravel.tinker").send_to_tinker()
|
||||
end,
|
||||
mode = "v",
|
||||
desc = "Laravel Application Routes",
|
||||
},
|
||||
},
|
||||
init = function()
|
||||
vim.g.laravel_log_level = "debug"
|
||||
end,
|
||||
config = function()
|
||||
local uid = vim.system({ "id", "-u" }, { text = true }):wait().stdout or "1000"
|
||||
local gid = vim.system({ "id", "-g" }, { text = true }):wait().stdout or "1000"
|
||||
|
||||
local user_arg = string.format("%s:%s", vim.trim(uid), vim.trim(gid))
|
||||
|
||||
require("laravel").setup({
|
||||
route_info = {
|
||||
position = "top",
|
||||
},
|
||||
environment = {
|
||||
environments = {
|
||||
["ao"] = require("laravel.environment.docker_compose").setup({
|
||||
container_name = "panel-webserver",
|
||||
cmd = { "docker", "compose", "exec", "-u", user_arg, "-it", "panel-webserver" },
|
||||
}),
|
||||
},
|
||||
},
|
||||
})
|
||||
require("telescope").load_extension("laravel")
|
||||
end,
|
||||
}
|
||||
47
lua/plugins/mason-nvim-dap.lua
Normal file
47
lua/plugins/mason-nvim-dap.lua
Normal file
@@ -0,0 +1,47 @@
|
||||
return {
|
||||
"jay-babu/mason-nvim-dap.nvim",
|
||||
dependencies = "mason.nvim",
|
||||
cmd = { "DapInstall", "DapUninstall" },
|
||||
opts = {
|
||||
-- Makes a best effort to setup the various debuggers with
|
||||
-- reasonable debug configurations
|
||||
automatic_setup = true,
|
||||
-- You can provide additional configuration to the handlers,
|
||||
-- see mason-nvim-dap README for more information
|
||||
handlers = {
|
||||
function(config)
|
||||
-- all sources with no handler get passed here
|
||||
|
||||
-- Keep original functionality
|
||||
require("mason-nvim-dap").default_setup(config)
|
||||
end,
|
||||
php = function(config)
|
||||
config.configurations = {
|
||||
{
|
||||
type = "php",
|
||||
request = "launch",
|
||||
name = "Listen for Xdebug",
|
||||
port = 9003,
|
||||
pathMappings = {
|
||||
-- For some reason xdebug sometimes fails for me, depending on me
|
||||
-- using herd or docker. To get it to work, change the order of the mappings.
|
||||
-- The first mapping should be the one that you are actively using.
|
||||
-- This only started recently, so I don't know what changed.
|
||||
["${workspaceFolder}"] = "${workspaceFolder}",
|
||||
["/var/www/html"] = "${workspaceFolder}",
|
||||
},
|
||||
},
|
||||
}
|
||||
require("mason-nvim-dap").default_setup(config) -- don't forget this!
|
||||
end,
|
||||
},
|
||||
-- You'll need to check that you have the required things installed
|
||||
-- online, please don't ask me how to install them :)
|
||||
ensure_installed = {
|
||||
-- Update this to ensure that you have the debuggers for the langs you want
|
||||
"php",
|
||||
"bash",
|
||||
-- "python",
|
||||
},
|
||||
},
|
||||
}
|
||||
34
lua/plugins/mason.lua
Normal file
34
lua/plugins/mason.lua
Normal file
@@ -0,0 +1,34 @@
|
||||
return {
|
||||
"williamboman/mason.nvim",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"actionlint",
|
||||
"ansible-language-server",
|
||||
"ansible-lint",
|
||||
"antlers-language-server",
|
||||
"black",
|
||||
"bash-language-server",
|
||||
"blade-formatter",
|
||||
"docker-compose-language-service",
|
||||
"dockerfile-language-server",
|
||||
"dot-language-server",
|
||||
"emmet-ls",
|
||||
"eslint_d",
|
||||
"flake8",
|
||||
"hadolint",
|
||||
"html-lsp",
|
||||
"intelephense",
|
||||
"nginx-language-server",
|
||||
"php-debug-adapter",
|
||||
"phpstan",
|
||||
"pint",
|
||||
"prettierd",
|
||||
"pyright",
|
||||
"rustywind",
|
||||
"shellcheck",
|
||||
"shfmt",
|
||||
"stylua",
|
||||
"tailwindcss-language-server",
|
||||
},
|
||||
},
|
||||
}
|
||||
24
lua/plugins/null-ls.lua
Normal file
24
lua/plugins/null-ls.lua
Normal file
@@ -0,0 +1,24 @@
|
||||
return {
|
||||
{
|
||||
"nvimtools/none-ls.nvim",
|
||||
opts = function()
|
||||
local nls = require("null-ls")
|
||||
return {
|
||||
sources = {
|
||||
nls.builtins.diagnostics.phpstan.with({
|
||||
extra_args = {
|
||||
"--memory-limit=2G",
|
||||
},
|
||||
}),
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
{
|
||||
-- add longer timeout, since formatting blade files gets a little slow
|
||||
-- "neovim/nvim-lspconfig",
|
||||
-- opts = {
|
||||
-- format = { timeout_ms = 2000 },
|
||||
-- },
|
||||
},
|
||||
}
|
||||
10
lua/plugins/nvim-cmp.lua
Normal file
10
lua/plugins/nvim-cmp.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
return {
|
||||
"nvim-cmp",
|
||||
opts = function(_, opts)
|
||||
table.insert(opts.sources, 1, {
|
||||
name = "copilot",
|
||||
group_index = 2,
|
||||
priority = 100,
|
||||
})
|
||||
end,
|
||||
}
|
||||
30
lua/plugins/nvim-lint.lua
Normal file
30
lua/plugins/nvim-lint.lua
Normal file
@@ -0,0 +1,30 @@
|
||||
return {
|
||||
"mfussenegger/nvim-lint",
|
||||
event = "LazyFile",
|
||||
opts = {
|
||||
-- Event to trigger linters
|
||||
events = { "BufWritePost", "BufReadPost", "InsertLeave" },
|
||||
linters_by_ft = {
|
||||
fish = { "fish" },
|
||||
dockerfile = { "hadolint" },
|
||||
-- python = { "pylint" },
|
||||
-- Use the "*" filetype to run linters on all filetypes.
|
||||
-- ['*'] = { 'global linter' },
|
||||
-- Use the "_" filetype to run linters on filetypes that don't have other linters configured.
|
||||
-- ['_'] = { 'fallback linter' },
|
||||
},
|
||||
-- LazyVim extension to easily override linter options
|
||||
-- or add custom linters.
|
||||
---@type table<string,table>
|
||||
linters = {
|
||||
-- -- Example of using selene only when a selene.toml file is present
|
||||
-- selene = {
|
||||
-- -- `condition` is another LazyVim extension that allows you to
|
||||
-- -- dynamically enable/disable linters based on the context.
|
||||
-- condition = function(ctx)
|
||||
-- return vim.fs.find({ "selene.toml" }, { path = ctx.filename, upward = true })[1]
|
||||
-- end,
|
||||
-- },
|
||||
},
|
||||
},
|
||||
}
|
||||
97
lua/plugins/php.lua
Normal file
97
lua/plugins/php.lua
Normal file
@@ -0,0 +1,97 @@
|
||||
return { -- lazy
|
||||
{
|
||||
"ccaglak/namespace.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
},
|
||||
{
|
||||
"adalessa/composer.nvim",
|
||||
lazy = true,
|
||||
},
|
||||
},
|
||||
-- {
|
||||
-- "ludovicchabant/vim-gutentags",
|
||||
-- config = function()
|
||||
-- vim.g.gutentags_ctags_exclude = {
|
||||
-- "*.git",
|
||||
-- "*.svg",
|
||||
-- "*.hg",
|
||||
-- "*/tests/*",
|
||||
-- "build",
|
||||
-- "dist",
|
||||
-- "*sites/*/files/*",
|
||||
-- "bin",
|
||||
-- "node_modules",
|
||||
-- "bower_components",
|
||||
-- "cache",
|
||||
-- "compiled",
|
||||
-- "docs",
|
||||
-- "example",
|
||||
-- "bundle",
|
||||
-- "vendor",
|
||||
-- "*.md",
|
||||
-- "*-lock.json",
|
||||
-- "*.lock",
|
||||
-- "*bundle*.js",
|
||||
-- "*build*.js",
|
||||
-- ".*rc*",
|
||||
-- "*.json",
|
||||
-- "*.min.*",
|
||||
-- "*.map",
|
||||
-- "*.bak",
|
||||
-- "*.zip",
|
||||
-- "*.pyc",
|
||||
-- "*.class",
|
||||
-- "*.sln",
|
||||
-- "*.Master",
|
||||
-- "*.csproj",
|
||||
-- "*.tmp",
|
||||
-- "*.csproj.user",
|
||||
-- "*.cache",
|
||||
-- "*.pdb",
|
||||
-- "tags*",
|
||||
-- "cscope.*",
|
||||
-- -- '*.css',
|
||||
-- -- '*.less',
|
||||
-- -- '*.scss',
|
||||
-- "*.exe",
|
||||
-- "*.dll",
|
||||
-- "*.mp3",
|
||||
-- "*.ogg",
|
||||
-- "*.flac",
|
||||
-- "*.swp",
|
||||
-- "*.swo",
|
||||
-- "*.bmp",
|
||||
-- "*.gif",
|
||||
-- "*.ico",
|
||||
-- "*.jpg",
|
||||
-- "*.png",
|
||||
-- "*.rar",
|
||||
-- "*.zip",
|
||||
-- "*.tar",
|
||||
-- "*.tar.gz",
|
||||
-- "*.tar.xz",
|
||||
-- "*.tar.bz2",
|
||||
-- "*.pdf",
|
||||
-- "*.doc",
|
||||
-- "*.docx",
|
||||
-- "*.ppt",
|
||||
-- "*.pptx",
|
||||
-- }
|
||||
--
|
||||
-- vim.g.gutentags_add_default_project_roots = false
|
||||
-- vim.g.gutentags_project_root = { "package.json", ".git" }
|
||||
-- vim.g.gutentags_cache_dir = vim.fn.stdpath("data") .. "/ctags"
|
||||
-- vim.g.gutentags_generate_on_new = true
|
||||
-- vim.g.gutentags_generate_on_missing = true
|
||||
-- vim.g.gutentags_generate_on_write = true
|
||||
-- vim.g.gutentags_generate_on_empty_buffer = true
|
||||
-- vim.g.gutentags_modules = true
|
||||
-- vim.cmd([[command! -nargs=0 GutentagsClearCache call system('rm ' . g:gutentags_cache_dir . '/*')]])
|
||||
-- vim.g.gutentags_ctags_extra_args = { "--tag-relative=yes", "--fields=+ailmnS" }
|
||||
--
|
||||
-- -- custom
|
||||
-- vim.g.gutentags_modules = { "ctags" }
|
||||
-- end,
|
||||
-- },
|
||||
}
|
||||
43
lua/plugins/tailwind.lua
Normal file
43
lua/plugins/tailwind.lua
Normal file
@@ -0,0 +1,43 @@
|
||||
return {
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = {
|
||||
servers = {
|
||||
tailwindcss = {
|
||||
settings = {
|
||||
tailwindCSS = {
|
||||
experimental = {
|
||||
classRegex = {
|
||||
"@?class\\(([^]*)\\)",
|
||||
"'([^']*)'",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"NvChad/nvim-colorizer.lua",
|
||||
opts = {
|
||||
user_default_options = {
|
||||
tailwind = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
dependencies = {
|
||||
{ "roobert/tailwindcss-colorizer-cmp.nvim", config = true },
|
||||
},
|
||||
opts = function(_, opts)
|
||||
-- original LazyVim kind icon formatter
|
||||
local format_kinds = opts.formatting.format
|
||||
opts.formatting.format = function(entry, item)
|
||||
format_kinds(entry, item) -- add icons
|
||||
return require("tailwindcss-colorizer-cmp").formatter(entry, item)
|
||||
end
|
||||
end,
|
||||
},
|
||||
}
|
||||
24
lua/plugins/theme.lua
Normal file
24
lua/plugins/theme.lua
Normal file
@@ -0,0 +1,24 @@
|
||||
return {
|
||||
-- -- Configure LazyVim to load gruvbox
|
||||
-- {
|
||||
-- "LazyVim/LazyVim",
|
||||
-- opts = {
|
||||
-- colorscheme = "catppuccin-mocha",
|
||||
-- },
|
||||
-- },
|
||||
"neanias/everforest-nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
config = function()
|
||||
require("everforest").setup({
|
||||
background = "hard",
|
||||
transparent_background_level = 0,
|
||||
italics = true,
|
||||
disable_italic_comments = false,
|
||||
ui_contrast = "low",
|
||||
})
|
||||
vim.cmd("let g:everforest_better_performance = 1")
|
||||
vim.cmd("let g:airline_theme = 'everforest'")
|
||||
vim.cmd("colorscheme everforest")
|
||||
end,
|
||||
}
|
||||
50
lua/plugins/treesitter.lua
Normal file
50
lua/plugins/treesitter.lua
Normal file
@@ -0,0 +1,50 @@
|
||||
-- add more treesitter parsers
|
||||
return {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = function()
|
||||
require("nvim-treesitter.install").update({ with_sync = true })
|
||||
end,
|
||||
dependencies = {
|
||||
{
|
||||
"JoosepAlviste/nvim-ts-context-commentstring",
|
||||
opts = {
|
||||
custom_calculation = function(_, language_tree)
|
||||
if vim.bo.filetype == "blade" and language_tree._lang ~= "javascript" and language_tree._lang ~= "php" then
|
||||
return "{{-- %s --}}"
|
||||
end
|
||||
end,
|
||||
},
|
||||
},
|
||||
"nvim-treesitter/nvim-treesitter-textobjects",
|
||||
},
|
||||
opts = {
|
||||
ensure_installed = "all",
|
||||
-- auto_install = true,
|
||||
highlight = {
|
||||
enable = true,
|
||||
},
|
||||
-- Needed because treesitter highlight turns off autoindent for php files
|
||||
indent = {
|
||||
enable = true,
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
---@class ParserInfo[]
|
||||
local parser_config = require("nvim-treesitter.parsers").get_parser_configs()
|
||||
parser_config.blade = {
|
||||
install_info = {
|
||||
url = "https://github.com/EmranMR/tree-sitter-blade",
|
||||
files = {
|
||||
"src/parser.c",
|
||||
-- "src/scanner.cc",
|
||||
},
|
||||
branch = "main",
|
||||
-- generate_requires_npm = true,
|
||||
-- requires_generate_from_grammar = true,
|
||||
},
|
||||
filetype = "blade",
|
||||
}
|
||||
|
||||
require("nvim-treesitter.configs").setup(opts)
|
||||
end,
|
||||
}
|
||||
8
queries/blade/folds.scm
Normal file
8
queries/blade/folds.scm
Normal file
@@ -0,0 +1,8 @@
|
||||
((directive_start) @start
|
||||
(directive_end) @end.after
|
||||
(#set! role block))
|
||||
|
||||
|
||||
((bracket_start) @start
|
||||
(bracket_end) @end
|
||||
(#set! role block))
|
||||
4
queries/blade/highlights.scm
Normal file
4
queries/blade/highlights.scm
Normal file
@@ -0,0 +1,4 @@
|
||||
(directive) @tag
|
||||
(directive_start) @tag
|
||||
(directive_end) @tag
|
||||
(comment) @comment @spell
|
||||
15
queries/blade/injections.scm
Normal file
15
queries/blade/injections.scm
Normal file
@@ -0,0 +1,15 @@
|
||||
((text) @injection.content
|
||||
(#not-has-ancestor? @injection.content "envoy")
|
||||
(#set! injection.combined)
|
||||
(#set! injection.language php))
|
||||
|
||||
((text) @injection.content
|
||||
(#has-ancestor? @injection.content "envoy")
|
||||
(#set! injection.combined)
|
||||
(#set! injection.language bash))
|
||||
|
||||
((php_only) @injection.content
|
||||
(#set! injection.combined)
|
||||
(#set! injection.language php_only))
|
||||
((parameter) @injection.content
|
||||
(#set! injection.language php_only))
|
||||
3
stylua.toml
Normal file
3
stylua.toml
Normal file
@@ -0,0 +1,3 @@
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
column_width = 120
|
||||
Reference in New Issue
Block a user