рдирдорд╕реНрддреЗ,
рдореБрдЭреЗ ctags рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ C рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдмрдЧ рдорд┐рд▓рд╛ (рдпрд╣ рд╡рд┐рдкреБрд▓-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
рдзрдиреНрдпрд╡рд╛рдж!!
рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред
рдирд┐рдЬреА рдиреЛрдЯ: рд╣рдореЗрдВ get.c . рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдореИрдХреНрд░реЛ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдореИрдВ рдПрдХ рд╢рд╛рдЦрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдХрд╛рдЧ рдкрд░рдд рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╣реИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рдЧреЗрдиреА рдХреА рдореЗрдореЛрд░реА рдЖрдзрд╛рд░рд┐рдд рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реИред
@masatake
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕ рдкрд░ рдкреНрд░рдЧрддрд┐ рдХреА рд╣реИ?
рдХреНрдпрд╛ рдЖрдкрдХреА рд╢рд╛рдЦрд╛ рдХрд╣реАрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ?
рдирд╣реАрдВ, рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ред
рд╢рд╛рдпрдж рдЖрдк рдореИрдХреНрд░реЛ рд╡рд┐рд╕реНрддрд╛рд░ рднрд╛рдЧ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП ctags -I 'PRAGMA+'
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рдЬреА рдиреЛрдЯ: рд╣рдореЗрдВ get.c рдХреЙрд░реНрдХ рдкрд░рдд рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдореИрдХреНрд░реЛ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдпрд╣ рд╕рднреА рдореИрдХреНрд░реЛ рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рд╢рд╛рдорд┐рд▓ рд╣реЗрдбрд░ рд╕реЗ рдЖ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдЬреАрдм рдЪреАрдЬреЛрдВ рддрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рд╕реА рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдХрднреА рднреА рд╕рд╣реА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рддреЛ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдореИрдХреНрд░реЛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдХрднреА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
@ рдмреА 4 рдПрди , рдореИрдВ рд╕рд╣рдордд рд╣реВрдВред
рдореИрдВ рдЪрд╛рд▓ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд▓реЗрдХрд┐рди рдирдпрд╛ рдкрд╛рд░реНрд╕ рдЗрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдкрд╛рдпрд╛:
PRAGMA /tmp/enum.c /^#define PRAGMA(/;" d file:
foo /tmp/enum.c /^int foo() {$/;" f
main /tmp/enum.c /^void main(void) {$/;" f
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рдЪрд╛рд▓ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд▓реЗрдХрд┐рди рдирдпрд╛ рдкрд╛рд░реНрд╕ рдЗрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдкрд╛рдпрд╛: