Is there a good `.ctags` content with `--regex-php` that recognizes enums and their cases? It's not included in the latest universal ctags 6.2, and my regex tests have all failed so far. Perhaps someone else has had more success with this.

My current test `.ctags` looks like this (it's obviously wrong haha):

```
--regex-php=/enum[[:space:]]+([a-zA-Z_][a-zA-Z0-9_]*)[[:space:]]*/\1/e,enum/
--regex-php=/case[[:space:]]+([a-zA-Z_][a-zA-Z0-9_]*)[[:space:]]*;/\1/case/
```

And it should find enums with the following structure:

```php
enum Foo
{
case A;
case B;
}
```

And of course also backed enums:

```php
enum Foo: string
{
case A = 'a';
case B = 'b';
}
```

#ctags #uctags #UniversalCtags #php

@nemith Thanks for the tip. I have worked with #Neovim for a long time and am therefore quite familiar with it. However, despite having fewer plugins, it has always been considerably slower than #Vim9. Additionally, the LSP architecture is painfully slow and dependent on other language servers running in the background and listening on UNIX sockets. This is acceptable with gopls. Unfortunately, 90% of my work still involves #PHP and all the PHP language servers are poor. #Intelephense, which I purchased, is even proprietary and was often unable to validate my licence.
I was so frustrated that I gave up on Neovim because it offered me no added value compared to Vim 9. Moreover, 89% of what LSPs do can also be provided by #ctags, without the need for a buggy and slow Node.js Language Server.

Splitting the tag files into project and vendor ones and including both as tag files increased performance enormously!

The amount of data is the same, but it's somehow ten times faster. Before, it took about ten to fifteen seconds to `tselect` something; now, it takes less than one second.

```vim
set tags=./tags;,./vendor.tags;
```

#vim #ctags #UniversalCtags #php

Is the Vim (9.1) tag search slow for you too? This only happens with huge projects that have many PHP vendor dependencies, which can occur quickly with PHP. How do you handle it? Does Vim understand multiple tag files? Can it be multi-threaded somehow?

#vim #vim9 #ctag #ctags #UniversalCtags #PHP

Has anyone had good experiences with (universal) ctags for PHP? Looking for a solid, non-plugin, vim-native LS alternative for vim (9.1).

I tried `ctags -R --language-force=PHP --php-kinds=+c-f --fields=+n` as well as setting tags `set tags=./tags;,tags` but vim can't jump to function declarations by tag.

#vim #vim9 #ctags #UniversalCtags #php

Стилистический Анализатор: Синхронизация Объявлений и Определений static Функций

Представлена утилита проверяльщик, что последовательность определения static функций совпадает с последовательностью объявляения static функций.

https://habr.com/ru/articles/846020/

#static #ctags #sed #awk #cmp #code_style

Стилистический Анализатор: Синхронизация Объявлений и Определений static Функций

В некоторых организациях есть внутренний стандарт оформления исходных кодов на языке программирования Си. В частности и у нас тоже есть требования к коду. У меня уже был текст Синхронизация порядка...

Хабр

Стилистический Анализатор: Синхронизация порядка объявлений и определений функций

У нас в организации есть обязательное правило оформления исходников, которое звучит так: Порядок объявления С-функций должен совпадать с порядком определения С-функций. В этом тексте представлен алгоритм работы консольной программы, которая автоматически выявляет нарушения этого странного правила.

https://habr.com/ru/articles/844436/

#ctags #awk #gawk #sed #cygwin #cmp #gcc #статический_анализ #стилистический_анализ #static_analysis

Стилистический Анализатор: Синхронизация порядка объявлений и определений функций

Пролог У нас в организации есть правило оформления исходников, которое звучит так: Порядок объявления функций должен совпадать с порядком определения функций. В чем проблема? Понятное дело, что это...

Хабр

This is how I integrate rusty tags in my .zprofile:

# rusty-tags [ `command -v rustc` ] && RUST_SRC_PATH=$(rustc --print sysroot)/lib/rustlib/src/rust/library/ [ -d $RUST_SRC_PATH ] && export RUST_SRC_PATH

I still prefer #ctags over LSP.

#rust #rustlang

Removed #LSP shenanigans from my #nvim config. I don't really care about it and I hate to need external demons to make text editor do its job. It is even worse than plugins, which I neither love. And I never use auto-complete because it does stuff faster than my head can keep up.

Overall for me #ctags is still best possible experience when indexing source code. It crawls deep, does not do anything automatically and does not require external 3rd party prgrams.

And yeah it is stupid as hell, and thus can index whole #Linux tree without trying to understand it. With LSP indexing is build config dependent, which makes it crippled.

With #Rust I use rusty-tags: https://github.com/dan-t/rusty-tags
GitHub - dan-t/rusty-tags: Create ctags/etags for a cargo project

Create ctags/etags for a cargo project. Contribute to dan-t/rusty-tags development by creating an account on GitHub.

GitHub

@here_for_code @evilmartians I like #standardrb because it uses #RuboCop but only implements basic and non-controversial rules that help with linting.

I occasionally use #RubyMine for the (putatively) automated refactorings and to play around with #AI integrations, but I'm a #CLI guy and don't find IDE's very intuitive. I use heavily customized #vim, #ack or #thesilversearcher, and #ctags for day to day stuff. It just seems faster to me, but that could just be muscle memory and habit. 😄