ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Fwd: [Bram@: Occult completion]
@ 2005-09-10 13:08 Alexey I. Froloff
  2005-09-10 15:29 ` Alexey Rusakov
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey I. Froloff @ 2005-09-10 13:08 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 3971 bytes --]

FYI.

----- Forwarded message from Bram Moolenaar <Bram@> -----

Date: Sat, 10 Sep 2005 14:46:00 +0200
From: Bram Moolenaar <Bram@>
To: vim-dev@
Subject: Occult completion


I have made a start with "occult completion".  It's a bit like
intellisense completion, but that is a trademark.  It's going to be a
bit unpredictable and mysterious, thus "occult" seemed to be a good
name.  And I needed something starting with an O, so that CTRL-X CTRL-O
can be used.

It is currently only working for C.  This requires a tags file, which is
used to find the information about typedefs, structures, etc.  The
original ctags didn't include sufficient information, thus I made a
patch for Exuberant ctags to add this.  See the help text below for
where to find it.  Without this patch it will still work for some
things, depending on how the struct/typedef/etc. was declared.

In the latest snapshot the file that does the completion is:
runtime/autoload/ccomplete.vim.  If you see something that can be
improved, let me know.

You will obviously have remarks about what needs to be improved.  I'm
especially interested in suggestions with a hint about how it can be
implemented.  Or an example of how another program does this.

Do keep in mind that I want this to work on all systems, thus using some
.dll file (as the insenvim project is doing) is not an option.  We will
need a popup menu to show the alternatives.  This needs to be
implemented for various GUIs.  And for the console!

If you want to work on this for other languages that would be great.
C++ and Java should work in a similar way, since Exuberant ctags
supports them.


By the way: I fixed a problem that could cause a crash when using a
prompt in a :for loop.  The list that was looped over could be cleaned
up by the garbage collector (it kicks in when waiting for a character to
be typed).  This especially happened when an error message was given
inside a for loop, Vim could crash after the hit-enter prompt.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Filetype-specific remarks for occult completion	    *compl-occult-filetypes*

C							*ft-c-occult*

Completion requires a tags file.  You should use Exuberant ctags, because it
adds extra information that is needed for completion.  You can find it here:
http://ctags.sourceforge.net/
For version 5.5.4 you need to add a patch that adds the "typename:" field:
ftp://ftp.vim.org/pub/vim/unstable/patches/ctags-5.5.4.patch

If you want to complete system functions you can do something like this.  Use
ctags to generate a tags file for all the system header files: >
	% ctags -R -f ~/.vim/systags /usr/include /usr/local/include
In your vimrc file add this tags file to the 'tags' option: >
	set tags+=~/.vim/systags

When using CTRL-X CTRL-O after a name without any "." or "->" it is completed
from the tags file directly.  This works for any identifier, also function
names.  If you want to complete a local variable name, which does not appear
in the tags file, use CTRL-P instead.

When using CTRL-X CTRL-O after something that has "." or "->" Vim will attempt
to recognize the type of the variable and figure out what members it has.
This means only members valid for the variable will be listed.

Vim doesn't include a C compiler, only the most obviously formatted
declarations are recognized.  Preprocessor stuff may cause confusion.
When the same structure name appears in multiple places all possible members
are included.


-- 
$ echo pizza > /dev/oven

 /// Bram Moolenaar -- Bram@              -- http://www.Moolenaar.net   \\\
///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
 \\\     Buy LOTR 3 and help AIDS victims -- http://ICCF.nl/lotr.html   ///

----- End forwarded message -----

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] Fwd: [Bram@: Occult completion]
  2005-09-10 13:08 [devel] Fwd: [Bram@: Occult completion] Alexey I. Froloff
@ 2005-09-10 15:29 ` Alexey Rusakov
  2005-09-10 18:58   ` Alexey I. Froloff
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey Rusakov @ 2005-09-10 15:29 UTC (permalink / raw)
  To: ALT Devel discussion list

Alexey I. Froloff wrote:

>FYI.
>  
>
Круто. А можно этот патч для ctags в Сизиф протолкнуть?

-- 
  Alexey "Ktirf" Rusakov


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] Fwd: [Bram@: Occult completion]
  2005-09-10 15:29 ` Alexey Rusakov
