ΠΡΠΈΠ²Π΅Ρ,
Π― ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅ C Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ctags (ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² exuberant-ctags).
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ:
#include <stdio.h>
#define PRAGMA(x) _Pragma(#x)
PRAGMA(bar)
int foo() {
int a = 1;
printf("a = %d\n", a);
}
void main(void) {
foo();
}
ΠΡΠ²ΠΎΠ΄ ΡΠ°ΠΉΠ»Π° ctags Π½Π΅ ΠΈΠΌΠ΅Π» ΡΡΠ½ΠΊΡΠΈΠΈ foo()
ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.
PRAGMA f.c /^#define PRAGMA(/;" d file:
PRAGMA f.c /^PRAGMA(bar)$/;" f
main f.c /^void main(void) {$/;" f
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!!
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
ΠΠ°ΠΆΠ½ΠΎ, Π½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ Π½Π΅ΠΏΡΠΎΡΡΠΎ.
ΠΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° Π² directiveDefine ΡΠ°ΠΉΠ»Π° get.c
ΠΏΡΠΎΠ±ΠΊΠΎΠ²ΡΠΉ ΡΠ»ΠΎΠΉ Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π² Π²Π΅ΡΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²Π·Π»ΠΎΠΌΠ°Π½.
ΠΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ°ΠΌΡΡΠΈ geany.
@masatake
ΠΡ Π΄ΠΎΠ±ΠΈΠ»ΠΈΡΡ Π² ΡΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ°?
ΠΡΡΡ Π»ΠΈ Π³Π΄Π΅-Π½ΠΈΠ±ΡΠ΄Ρ Π²Π°Ρ ΡΠΈΠ»ΠΈΠ°Π»?
ΠΠ΅Ρ. Π― Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Ρ ΠΏΠΎ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ctags -I 'PRAGMA+'
ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΡΠ°ΡΡΡ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ°.
ΠΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° Π² directiveDefine ΡΠ»ΠΎΡ ΠΏΡΠΎΠ±ΠΊΠΈ get.c
ΠΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ Π²ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΈΠ· Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ ΡΠ°ΡΡΠΈΡΡΡΡΡΡ Π΄ΠΎ ΡΡΡΠ°Π½Π½ΡΡ Π²Π΅ΡΠ΅ΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π±Π΅Π· ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° C ΠΎΠ½ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠ½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΈΠΌΠ΅Π΅Ρ Π»ΠΈ ΡΠΌΡΡΠ» Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π²ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², Π΅ΡΠ»ΠΈ ΡΡΠΎΠ³ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
@ b4n , ΡΠΎΠ³Π»Π°ΡΠ΅Π½.
Π― Π½Π΅ Π·Π½Π°Ρ ΡΡΡΠΊΠ°, Π½ΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΠ΅ΡΠ°Π΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π― ΠΏΠΎΠ»ΡΡΠΈΠ»:
PRAGMA /tmp/enum.c /^#define PRAGMA(/;" d file:
foo /tmp/enum.c /^int foo() {$/;" f
main /tmp/enum.c /^void main(void) {$/;" f
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π― Π½Π΅ Π·Π½Π°Ρ ΡΡΡΠΊΠ°, Π½ΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΠ΅ΡΠ°Π΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π― ΠΏΠΎΠ»ΡΡΠΈΠ»: