commit 8b21549db80027d7c6f3da5a63a6aa2d297c8e52 Author: anon <anon@anon.anon> Date: Sun Oct 1 15:44:26 2023 +0200 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..14f892f --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +hitags.tar +**/*tags +**/*.i +object/* +*.out +build/gcc-* diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9d010ad --- /dev/null +++ b/Makefile @@ -0,0 +1,42 @@ +#TARGET.featch = $$(find '/var/db/repos/gentoo/sys-devel/gcc/' -iname '*.ebuild' ! -regex '.*\.9999\.eobject' | head -1) +#TARGET.untar = $$(find ./ -iname '*.tar.*' ! -regex '.*patch.*' ! -regex '.*lockfile.*' | head -1) +# +#CTAGS.flags := --recurse --extras=+F #--output-format=json +# +#tags: clean cxxtags +# ctags_to_vim_hi.py -i object/cxx.tags +# +#cxxtags: +# gcc -E builder/include_std.c > object/include_std.i +# ctags ${CTAGS.flags} --language-force=C -o object/cxx.tags object/include_std.i +# +#clean: clean_object_source clean_cxx +# -rm object/*.tags +# +#clean_cxx: +# -rm -frfr object/include_std.i +# -rm -frfr object/cxx.tags +# +#clean_object_source: +# -rm -frfr object/gcc-* +# +#update_object_source: clean_object_source +# cd object/; \ +# export DISTDIR="$$(realpath .)"; \ +# eobject ${TARGET.featch} fetch +# cd object/; \ +# tar -x -f ${TARGET.untar} + +bundle: clean + -mkdir object/.vim/ + -mkdir object/.vim/plugin/ + cp hitags.vim object/.vim/plugin/ + -mkdir object/.vim/plugin/HiTags/ + cp hitags.py object/.vim/plugin/HiTags/ + tar -C object/ -c .vim/ -f hitags.tar + +install: + tar -x -f hitags.tar -C ~/ + +clean: + -rm -frfr object/* object/.vim/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..9e91a84 --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +# HiTags +Hitags is a Vim plugin which harnesses the power of ctags +to provide dynamic symbol (e.g. varriable, function) name highlightings. + +# Before/After +/* NOTE: TODO */ + +# Dependencies + + [mimetype](https://packages.gentoo.org/packages/dev-perl/File-MimeInfo) (sadly, `file -i` does not suffice) + + python3 (system installation, not Vim compile flag) + + ctags (tested with Universal ctags) + + gcc/clang (to preprocess C/C++ files) + +# Installation +1. Clone the source + +2. Run: +```Bash + $ make; make install +``` +Note: if you dont have (GNU) Make installed for some reason, +opening `Makefile` with vim and copy pasting the commands (whats indented) +to your shell should also suffice + +3. Configure Vim to actually invoke the plugin. + Achive this by appending / overriding the following definition in your .vimrc. +```VimScript +let g:hitags_events = ["BufWrite"] " trigger a symbol update on writes +``` + +4. **_(Optional)_** Further configure HiTags by editing ~/.vim/plugin/hitags.vim. +All reguired details are commented right there in the script. + +5. Enjoy diff --git a/builder/include_std.c b/builder/include_std.c new file mode 100644 index 0000000..7f94ad0 --- /dev/null +++ b/builder/include_std.c @@ -0,0 +1,72 @@ +#include <aio.h> +#include <arpa/inet.h> +#include <assert.h> +#include <complex.h> +#include <ctype.h> +#include <dirent.h> +#include <errno.h> +#include <fcntl.h> +#include <fenv.h> +#include <float.h> +#include <fnmatch.h> +#include <glob.h> +#include <grp.h> +#include <iconv.h> +#include <ifaddrs.h> +#include <inttypes.h> +#include <iso646.h> +#include <langinfo.h> +#include <limits.h> +#include <locale.h> +#include <math.h> +#include <mqueue.h> +#include <netdb.h> +#include <net/if.h> +#include <netinet/in.h> +#include <netinet/tcp.h> +#include <nl_types.h> +#include <poll.h> +#include <pthread.h> +#include <pwd.h> +#include <regex.h> +#include <sched.h> +#include <semaphore.h> +#include <setjmp.h> +#include <signal.h> +#include <spawn.h> +#include <stdarg.h> +#include <stdbool.h> +#include <stddef.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/ipc.h> +#include <syslog.h> +#include <sys/mman.h> +#include <sys/msg.h> +#include <sys/resource.h> +#include <sys/select.h> +#include <sys/sem.h> +#include <sys/shm.h> +#include <sys/socket.h> +#include <sys/stat.h> +#include <sys/statvfs.h> +#include <sys/time.h> +#include <sys/times.h> +#include <sys/types.h> +#include <sys/uio.h> +#include <sys/un.h> +#include <sys/utsname.h> +#include <sys/wait.h> +#include <tar.h> +#include <termios.h> +#include <tgmath.h> +#include <time.h> +#include <uchar.h> +#include <ulimit.h> +#include <unistd.h> +#include <utime.h> +#include <utmpx.h> +#include <wchar.h> +#include <wctype.h> diff --git a/debug/Makefile b/debug/Makefile new file mode 100644 index 0000000..7bf6964 --- /dev/null +++ b/debug/Makefile @@ -0,0 +1,2 @@ +main: + ctags -R --languages=c++ --c++-kinds=+p --fields=+iaS --extra=+q . diff --git a/debug/test_c_hw/Makefile b/debug/test_c_hw/Makefile new file mode 100644 index 0000000..958779b --- /dev/null +++ b/debug/test_c_hw/Makefile @@ -0,0 +1,2 @@ +main: + gcc main.c helper.c diff --git a/debug/test_c_hw/helper.c b/debug/test_c_hw/helper.c new file mode 100644 index 0000000..5ab8967 --- /dev/null +++ b/debug/test_c_hw/helper.c @@ -0,0 +1,11 @@ +#include <stdio.h> +#include "helper.h" + +struct Msg{ + const char* m; +} msg; + +void helper() { + msg.m = "Helper function called!"; + puts(msg.m); +} diff --git a/debug/test_c_hw/helper.h b/debug/test_c_hw/helper.h new file mode 100644 index 0000000..7c1013b --- /dev/null +++ b/debug/test_c_hw/helper.h @@ -0,0 +1,6 @@ +#ifndef HELPER_H +#define HELPER_H + +void helper(); + +#endif diff --git a/debug/test_c_hw/main.c b/debug/test_c_hw/main.c new file mode 100644 index 0000000..e1bfffe --- /dev/null +++ b/debug/test_c_hw/main.c @@ -0,0 +1,16 @@ +#include <stdio.h> +#include "helper.h" + +typedef int myint; + +// Global variables +int global_var = 10; + +myint main() { + puts("Hello, world!"); + + // Call helper function + helper(); + + return 0; +} diff --git a/debug/test_c_hw/tags.vim b/debug/test_c_hw/tags.vim new file mode 100644 index 0000000..27bb2df --- /dev/null +++ b/debug/test_c_hw/tags.vim @@ -0,0 +1,110 @@ +syn match Constant "\<BUFSIZ\>" +syn match Constant "\<EOF\>" +syn match Constant "\<FILENAME_MAX\>" +syn match Constant "\<FOPEN_MAX\>" +syn match Constant "\<HELPER_H\>" +syn match Constant "\<L_ctermid\>" +syn match Constant "\<L_tmpnam\>" +syn match Constant "\<NULL\>" +syn match Constant "\<P_tmpdir\>" +syn match Constant "\<SEEK_CUR\>" +syn match Constant "\<SEEK_END\>" +syn match Constant "\<SEEK_SET\>" +syn match Constant "\<TMP_MAX\>" +syn match Constant "\<stderr\>" +syn match Constant "\<stdin\>" +syn match Constant "\<stdout\>" +syn match Function "\<clearerr\>" +syn match Function "\<clearerr_unlocked\>" +syn match Function "\<ctermid\>" +syn match Function "\<dprintf\>" +syn match Function "\<fclose\>" +syn match Function "\<fdopen\>" +syn match Function "\<feof\>" +syn match Function "\<feof_unlocked\>" +syn match Function "\<ferror\>" +syn match Function "\<ferror_unlocked\>" +syn match Function "\<fflush\>" +syn match Function "\<fflush_unlocked\>" +syn match Function "\<fgetc\>" +syn match Function "\<fgetc_unlocked\>" +syn match Function "\<fgetpos\>" +syn match Function "\<fgets\>" +syn match Function "\<fileno\>" +syn match Function "\<fileno_unlocked\>" +syn match Function "\<flockfile\>" +syn match Function "\<fmemopen\>" +syn match Function "\<fopen\>" +syn match Function "\<fprintf\>" +syn match Function "\<fputc\>" +syn match Function "\<fputc_unlocked\>" +syn match Function "\<fputs\>" +syn match Function "\<fread\>" +syn match Function "\<fread_unlocked\>" +syn match Function "\<freopen\>" +syn match Function "\<fscanf\>" +syn match Function "\<fseek\>" +syn match Function "\<fseeko\>" +syn match Function "\<fsetpos\>" +syn match Function "\<ftell\>" +syn match Function "\<ftello\>" +syn match Function "\<ftrylockfile\>" +syn match Function "\<funlockfile\>" +syn match Function "\<fwrite\>" +syn match Function "\<fwrite_unlocked\>" +syn match Function "\<getc\>" +syn match Function "\<getc_unlocked\>" +syn match Function "\<getchar\>" +syn match Function "\<getchar_unlocked\>" +syn match Function "\<getdelim\>" +syn match Function "\<getline\>" +syn match Function "\<getw\>" +syn match Function "\<helper\>" +syn match Function "\<main\>" +syn match Function "\<open_memstream\>" +syn match Function "\<pclose\>" +syn match Function "\<perror\>" +syn match Function "\<popen\>" +syn match Function "\<printf\>" +syn match Function "\<putc\>" +syn match Function "\<putc_unlocked\>" +syn match Function "\<putchar\>" +syn match Function "\<putchar_unlocked\>" +syn match Function "\<puts\>" +syn match Function "\<putw\>" +syn match Function "\<remove\>" +syn match Function "\<rename\>" +syn match Function "\<renameat\>" +syn match Function "\<rewind\>" +syn match Function "\<scanf\>" +syn match Function "\<setbuf\>" +syn match Function "\<setbuffer\>" +syn match Function "\<setlinebuf\>" +syn match Function "\<setvbuf\>" +syn match Function "\<snprintf\>" +syn match Function "\<sprintf\>" +syn match Function "\<sscanf\>" +syn match Function "\<tempnam\>" +syn match Function "\<tmpfile\>" +syn match Function "\<tmpnam\>" +syn match Function "\<tmpnam_r\>" +syn match Function "\<ungetc\>" +syn match Function "\<vdprintf\>" +syn match Function "\<vfprintf\>" +syn match Function "\<vfscanf\>" +syn match Function "\<vprintf\>" +syn match Function "\<vscanf\>" +syn match Function "\<vsnprintf\>" +syn match Function "\<vsprintf\>" +syn match Function "\<vsscanf\>" +syn match Identifier "\<stderr\>" +syn match Identifier "\<stdin\>" +syn match Identifier "\<stdout\>" +syn match Special "\<global_var\>" +syn match Type "\<FILE\>" +syn match Type "\<fpos_t\>" +syn match Type "\<myint\>" +syn match Type "\<off_t\>" +syn match Type "\<size_t\>" +syn match Type "\<ssize_t\>" +syn match Type "\<va_list\>" diff --git a/debug/test_cpp_hw/Makefile b/debug/test_cpp_hw/Makefile new file mode 100644 index 0000000..bc7fca2 --- /dev/null +++ b/debug/test_cpp_hw/Makefile @@ -0,0 +1,2 @@ +main: + g++ main.cpp helper.cpp diff --git a/debug/test_cpp_hw/helper.cpp b/debug/test_cpp_hw/helper.cpp new file mode 100644 index 0000000..2653350 --- /dev/null +++ b/debug/test_cpp_hw/helper.cpp @@ -0,0 +1,10 @@ +#include <iostream> +#include "helper.h" + +struct Msg{ + const char* m = "Helper function called!"; +} msg; + +void helper() { + std::cout << msg.m << std::endl; +} diff --git a/debug/test_cpp_hw/helper.h b/debug/test_cpp_hw/helper.h new file mode 100644 index 0000000..7c1013b --- /dev/null +++ b/debug/test_cpp_hw/helper.h @@ -0,0 +1,6 @@ +#ifndef HELPER_H +#define HELPER_H + +void helper(); + +#endif diff --git a/debug/test_cpp_hw/main.cpp b/debug/test_cpp_hw/main.cpp new file mode 100644 index 0000000..c7224d0 --- /dev/null +++ b/debug/test_cpp_hw/main.cpp @@ -0,0 +1,16 @@ +#include <iostream> +#include "helper.h" + +typedef int myint; + +// Global variables +int global_var = 10; + +myint main() { + std::cout << "Hello, world!" << std::endl; + + // Call helper function + helper(); + + return 0; +} diff --git a/debug/test_cpp_hw/tags.vim b/debug/test_cpp_hw/tags.vim new file mode 100644 index 0000000..9f2da20 --- /dev/null +++ b/debug/test_cpp_hw/tags.vim @@ -0,0 +1,833 @@ +syn match Function "\<hash_code\>" +syn match Type "\<is_function\>" +syn match Function "\<do_falsename\>" +syn match Function "\<base\>" +syn match Type "\<fpos_t\>" +syn match Function "\<write\>" +syn match Type "\<conditional\>" +syn match Function "\<grouping\>" +syn match Type "\<is_lvalue_reference\>" +syn match Special "\<is_move_assignable_v\>" +syn match Function "\<use_facet\>" +syn match Type "\<is_pod\>" +syn match Function "\<\~basic_string\>" +syn match Type "\<forward_iterator_tag\>" +syn match Special "\<is_trivially_copyable_v\>" +syn match Type "\<remove_reference_t\>" +syn match Function "\<address\>" +syn match Type "\<remove_extent_t\>" +syn match Type "\<logical_and\>" +syn match Type "\<is_error_condition_enum\>" +syn match Type "\<pthread_t\>" +syn match Function "\<init\>" +syn match Special "\<has_unique_object_representations_v\>" +syn match Type "\<add_rvalue_reference_t\>" +syn match Function "\<in_avail\>" +syn match Type "\<is_abstract\>" +syn match Type "\<streambuf\>" +syn match Type "\<first_type\>" +syn match Function "\<isgraph\>" +syn match Special "\<is_trivially_copy_assignable_v\>" +syn match Type "\<unary_function\>" +syn match Type "\<wfstream\>" +syn match Function "\<swap\>" +syn match Type "\<modulus\>" +syn match Type "\<wios\>" +syn match Type "\<false_type\>" +syn match Type "\<less_equal\>" +syn match Function "\<fill\>" +syn match Type "\<ofstream\>" +syn match Function "\<ignore\>" +syn match Type "\<int_fast8_t\>" +syn match Type "\<bit_not\>" +syn match Type "\<pthread_spinlock_t\>" +syn match Type "\<new_handler\>" +syn match Function "\<bind1st\>" +syn match Function "\<basic_string\>" +syn match Function "\<showmanyc\>" +syn match Function "\<\~allocator\>" +syn match Function "\<isdigit\>" +syn match Function "\<name\>" +syn match Function "\<epptr\>" +syn match Function "\<ctype\>" +syn match Function "\<showpos\>" +syn match Type "\<ios\>" +syn match Type "\<is_default_constructible\>" +syn match Type "\<mask\>" +syn match Function "\<iscntrl\>" +syn match Type "\<iter_type\>" +syn match Function "\<unary_negate\>" +syn match Type "\<tuple_element_t\>" +syn match Function "\<reference_wrapper\>" +syn match Type "\<has_virtual_destructor\>" +syn match Type "\<pthread_key_t\>" +syn match Function "\<stold\>" +syn match Type "\<is_copy_constructible\>" +syn match Function "\<tellp\>" +syn match Function "\<end\>" +syn match Special "\<alignment_of_v\>" +syn match Type "\<pointer_traits\>" +syn match Type "\<register_t\>" +syn match Function "\<ptr_fun\>" +syn match Function "\<front\>" +syn match Type "\<is_error_code_enum\>" +syn match Special "\<is_literal_type_v\>" +syn match Function "\<\~sentry\>" +syn match Type "\<size_type\>" +syn match Function "\<sputbackc\>" +syn match Function "\<capacity\>" +syn match Type "\<int_least64_t\>" +syn match Special "\<is_invocable_r_v\>" +syn match Type "\<integral_constant\>" +syn match Function "\<seekg\>" +syn match Special "\<is_aggregate_v\>" +syn match Function "\<numpunct\>" +syn match Type "\<suseconds_t\>" +syn match Type "\<invoke_result\>" +syn match Special "\<is_copy_constructible_v\>" +syn match Type "\<ostringstream\>" +syn match Function "\<max_size\>" +syn match Type "\<is_trivial\>" +syn match Type "\<is_nothrow_constructible\>" +syn match Special "\<is_enum_v\>" +syn match Function "\<bad_alloc\>" +syn match Function "\<fpos\>" +syn match Function "\<not1\>" +syn match Function "\<collate_byname\>" +syn match Function "\<do_compare\>" +syn match Type "\<stringbuf\>" +syn match Function "\<seekpos\>" +syn match Function "\<mem_fun\>" +syn match Function "\<lower_bound\>" +syn match Function "\<pbackfail\>" +syn match Special "\<is_object_v\>" +syn match Type "\<is_array\>" +syn match Function "\<nested_ptr\>" +syn match Type "\<is_swappable\>" +syn match Function "\<destroy_n\>" +syn match Function "\<rethrow_if_nested\>" +syn match Type "\<u32streampos\>" +syn match Type "\<void_pointer\>" +syn match Special "\<is_null_pointer_v\>" +syn match Function "\<pbase\>" +syn match Type "\<divides\>" +syn match Function "\<rdstate\>" +syn match Function "\<endl\>" +syn match Special "\<is_rvalue_reference_v\>" +syn match Type "\<is_nothrow_destructible\>" +syn match Type "\<add_volatile_t\>" +syn match Function "\<eof\>" +syn match Type "\<ushort\>" +syn match Function "\<stoul\>" +syn match Function "\<sgetn\>" +syn match Type "\<propagate_on_container_copy_assignment\>" +syn match Function "\<rdbuf\>" +syn match Type "\<div_t\>" +syn match Function "\<seekoff\>" +syn match Type "\<wstreampos\>" +syn match Type "\<u_int64_t\>" +syn match Function "\<toupper\>" +syn match Function "\<const_mem_fun_t\>" +syn match Function "\<noshowpos\>" +syn match Type "\<aligned_storage\>" +syn match Function "\<forward\>" +syn match Function "\<type_info\>" +syn match Type "\<const_reference\>" +syn match Function "\<exception\>" +syn match Function "\<system_error\>" +syn match Function "\<unsetf\>" +syn match Function "\<\~basic_iostream\>" +syn match Function "\<copy\>" +syn match Function "\<sync\>" +syn match Function "\<binder1st\>" +syn match Type "\<underlying_type\>" +syn match Function "\<to_int_type\>" +syn match Type "\<wiostream\>" +syn match Type "\<uint8_t\>" +syn match Function "\<isspace\>" +syn match Function "\<pubsync\>" +syn match Function "\<destroy\>" +syn match Function "\<noshowpoint\>" +syn match Function "\<unitbuf\>" +syn match Type "\<input_iterator_tag\>" +syn match Function "\<lexicographical_compare\>" +syn match Type "\<common_type\>" +syn match Type "\<is_constructible\>" +syn match Function "\<lt\>" +syn match Type "\<wctrans_t\>" +syn match Function "\<snextc\>" +syn match Function "\<back_inserter\>" +syn match Special "\<is_pointer_v\>" +syn match Type "\<error_t\>" +syn match Function "\<putback\>" +syn match Function "\<\~ctype_byname\>" +syn match Function "\<const_mem_fun1_t\>" +syn match Type "\<u16string\>" +syn match Type "\<locale_t\>" +syn match Function "\<get_allocator\>" +syn match Function "\<rfind\>" +syn match Type "\<wofstream\>" +syn match Function "\<c_str\>" +syn match Type "\<add_volatile\>" +syn match Function "\<tie\>" +syn match Type "\<u_long\>" +syn match Type "\<add_const_t\>" +syn match Function "\<mem_fun1_t\>" +syn match Special "\<is_default_constructible_v\>" +syn match Function "\<destroy_at\>" +syn match Type "\<fsfilcnt_t\>" +syn match Special "\<in_place_index\>" +syn match Special "\<is_member_object_pointer_v\>" +syn match Function "\<num_put\>" +syn match Special "\<is_nothrow_swappable_v\>" +syn match Type "\<propagate_on_container_swap\>" +syn match Type "\<integer_sequence\>" +syn match Type "\<is_aggregate\>" +syn match Type "\<pthread_barrier_t\>" +syn match Type "\<remove_pointer_t\>" +syn match Special "\<is_nothrow_assignable_v\>" +syn match Type "\<cookie_io_functions_t\>" +syn match Type "\<FILE\>" +syn match Type "\<add_pointer_t\>" +syn match Function "\<bad_array_new_length\>" +syn match Special "\<is_compound_v\>" +syn match Function "\<rbegin\>" +syn match Function "\<setstate\>" +syn match Type "\<ifstream\>" +syn match Type "\<is_nothrow_copy_assignable\>" +syn match Type "\<make_unsigned\>" +syn match Type "\<plus\>" +syn match Function "\<fail\>" +syn match Function "\<deallocate\>" +syn match Type "\<int32_t\>" +syn match Function "\<istreambuf_iterator\>" +syn match Special "\<is_assignable_v\>" +syn match Function "\<make_error_code\>" +syn match Function "\<locale\>" +syn match Function "\<append\>" +syn match Special "\<is_trivially_default_constructible_v\>" +syn match Type "\<max_align_t\>" +syn match Type "\<is_assignable\>" +syn match Type "\<va_list\>" +syn match Special "\<is_fundamental_v\>" +syn match Function "\<remove_suffix\>" +syn match Type "\<stringstream\>" +syn match Type "\<greater_equal\>" +syn match Type "\<itimerspec\>" +syn match Type "\<greater\>" +syn match Type "\<void_t\>" +syn match Type "\<is_nothrow_default_constructible\>" +syn match Type "\<rank\>" +syn match Function "\<do_thousands_sep\>" +syn match Type "\<pthread_once_t\>" +syn match Type "\<blkcnt_t\>" +syn match Function "\<basic_streambuf\>" +syn match Function "\<\~__new_allocator\>" +syn match Function "\<table\>" +syn match Type "\<uintmax_t\>" +syn match Type "\<not_equal_to\>" +syn match Function "\<find_last_not_of\>" +syn match Function "\<\~collate_byname\>" +syn match Function "\<construct\>" +syn match Type "\<openmode\>" +syn match Function "\<assign\>" +syn match Type "\<add_cv\>" +syn match Function "\<equal\>" +syn match Function "\<width\>" +syn match Type "\<type\>" +syn match Type "\<char_type\>" +syn match Function "\<skipws\>" +syn match Type "\<multiplies\>" +syn match Type "\<ostream\>" +syn match Type "\<id_t\>" +syn match Type "\<wistringstream\>" +syn match Type "\<const_pointer\>" +syn match Type "\<int16_t\>" +syn match Function "\<pubsetbuf\>" +syn match Type "\<myint\>" +syn match Type "\<timer_t\>" +syn match Type "\<wstring_view\>" +syn match Type "\<is_rvalue_reference\>" +syn match Type "\<is_move_constructible\>" +syn match Function "\<\~collate\>" +syn match Type "\<make_signed_t\>" +syn match Type "\<is_nothrow_swappable\>" +syn match Type "\<is_same\>" +syn match Function "\<shrink_to_fit\>" +syn match Type "\<value_t\>" +syn match Function "\<stoull\>" +syn match Type "\<iterator_type\>" +syn match Type "\<is_pointer\>" +syn match Type "\<key_t\>" +syn match Type "\<hash\>" +syn match Type "\<wstringstream\>" +syn match Type "\<terminate_handler\>" +syn match Function "\<\~__pthread_cleanup_class\>" +syn match Function "\<is\>" +syn match Function "\<ispunct\>" +syn match Function "\<data\>" +syn match Type "\<fsfilcnt64_t\>" +syn match Function "\<push_back\>" +syn match Function "\<find_last_of\>" +syn match Function "\<mem_fun_ref_t\>" +syn match Function "\<rend\>" +syn match Type "\<is_union\>" +syn match Type "\<int_fast32_t\>" +syn match Special "\<piecewise_construct\>" +syn match Function "\<hex\>" +syn match Type "\<is_const\>" +syn match Function "\<\~__numpunct_cache\>" +syn match Type "\<make_unsigned_t\>" +syn match Type "\<state_type\>" +syn match Type "\<const_iterator\>" +syn match Type "\<u_quad_t\>" +syn match Function "\<eback\>" +syn match Type "\<is_trivially_move_assignable\>" +syn match Type "\<ostream_type\>" +syn match Function "\<mem_fun_t\>" +syn match Function "\<basic_string_view\>" +syn match Function "\<bad\>" +syn match Type "\<istream\>" +syn match Type "\<pthread_condattr_t\>" +syn match Type "\<true_type\>" +syn match Function "\<addressof\>" +syn match Function "\<set_rdbuf\>" +syn match Type "\<pthread_cond_t\>" +syn match Type "\<disjunction\>" +syn match Type "\<u32string_view\>" +syn match Function "\<has_facet\>" +syn match Function "\<at\>" +syn match Type "\<uint_least16_t\>" +syn match Special "\<is_union_v\>" +syn match Function "\<pptr\>" +syn match Special "\<is_function_v\>" +syn match Special "\<is_base_of_v\>" +syn match Function "\<mem_fun_ref\>" +syn match Type "\<ctype_base\>" +syn match Type "\<reverse_iterator\>" +syn match Type "\<int_fast16_t\>" +syn match Special "\<is_trivially_constructible_v\>" +syn match Special "\<is_same_v\>" +syn match Function "\<make_reverse_iterator\>" +syn match Function "\<\~basic_ios\>" +syn match Type "\<decay_t\>" +syn match Type "\<int_least32_t\>" +syn match Type "\<timeval\>" +syn match Function "\<setp\>" +syn match Type "\<wostream\>" +syn match Function "\<basic_istream\>" +syn match Type "\<rebind_traits\>" +syn match Function "\<ref\>" +syn match Function "\<\~num_get\>" +syn match Type "\<fd_mask\>" +syn match Type "\<fmtflags\>" +syn match Type "\<nlink_t\>" +syn match Function "\<exceptions\>" +syn match Function "\<failed\>" +syn match Type "\<wostringstream\>" +syn match Function "\<binary_negate\>" +syn match Function "\<make_pair\>" +syn match Function "\<wcsstr\>" +syn match Special "\<is_swappable_with_v\>" +syn match Special "\<is_trivial_v\>" +syn match Type "\<enable_if_t\>" +syn match Type "\<event_callback\>" +syn match Type "\<drand48_data\>" +syn match Function "\<facet\>" +syn match Function "\<gbump\>" +syn match Special "\<is_swappable_v\>" +syn match Type "\<underlying_type_t\>" +syn match Function "\<\~_Save_errno\>" +syn match Function "\<wmemchr\>" +syn match Function "\<boolalpha\>" +syn match Function "\<\~basic_streambuf\>" +syn match Special "\<is_nothrow_copy_constructible_v\>" +syn match Type "\<ldiv_t\>" +syn match Type "\<pid_t\>" +syn match Special "\<is_array_v\>" +syn match Type "\<result_of_t\>" +syn match Function "\<uflow\>" +syn match Special "\<is_unsigned_v\>" +syn match Type "\<fd_set\>" +syn match Function "\<\~exception_ptr\>" +syn match Type "\<make_integer_sequence\>" +syn match Function "\<bad_cast\>" +syn match Type "\<ptrdiff_t\>" +syn match Type "\<streampos\>" +syn match Type "\<cpu_set_t\>" +syn match Function "\<stod\>" +syn match Type "\<blksize_t\>" +syn match Function "\<do_narrow\>" +syn match Type "\<remove_const_t\>" +syn match Function "\<pointer_to_unary_function\>" +syn match Type "\<wctype_t\>" +syn match Function "\<showpoint\>" +syn match Function "\<\~numpunct_byname\>" +syn match Special "\<is_invocable_v\>" +syn match Type "\<allocator_type\>" +syn match Special "\<is_final_v\>" +syn match Function "\<xsgetn\>" +syn match Type "\<is_destructible\>" +syn match Type "\<fsid_t\>" +syn match Function "\<stoll\>" +syn match Function "\<initializer_list\>" +syn match Type "\<iostate\>" +syn match Type "\<add_lvalue_reference\>" +syn match Special "\<is_error_condition_enum_v\>" +syn match Function "\<isupper\>" +syn match Function "\<unget\>" +syn match Type "\<logical_or\>" +syn match Type "\<u16string_view\>" +syn match Function "\<front_inserter\>" +syn match Type "\<streamsize\>" +syn match Function "\<thousands_sep\>" +syn match Function "\<allocator\>" +syn match Type "\<make_signed\>" +syn match Function "\<const_mem_fun_ref_t\>" +syn match Function "\<underflow\>" +syn match Function "\<stof\>" +syn match Type "\<is_nothrow_assignable\>" +syn match Type "\<pointer\>" +syn match Type "\<less\>" +syn match Function "\<bad_exception\>" +syn match Function "\<pword\>" +syn match Type "\<add_pointer\>" +syn match Type "\<intptr_t\>" +syn match Type "\<u_int16_t\>" +syn match Special "\<is_const_v\>" +syn match Type "\<uintptr_t\>" +syn match Function "\<declval\>" +syn match Function "\<const_mem_fun1_ref_t\>" +syn match Type "\<timex\>" +syn match Function "\<left\>" +syn match Type "\<wstringbuf\>" +syn match Type "\<remove_all_extents\>" +syn match Type "\<first_argument_type\>" +syn match Function "\<ends\>" +syn match Function "\<imbue\>" +syn match Type "\<streambuf_type\>" +syn match Function "\<exception_ptr\>" +syn match Type "\<filebuf\>" +syn match Type "\<conjunction\>" +syn match Type "\<random_access_iterator_tag\>" +syn match Type "\<uint16_t\>" +syn match Function "\<do_widen\>" +syn match Special "\<is_trivially_move_assignable_v\>" +syn match Type "\<result_of\>" +syn match Type "\<alignment_of\>" +syn match Type "\<is_standard_layout\>" +syn match Type "\<negate\>" +syn match Type "\<is_reference\>" +syn match Function "\<tellg\>" +syn match Function "\<iword\>" +syn match Type "\<istringstream\>" +syn match Function "\<basic_iostream\>" +syn match Type "\<sigset_t\>" +syn match Function "\<throw_with_nested\>" +syn match Type "\<result_type\>" +syn match Type "\<in_place_type_t\>" +syn match Function "\<next\>" +syn match Type "\<remove_cv_t\>" +syn match Function "\<insert_iterator\>" +syn match Type "\<is_scalar\>" +syn match Function "\<mem_fun1_ref_t\>" +syn match Function "\<min\>" +syn match Type "\<add_cv_t\>" +syn match Function "\<error_condition\>" +syn match Function "\<copyfmt\>" +syn match Type "\<is_literal_type\>" +syn match Type "\<is_nothrow_move_assignable\>" +syn match Special "\<is_void_v\>" +syn match Type "\<mode_t\>" +syn match Type "\<string\>" +syn match Type "\<tuple_element\>" +syn match Type "\<u_int\>" +syn match Type "\<off64_t\>" +syn match Type "\<bit_or\>" +syn match Type "\<sched_param\>" +syn match Function "\<flush\>" +syn match Function "\<rethrow_nested\>" +syn match Type "\<second_argument_type\>" +syn match Function "\<cref\>" +syn match Special "\<is_nothrow_constructible_v\>" +syn match Special "\<is_error_code_enum_v\>" +syn match Type "\<blkcnt64_t\>" +syn match Function "\<compare\>" +syn match Function "\<erase\>" +syn match Function "\<bind2nd\>" +syn match Type "\<aligned_storage_t\>" +syn match Function "\<internal\>" +syn match Function "\<move_if_noexcept\>" +syn match Function "\<clear\>" +syn match Type "\<allocator_traits\>" +syn match Function "\<insert\>" +syn match Function "\<pubseekpos\>" +syn match Type "\<wifstream\>" +syn match Type "\<reference\>" +syn match Function "\<back\>" +syn match Type "\<is_final\>" +syn match Type "\<in_place_t\>" +syn match Function "\<gptr\>" +syn match Function "\<not_eof\>" +syn match Function "\<eq\>" +syn match Type "\<is_always_equal\>" +syn match Type "\<wstring\>" +syn match Type "\<quad_t\>" +syn match Function "\<pubimbue\>" +syn match Type "\<uint_fast8_t\>" +syn match Type "\<wfilebuf\>" +syn match Type "\<is_void\>" +syn match Special "\<is_abstract_v\>" +syn match Type "\<ino64_t\>" +syn match Type "\<bool_constant\>" +syn match Type "\<lconv\>" +syn match Type "\<second_type\>" +syn match Function "\<sputc\>" +syn match Special "\<is_trivially_assignable_v\>" +syn match Special "\<in_place\>" +syn match Function "\<scan_is\>" +syn match Special "\<is_integral_v\>" +syn match Function "\<to_string\>" +syn match Function "\<move\>" +syn match Type "\<gid_t\>" +syn match Type "\<minus\>" +syn match Type "\<int_least16_t\>" +syn match Type "\<logical_not\>" +syn match Type "\<uint_least64_t\>" +syn match Type "\<is_member_pointer\>" +syn match Type "\<uint_least8_t\>" +syn match Type "\<ulong\>" +syn match Function "\<nounitbuf\>" +syn match Type "\<output_iterator_tag\>" +syn match Type "\<argument_type\>" +syn match Function "\<do_grouping\>" +syn match Type "\<remove_extent\>" +syn match Type "\<u16streampos\>" +syn match Special "\<is_reference_v\>" +syn match Special "\<is_empty_v\>" +syn match Function "\<size\>" +syn match Type "\<uint64_t\>" +syn match Type "\<remove_cv\>" +syn match Function "\<error_code\>" +syn match Special "\<is_floating_point_v\>" +syn match Type "\<is_null_pointer\>" +syn match Function "\<not2\>" +syn match Type "\<is_nothrow_invocable\>" +syn match Type "\<iterator\>" +syn match Type "\<intmax_t\>" +syn match Type "\<propagate_on_container_move_assignment\>" +syn match Function "\<isalnum\>" +syn match Type "\<wint_t\>" +syn match Special "\<is_nothrow_move_assignable_v\>" +syn match Function "\<replace\>" +syn match Type "\<pair\>" +syn match Function "\<narrow\>" +syn match Type "\<is_unsigned\>" +syn match Function "\<fill_n\>" +syn match Function "\<oct\>" +syn match Type "\<istream_type\>" +syn match Type "\<equal_to\>" +syn match Function "\<dec\>" +syn match Type "\<pthread_attr_t\>" +syn match Type "\<element_type\>" +syn match Function "\<length\>" +syn match Function "\<eq_int_type\>" +syn match Special "\<is_nothrow_default_constructible_v\>" +syn match Function "\<move_backward\>" +syn match Type "\<timespec\>" +syn match Function "\<get\>" +syn match Special "\<rank_v\>" +syn match Function "\<nested_exception\>" +syn match Function "\<noboolalpha\>" +syn match Type "\<iterator_category\>" +syn match Function "\<\~basic_istream\>" +syn match Type "\<is_fundamental\>" +syn match Special "\<is_nothrow_move_constructible_v\>" +syn match Function "\<reverse_iterator\>" +syn match Function "\<cend\>" +syn match Type "\<char_traits\>" +syn match Type "\<useconds_t\>" +syn match Function "\<falsename\>" +syn match Type "\<uint_fast16_t\>" +syn match Function "\<to_char_type\>" +syn match Function "\<getline\>" +syn match Type "\<fsblkcnt64_t\>" +syn match Special "\<in_place_type\>" +syn match Function "\<\~basic_ostream\>" +syn match Function "\<readsome\>" +syn match Type "\<is_transparent\>" +syn match Function "\<isprint\>" +syn match Type "\<int_least8_t\>" +syn match Function "\<do_get\>" +syn match Type "\<common_type_t\>" +syn match Function "\<gcount\>" +syn match Type "\<u_char\>" +syn match Type "\<is_trivially_copyable\>" +syn match Type "\<remove_pointer\>" +syn match Special "\<is_convertible_v\>" +syn match Function "\<num_get\>" +syn match Special "\<is_constructible_v\>" +syn match Type "\<string_view\>" +syn match Type "\<is_trivially_destructible\>" +syn match Type "\<loff_t\>" +syn match Function "\<transform\>" +syn match Type "\<traits_type\>" +syn match Function "\<ws\>" +syn match Type "\<is_integral\>" +syn match Type "\<invoke_result_t\>" +syn match Function "\<empty\>" +syn match Function "\<div\>" +syn match Function "\<showbase\>" +syn match Function "\<bad_typeid\>" +syn match Function "\<value\>" +syn match Function "\<begin\>" +syn match Function "\<copy_backward\>" +syn match Function "\<move_iterator\>" +syn match Type "\<is_invocable\>" +syn match Function "\<pair\>" +syn match Function "\<find\>" +syn match Function "\<isblank\>" +syn match Special "\<negation_v\>" +syn match Function "\<islower\>" +syn match Function "\<find_first_not_of\>" +syn match Special "\<global_var\>" +syn match Special "\<is_nothrow_invocable_r_v\>" +syn match Function "\<is_permutation\>" +syn match Type "\<negation\>" +syn match Type "\<other\>" +syn match Type "\<streamoff\>" +syn match Function "\<numpunct_byname\>" +syn match Function "\<put\>" +syn match Type "\<pthread_mutex_t\>" +syn match Type "\<comparison_fn_t\>" +syn match Type "\<bit_xor\>" +syn match Type "\<is_nothrow_move_constructible\>" +syn match Type "\<remove_reference\>" +syn match Function "\<pointer_to_binary_function\>" +syn match Type "\<clockid_t\>" +syn match Type "\<fsblkcnt_t\>" +syn match Special "\<is_move_constructible_v\>" +syn match Type "\<make_index_sequence\>" +syn match Type "\<ssize_t\>" +syn match Type "\<pthread_rwlock_t\>" +syn match Type "\<uint_fast32_t\>" +syn match Type "\<tuple_size\>" +syn match Function "\<do_truename\>" +syn match Type "\<mbstate_t\>" +syn match Type "\<size_t\>" +syn match Special "\<is_polymorphic_v\>" +syn match Function "\<sputn\>" +syn match Function "\<prev\>" +syn match Function "\<decimal_point\>" +syn match Function "\<id\>" +syn match Special "\<is_signed_v\>" +syn match Function "\<scientific\>" +syn match Special "\<is_member_function_pointer_v\>" +syn match Function "\<pointer_to\>" +syn match Type "\<wstreambuf\>" +syn match Function "\<do_hash\>" +syn match Type "\<caddr_t\>" +syn match Special "\<is_nothrow_copy_assignable_v\>" +syn match Function "\<read\>" +syn match Function "\<\~__ctype_abstract_base\>" +syn match Function "\<\~_Guard\>" +syn match Special "\<is_nothrow_destructible_v\>" +syn match Function "\<category\>" +syn match Type "\<u_int32_t\>" +syn match Type "\<fpos64_t\>" +syn match Type "\<u_int8_t\>" +syn match Function "\<setf\>" +syn match Function "\<iter_swap\>" +syn match Type "\<is_arithmetic\>" +syn match Type "\<category\>" +syn match Function "\<state\>" +syn match Function "\<flags\>" +syn match Type "\<basic_string\>" +syn match Type "\<is_trivially_copy_assignable\>" +syn match Function "\<nouppercase\>" +syn match Type "\<is_trivially_constructible\>" +syn match Type "\<is_object\>" +syn match Type "\<is_enum\>" +syn match Function "\<noskipws\>" +syn match Type "\<bidirectional_iterator_tag\>" +syn match Type "\<cookie_write_function_t\>" +syn match Type "\<remove_all_extents_t\>" +syn match Type "\<is_nothrow_invocable_r\>" +syn match Function "\<noshowbase\>" +syn match Type "\<is_member_function_pointer\>" +syn match Function "\<pubseekoff\>" +syn match Type "\<has_unique_object_representations\>" +syn match Type "\<is_trivially_default_constructible\>" +syn match Function "\<defaultfloat\>" +syn match Type "\<int_type\>" +syn match Type "\<off_type\>" +syn match Function "\<basic_ios\>" +syn match Function "\<precision\>" +syn match Function "\<binder2nd\>" +syn match Function "\<pop_back\>" +syn match Function "\<sungetc\>" +syn match Type "\<is_empty\>" +syn match Function "\<overflow\>" +syn match Type "\<pthread_mutexattr_t\>" +syn match Function "\<advance\>" +syn match Type "\<remove_volatile\>" +syn match Function "\<wcsrchr\>" +syn match Type "\<int64_t\>" +syn match Function "\<inserter\>" +syn match Type "\<extent\>" +syn match Function "\<good\>" +syn match Function "\<distance\>" +syn match Function "\<main\>" +syn match Function "\<isalpha\>" +syn match Type "\<piecewise_construct_t\>" +syn match Type "\<fstream\>" +syn match Type "\<iterator_traits\>" +syn match Function "\<allocate\>" +syn match Type "\<pthread_rwlockattr_t\>" +syn match Function "\<isxdigit\>" +syn match Type "\<container_type\>" +syn match Type "\<is_member_object_pointer\>" +syn match Special "\<is_nothrow_swappable_with_v\>" +syn match Function "\<front_insert_iterator\>" +syn match Function "\<hexfloat\>" +syn match Type "\<is_trivially_copy_constructible\>" +syn match Type "\<is_convertible\>" +syn match Type "\<nothrow_t\>" +syn match Function "\<mismatch\>" +syn match Special "\<conjunction_v\>" +syn match Type "\<add_rvalue_reference\>" +syn match Function "\<crend\>" +syn match Function "\<abs\>" +syn match Type "\<rebind_alloc\>" +syn match Function "\<crbegin\>" +syn match Function "\<find_first_of\>" +syn match Type "\<iostream\>" +syn match Type "\<random_data\>" +syn match Function "\<code\>" +syn match Type "\<cookie_read_function_t\>" +syn match Type "\<enable_if\>" +syn match Function "\<uppercase\>" +syn match Type "\<wistream\>" +syn match Type "\<is_nothrow_swappable_with\>" +syn match Type "\<is_trivially_move_constructible\>" +syn match Function "\<scan_not\>" +syn match Function "\<getloc\>" +syn match Type "\<is_floating_point\>" +syn match Special "\<tuple_size_v\>" +syn match Function "\<launder\>" +syn match Type "\<is_copy_assignable\>" +syn match Function "\<hash\>" +syn match Function "\<fixed\>" +syn match Type "\<string_type\>" +syn match Type "\<difference_type\>" +syn match Type "\<uint\>" +syn match Special "\<is_destructible_v\>" +syn match Function "\<make_error_condition\>" +syn match Function "\<setg\>" +syn match Function "\<stoi\>" +syn match Type "\<const_void_pointer\>" +syn match Function "\<xsputn\>" +syn match Type "\<aligned_union_t\>" +syn match Type "\<clock_t\>" +syn match Type "\<conditional_t\>" +syn match Special "\<has_virtual_destructor_v\>" +syn match Special "\<extent_v\>" +syn match Special "\<is_arithmetic_v\>" +syn match Type "\<lldiv_t\>" +syn match Type "\<const_reverse_iterator\>" +syn match Function "\<ostreambuf_iterator\>" +syn match Function "\<sbumpc\>" +syn match Type "\<int_fast64_t\>" +syn match Function "\<reserve\>" +syn match Function "\<basic_ostream\>" +syn match Type "\<is_base_of\>" +syn match Type "\<is_polymorphic\>" +syn match Type "\<uint_fast64_t\>" +syn match Type "\<bit_and\>" +syn match Function "\<do_transform\>" +syn match Type "\<nullptr_t\>" +syn match Special "\<is_nothrow_invocable_v\>" +syn match Type "\<add_lvalue_reference_t\>" +syn match Function "\<truename\>" +syn match Function "\<right\>" +syn match Function "\<egptr\>" +syn match Function "\<max\>" +syn match Function "\<select_on_container_copy_construction\>" +syn match Type "\<tm\>" +syn match Function "\<make_move_iterator\>" +syn match Special "\<is_scalar_v\>" +syn match Type "\<u_short\>" +syn match Type "\<int8_t\>" +syn match Type "\<value_type\>" +syn match Function "\<to_wstring\>" +syn match Type "\<is_volatile\>" +syn match Type "\<is_invocable_r\>" +syn match Type "\<is_move_assignable\>" +syn match Type "\<aligned_union\>" +syn match Type "\<is_signed\>" +syn match Function "\<cbegin\>" +syn match Function "\<peek\>" +syn match Function "\<substr\>" +syn match Function "\<wcschr\>" +syn match Special "\<is_member_pointer_v\>" +syn match Type "\<unexpected_handler\>" +syn match Type "\<daddr_t\>" +syn match Type "\<cookie_seek_function_t\>" +syn match Special "\<is_standard_layout_v\>" +syn match Type "\<remove_volatile_t\>" +syn match Function "\<combine\>" +syn match Type "\<time_t\>" +syn match Special "\<is_trivially_move_constructible_v\>" +syn match Function "\<seekp\>" +syn match Type "\<is_compound\>" +syn match Type "\<dev_t\>" +syn match Type "\<in_place_index_t\>" +syn match Type "\<remove_const\>" +syn match Function "\<tolower\>" +syn match Function "\<\~num_put\>" +syn match Type "\<is_nothrow_copy_constructible\>" +syn match Type "\<is_trivially_assignable\>" +syn match Type "\<is_swappable_with\>" +syn match Special "\<is_volatile_v\>" +syn match Function "\<\~__ptr_guard\>" +syn match Type "\<uint32_t\>" +syn match Type "\<add_const\>" +syn match Function "\<before\>" +syn match Function "\<pbump\>" +syn match Type "\<u32string\>" +syn match Special "\<disjunction_v\>" +syn match Special "\<is_trivially_copy_constructible_v\>" +syn match Type "\<index_sequence\>" +syn match Function "\<back_insert_iterator\>" +syn match Type "\<ino_t\>" +syn match Type "\<rebind\>" +syn match Function "\<do_decimal_point\>" +syn match Function "\<collate\>" +syn match Special "\<is_copy_assignable_v\>" +syn match Special "\<is_pod_v\>" +syn match Special "\<is_trivially_destructible_v\>" +syn match Type "\<index_sequence_for\>" +syn match Type "\<uid_t\>" +syn match Type "\<is_class\>" +syn match Type "\<off_t\>" +syn match Function "\<do_put\>" +syn match Type "\<pthread_barrierattr_t\>" +syn match Function "\<sentry\>" +syn match Function "\<swap_ranges\>" +syn match Function "\<resize\>" +syn match Function "\<make_exception_ptr\>" +syn match Function "\<message\>" +syn match Function "\<remove_prefix\>" +syn match Function "\<wcspbrk\>" +syn match Function "\<ctype_byname\>" +syn match Function "\<sgetc\>" +syn match Type "\<uint_least32_t\>" +syn match Function "\<widen\>" +syn match Type "\<seekdir\>" +syn match Function "\<setbuf\>" +syn match Type "\<cookie_close_function_t\>" +syn match Special "\<is_lvalue_reference_v\>" +syn match Special "\<is_class_v\>" +syn match Type "\<binary_function\>" +syn match Type "\<pos_type\>" +syn match Function "\<stol\>" diff --git a/hitags.py b/hitags.py new file mode 100755 index 0000000..919f3a1 --- /dev/null +++ b/hitags.py @@ -0,0 +1,155 @@ +#!/bin/env python3 + +import sys +import re +import csv +from subprocess import run, PIPE + +input_filename = '' +preprocessor='clang -fdirectives-only -E {input_} -o {output}' +tags_filename = 'vim.tags' +polution_directory = '.' + +def print2(s): + print(s, file=sys.stderr) + +def usage(name, x): + print2("Usage: {0} <options>".format(name)) + print2("\t-h") + print2("\t-i <file>") + print2("\t-p <cmd>") + print2("\t-t <path>") + exit(x) + +def opts(args): + global input_filename, preprocessor + + try: + i = args.index("--help") if "--help" in args else -1 + if i != -1: + usage(args[0], 1) + else: + for idx, arg in enumerate(args[1:]): + if arg in ("-h", "--help"): + usage(args[0], 0) + elif arg == "-i": + input_filename = args[idx + 2] + elif arg == "-p": + preprocessor = args[idx + 2] + elif arg == "-t": + polution_directory = args[idx + 2] + except IndexError: + usage(args[0], 1) + if input_filename == '': + usage(args[0], 1) + +def hi(group): + return 'syn match\t\t{group} \"\<{{kw}}\>\"'.format(group=group) + +targets = [ + { + 'type': 'v', + 'out': hi('Special') + }, + { + 'type': 'f', + 'out': hi('Function') + }, + { + 'type': 'p', + 'out': hi('Function') + }, + { + 'type': 't', + 'out': hi('Type') + }, + { + 'type': 's', + 'out': hi('Type') + }, + { + 'type': 'd', + 'out': hi('Constant') + }, + { + 'type': 'x', + 'out': hi('Identifier') + }, +] +PATTERN_INDEX = 1 - 1 +TYPE_INDEX = 4 - 1 + +def do_ignore(row): + IGNORE_IF_BEGINS_WITH = '!_' + for i in IGNORE_IF_BEGINS_WITH: + if row[0][0] == i: + return True + if row[PATTERN_INDEX].find('operator') != -1: + return True + return False + +def render(target, pattern): + return target['out'].format(kw=pattern) + +def mimetype(filename): + # Totally broken, it's left here as a reminder to not do this: + # cmd = "file -i {input_}".format(input_=filename) + cmd = "mimetype {input_}".format(input_=filename) + r = run(cmd, shell=True, stdout=PIPE) + r = r.stdout.decode('ascii').split(' ')[1].strip() + return r + +def preprocessfile(filename): + global preprocessor + output = polution_directory + "/" + "tags.i" + run(preprocessor.format(input_=filename, output=output), shell=True) + return out + +def file2tags(filename, flags): + global tags_filename, polution_directory + ctags_command = "ctags --recurse --extras=+F --kinds-C=+px {extras} -o {output} {input_}" + output = polution_directory + "/" + tags_filename + cmd = ctags_command.format(extras=flags, output=output, input_=filename) + print2(cmd) + run(cmd, shell=True) + return tags_filename + +def tags2hi(filename): + output = set() + try: + with open(filename) as f: + csv_reader = csv.reader(f, delimiter='\t') + for row in csv_reader: + if do_ignore(row): + continue + for t in targets: + try: + if t['type'] == row[TYPE_INDEX]: + output.add(render(t, re.escape(row[PATTERN_INDEX]))) + except: + print2(row) + except FileNotFoundError as e: + print2("No such file or directory.") + exit(1) + return output + +def main(argv): + global input_filename + opts(argv) + mime = mimetype(input_filename) + language = '' + flags = '' + if mime == 'text/x-csrc' or mime == 'text/x-chdr': + language = 'C' + elif mime == 'text/x-c++src' or mime == 'text/x-c++hdr': + language = 'C++' + if language != '': + input_filename = preprocessfile(input_filename) + flags += ' --language-force={0} '.format(language) + output = tags2hi(file2tags(input_filename, flags)) + output = sorted(output) + output = '\n'.join(output) + print(output) + +if __name__ == '__main__': + raise SystemExit(main(sys.argv)) diff --git a/hitags.vim b/hitags.vim new file mode 100644 index 0000000..6f0688a --- /dev/null +++ b/hitags.vim @@ -0,0 +1,65 @@ +" --- ------ ---- +" --- Config ---- +" --- ------ ---- + +" Folder to store all dynamically generated files in +" + tags files +" + highlighting scripts +" I do not recommend using '.' especially if you don't auto cd with vim +" ~/.vim/plugin/HiTags/ is guaranteed to exist after installation, +" thats why it's the default +" otherwise you are responsible for creating your own +let s:polution_directory = '~/.vim/plugin/HiTags/' + +" Compiler to use for preprocessing C/C++, so headers are respected +" Either use "clang" or "gcc" or something compatible, +" alternatively you will have to edit s:preprocessor +let s:preprocessor_executable = "clang" + +" --- --------------------------- --- +" --- Don't Touch --- +" --- Unless --- +" --- You know What You Are Doing --- +" --- --------------------------- --- +let s:preprocessor = s:preprocessor_executable . ' -fdirectives-only -E {input_} -o {output}' +let s:tags_filename = 'tags' +let s:tags_file = expand(s:polution_directory) . s:tags_filename +let s:tags_scriptname = 'tags.vim' +let s:tags_script = expand(s:polution_directory) . 'tags.vim' +" +let s:generator_script = '~/.vim/plugin/HiTags/hitags.py' +let s:generation_command = 'python ' . s:generator_script . + \ ' -i ' . expand('%:p') . + \ ' -p ' . s:preprocessor . + \ ' -t ' . s:polution_directory . + \ ' > ' . s:polution_directory . s:tags_script + +function! HiTagsUpdate() + let pid = system(s:generation_command) + + if v:shell_error != 0 + echohl ErrorMsg + echomsg "error: " . s:generator_script . " failed." + echohl NONE + return 1 + endif +endfunction + +function! HiTagsHighlight() + execute 'source ' . s:tags_script +endfunction + +function! HiTagsDo() + call HiTagsUpdate() + call HiTagsHighlight() +endfunction + +" --- Hook up everything --- +if exists('g:hitags_events') + for e in g:hitags_events + execute "autocmd " . e . " * HiTagsDo" + endfor +endif +command! HiTagsUpdate :call HiTagsUpdate() +command! HiTagsHighlight :call HiTagsHighlight() +command! HiTagsDo :call HiTagsDo() diff --git a/object/.gitkeep b/object/.gitkeep new file mode 100644 index 0000000..e69de29