@ 2005-09-10 18:58   ` Alexey I. Froloff
  2005-09-10 22:35     ` Alexey I. Froloff
  2005-09-12 14:46     ` Alexey Rusakov
  0 siblings, 2 replies; 13+ messages in thread
From: Alexey I. Froloff @ 2005-09-10 18:58 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 382 bytes --]

* Alexey Rusakov <ktirf@> [050910 19:34]:
> >FYI.
> Круто. А можно этот патч для ctags в Сизиф протолкнуть?
А нужно ли?  Я пока попытаюсь убедить Брама, что ему хватит
стандартного --fields ;-)

Кстати, я вспомнил наш февральский разговор про теги в пакетах.
Если не ошибаюсь, я обещал сделать в первом приближении
реализацию этого безобразия?

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] Fwd: [Bram@: Occult completion]
  2005-09-10 18:58   ` Alexey I. Froloff
@ 2005-09-10 22:35     ` Alexey I. Froloff
  2005-09-12 14:46     ` Alexey Rusakov
  1 sibling, 0 replies; 13+ messages in thread
From: Alexey I. Froloff @ 2005-09-10 22:35 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 301 bytes --]

* Alexey I. Froloff <raorn@> [050910 23:01]:
> > >FYI.
> > Круто. А можно этот патч для ctags в Сизиф протолкнуть?
> А нужно ли?  Я пока попытаюсь убедить Брама, что ему хватит
> стандартного --fields ;-)
Нужно.  Но патч я переделал.  К --fields добавился флаг "t".

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] Fwd: [Bram@: Occult completion]
  2005-09-10 18:58   ` Alexey I. Froloff
  2005-09-10 22:35     ` Alexey I. Froloff
@ 2005-09-12 14:46     ` Alexey Rusakov
  2005-09-12 16:14       ` Alexey I. Froloff
  1 sibling, 1 reply; 13+ messages in thread
From: Alexey Rusakov @ 2005-09-12 14:46 UTC (permalink / raw)
  To: ALT Devel discussion list

On 10.09.2005 22:58, Alexey I. Froloff wrote:
> Кстати, я вспомнил наш февральский разговор про теги в пакетах.
> Если не ошибаюсь, я обещал сделать в первом приближении
> реализацию этого безобразия?
>   
Было дело, только мы так и не договорились, кажется, о конкретном 
способе реализации. Надо слазить в архивы, поглядеть.

-- 
  Alexey "Ktirf" Rusakov



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] Fwd: [Bram@: Occult completion]
  2005-09-12 14:46     ` Alexey Rusakov
@ 2005-09-12 16:14       ` Alexey I. Froloff
  2005-09-12 16:40         ` Alexey Rusakov
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey I. Froloff @ 2005-09-12 16:14 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1043 bytes --]

* Alexey Rusakov <ktirf@> [050912 18:54]:
> >Кстати, я вспомнил наш февральский разговор про теги в пакетах.
> >Если не ошибаюсь, я обещал сделать в первом приближении
> >реализацию этого безобразия?
> Было дело, только мы так и не договорились, кажется, о конкретном 
> способе реализации. Надо слазить в архивы, поглядеть.
Мне на тот момент показалось наиболее логичным генерить теги на
стадии %install по содержимому %buildroot.  Тут есть некоторое
количество спорных вопросов:

1. Полученный файл с тегами нужно отфильтровать, убрав из путей
собсно %buildroot.  Либо вручную, либо патчем для ctags (вручную
прокатит только для "обычного формата", *macs отдыхает из-за
своей бинарности).

2. Разбивка по языкам тоже должна производиться вручную, по
одному вызову find-tags на язык (из-за Sh, автодетект не всегда
работает).

Складываем это всё в /usr/share/tags/ЯЗЫК/%name.tags, при этом C
и C++ считаются одним языком (C), и обрабатываются ctags'ом как
C++ (потому как только заголовки).

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] Fwd: [Bram@: Occult completion]
  2005-09-12 16:14       ` Alexey I. Froloff
@ 2005-09-12 16:40         ` Alexey Rusakov
  2005-09-12 17:10           ` Alexey I. Froloff
  2005-09-13 18:54           ` Alexey I. Froloff
  0 siblings, 2 replies; 13+ messages in thread
From: Alexey Rusakov @ 2005-09-12 16:40 UTC (permalink / raw)
  To: ALT Devel discussion list

On 12.09.2005 20:14, Alexey I. Froloff wrote:
> Мне на тот момент показалось наиболее логичным генерить теги на
> стадии %install по содержимому %buildroot.  Тут есть некоторое
> количество спорных вопросов:
>
> 1. Полученный файл с тегами нужно отфильтровать, убрав из путей
> собсно %buildroot.  Либо вручную, либо патчем для ctags (вручную
> прокатит только для "обычного формата", *macs отдыхает из-за
> своей бинарности).
>   
По-моему, лучше патч. Хрен ли у нас самые простые в мире спеки :)

> 2. Разбивка по языкам тоже должна производиться вручную, по
> одному вызову find-tags на язык (из-за Sh, автодетект не всегда
> работает).
>   
Это фигово. С другой стороны, набор языков для данного пакета более чем 
фиксирован. Могут быть проблемы, если привязки для разных языков 
генерятся из одного src-пакета. А если угадывать, основываясь на путях, 
по которым лежат файлы?

> Складываем это всё в /usr/share/tags/ЯЗЫК/%name.tags, при этом C
> и C++ считаются одним языком (C), и обрабатываются ctags'ом как
> C++ (потому как только заголовки).
>   
Логично.

И всё это отправляется в пакет -devel, я правильно понимаю?

-- 
  Alexey "Ktirf" Rusakov



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] Fwd: [Bram@: Occult completion]
  2005-09-12 16:40         ` Alexey Rusakov
@ 2005-09-12 17:10           ` Alexey I. Froloff
  2005-09-12 17:25             ` Alexey Rusakov
  2005-09-13 18:54           ` Alexey I. Froloff
  1 sibling, 1 reply; 13+ messages in thread
From: Alexey I. Froloff @ 2005-09-12 17:10 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 951 bytes --]

* Alexey Rusakov <ktirf@> [050912 20:46]:
> >2. Разбивка по языкам тоже должна производиться вручную, по
> >одному вызову find-tags на язык (из-за Sh, автодетект не всегда
> >работает).
> Это фигово. С другой стороны, набор языков для данного пакета более чем 
> фиксирован. Могут быть проблемы, если привязки для разных языков 
> генерятся из одного src-пакета.
Какие проблемы и при чём тут src-пакеты?  Вообще, в одном
бинарном devel пакете может находиться несколько файлов с тегами,
но по одному на язык, другими словами - каждый devel пакет модет
иметь разные файлы тегов для одного и того же языка.  См. напр.
dbus-*-devel.

> А если угадывать, основываясь на путях, по которым лежат файлы?
Я очень люблю фразу "искусственный интеллект хорош только при
недостатке естественного". ;-)

> И всё это отправляется в пакет -devel, я правильно понимаю?
Да.  С зависимостью на какой-ньдь shared-tags-base.
-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] Fwd: [Bram@: Occult completion]
  2005-09-12 17:10           ` Alexey I. Froloff
@ 2005-09-12 17:25             ` Alexey Rusakov
  0 siblings, 0 replies; 13+ messages in thread
From: Alexey Rusakov @ 2005-09-12 17:25 UTC (permalink / raw)
  To: ALT Devel discussion list

On 12.09.2005 21:10, Alexey I. Froloff wrote:
> * Alexey Rusakov <ktirf@> [050912 20:46]:
>   
>>> 2. Разбивка по языкам тоже должна производиться вручную, по
>>> одному вызову find-tags на язык (из-за Sh, автодетект не всегда
>>> работает).
>>>       
>> Это фигово. С другой стороны, набор языков для данного пакета более чем 
>> фиксирован. Могут быть проблемы, если привязки для разных языков 
>> генерятся из одного src-пакета.
>>     
> Какие проблемы и при чём тут src-пакеты?
Ну так на каком этапе будут создаваться файлы с тегами, разве не сборки 
исходного пакета? И как именно в спеке предлагается указывать сборку 
тегов? Как я понимаю, вызывается некоторая команда в секции %install, 
которая получает параметрами имена результирующих файлов с тегами и 
каталоги, в которых включаемые файлы в итоге будут лежать. Как 
определять, в какие результирующие файлы класть теги от каких включаемых 
файлов?

>> А если угадывать, основываясь на путях, по которым лежат файлы?
>>     
> Я очень люблю фразу "искусственный интеллект хорош только при
> недостатке естественного". ;-)
>   
Так или иначе, но есть ли пересечения по каталогам 
включаемых/импортируемых (тем или иным образом) у тех языков, которые 
нельзя различить на автомате?

-- 
  Alexey "Ktirf" Rusakov



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] Fwd: [Bram@: Occult completion]
  2005-09-12 16:40         ` Alexey Rusakov
  2005-09-12 17:10           ` Alexey I. Froloff
@ 2005-09-13 18:54           ` Alexey I. Froloff
  2005-09-13 22:01             ` Alexey Rusakov
  1 sibling, 1 reply; 13+ messages in thread
From: Alexey I. Froloff @ 2005-09-13 18:54 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 448 bytes --]

* Alexey Rusakov <ktirf@> [050912 20:46]:
> > 1. Полученный файл с тегами нужно отфильтровать, убрав из
> > путей собсно %buildroot.  Либо вручную, либо патчем для ctags
> По-моему, лучше патч. Хрен ли у нас самые простые в мире спеки
> :)
Об'является конкурс на название опции.  Длинной или короткой -
без разницы.  Обязательно условие для участия в конкурсе - чтение
ctags --help | grep '  -' | LC_ALL=C sort

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] Fwd: [Bram@: Occult completion]
  2005-09-13 18:54           ` Alexey I. Froloff
@ 2005-09-13 22:01             ` Alexey Rusakov
  2005-09-14 10:20               ` Alexey I. Froloff
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey Rusakov @ 2005-09-13 22:01 UTC (permalink / raw)
  To: ALT Devel discussion list

Alexey I. Froloff wrote:

>* Alexey Rusakov <ktirf@> [050912 20:46]:
>  
>
>>>1. Полученный файл с тегами нужно отфильтровать, убрав из
>>>путей собсно %buildroot.  Либо вручную, либо патчем для ctags
>>>      
>>>
>>По-моему, лучше патч. Хрен ли у нас самые простые в мире спеки
>>:)
>>    
>>
>Об'является конкурс на название опции.  Длинной или короткой -
>без разницы.  Обязательно условие для участия в конкурсе - чтение
>ctags --help | grep '  -' | LC_ALL=C sort
>  
>
Как насчёт --buildroot? :-D

-- 
  Alexey "Ktirf" Rusakov


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] Fwd: [Bram@: Occult completion]
  2005-09-13 22:01             ` Alexey Rusakov
@ 2005-09-14 10:20               ` Alexey I. Froloff
  2005-09-14 22:51                 ` Alexey I. Froloff
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey I. Froloff @ 2005-09-14 10:20 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 338 bytes --]

* Alexey Rusakov <ktirf@> [050914 02:08]:
> >Об'является конкурс на название опции.  Длинной или короткой -
> >без разницы.  Обязательно условие для участия в конкурсе - чтение
> >ctags --help | grep '  -' | LC_ALL=C sort
> Как насчёт --buildroot? :-D
https://bugzilla.altlinux.org/show_bug.cgi?id=7954

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [devel] Fwd: [Bram@: Occult completion]
  2005-09-14 10:20               ` Alexey I. Froloff
@ 2005-09-14 22:51                 ` Alexey I. Froloff
  0 siblings, 0 replies; 13+ messages in thread
From: Alexey I. Froloff @ 2005-09-14 22:51 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1147 bytes --]

* Alexey I. Froloff <raorn@> [050914 14:27]:
> https://bugzilla.altlinux.org/show_bug.cgi?id=7954
$ ./find-tags --help   
Usage: find-tags [OPTIONS... ] -- OUTNAME FILE...

The find-tags program generates shared tags for different languages

Valid options are:
  -h, --help    Display help screen
  -l, --lang    Set source file language
  -k, --kinds   Set language-specific kinds of tags (see ctags(1))
  -f, --fields  Set extension fields to include in tags file (see ctags(1))
  -B, --base    Set base directory for tags file
  --list-langs  List supported languages

Tags will be stored in $BASE_DIRECTORY/$LANG/$OUTNAME.tags

FILE is a list of files and/or directories to search tags in.  It is
allowed to specify any ctags options, for example --exclude=PATTERN

If $RPM_BUILD_ROOT is set, it will be prepended to base directory.
It is also will be stripped from paths in generated tags file (needs
patched version of ctags that understands --buildroot option).

Report bugs to <raorn@altlinux.ru>
$ ./find-tags --list-langs
Available languages:
  c
  perl
  python
  ruby
  tcl

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2005-09-14 22:51 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-09-10 13:08 [devel] Fwd: [Bram@: Occult completion] Alexey I. Froloff
2005-09-10 15:29 ` Alexey Rusakov
2005-09-10 18:58   ` Alexey I. Froloff
2005-09-10 22:35     ` Alexey I. Froloff
2005-09-12 14:46     ` Alexey Rusakov
2005-09-12 16:14       ` Alexey I. Froloff
2005-09-12 16:40         ` Alexey Rusakov
2005-09-12 17:10           ` Alexey I. Froloff
2005-09-12 17:25             ` Alexey Rusakov
2005-09-13 18:54           ` Alexey I. Froloff
2005-09-13 22:01             ` Alexey Rusakov
2005-09-14 10:20               ` Alexey I. Froloff
2005-09-14 22:51                 ` Alexey I. Froloff

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git