Mercurial > vim
annotate src/nbdebug.c @ 32248:8e2ecfebd136 v9.0.1455
patch 9.0.1455: C++ 20 modules are not recognized
Commit: https://github.com/vim/vim/commit/732d69e1918b28ad0fe16eb9bc5a776c7958122b
Author: Ben Jackson <puremourning@gmail.com>
Date: Sat Apr 15 18:17:17 2023 +0100
patch 9.0.1455: C++ 20 modules are not recognized
Problem: C++ 20 modules are not recognized.
Solution: Add patterns to recognize C++ 20 modules as "cpp". (Ben Jackson,
closes #12261)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 15 Apr 2023 19:30:03 +0200 |
parents | 50555279168b |
children |
rev | line source |
---|---|
10042
4aead6a9b7a9
commit https://github.com/vim/vim/commit/edf3f97ae2af024708ebb4ac614227327033ca47
Christian Brabandt <cb@256bit.org>
parents:
4352
diff
changeset
|
1 /* vi:set ts=8 sw=8 noet: |
7 | 2 * |
3 * VIM - Vi IMproved by Bram Moolenaar | |
4 * Visual Workshop integration by Gordon Prieur | |
5 * | |
6 * Do ":help uganda" in Vim to read copying and usage conditions. | |
7 * Do ":help credits" in Vim to see a list of people who contributed. | |
8 * See README.txt for an overview of the Vim source code. | |
9 */ | |
10 | |
11 /* | |
12 * NetBeans Debugging Tools. What are these tools and why are they important? | |
13 * There are two main tools here. The first tool is a tool for delaying or | |
14 * stopping gvim during startup. The second tool is a protocol log tool. | |
15 * | |
16 * The startup delay tool is called nbdebug_wait(). This is very important for | |
17 * debugging startup problems because gvim will be started automatically from | |
18 * netbeans and cannot be run directly from a debugger. The only way to debug | |
19 * a gvim started by netbeans is by attaching a debugger to it. Without this | |
4352 | 20 * tool all startup code will have completed before you can get the pid and |
7 | 21 * attach. |
22 * | |
23 * The second tool is a log tool. | |
24 * | |
25 * This code must have NBDEBUG defined for it to be compiled into vim/gvim. | |
26 */ | |
27 | |
28 #ifdef NBDEBUG | |
29 | |
30 #include "vim.h" | |
31 | |
32 FILE *nb_debug = NULL; | |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
33 u_int nb_dlevel = 0; // nb_debug verbosity level |
7 | 34 |
25475
038eb6d9003a
patch 8.2.3274: macro for printf format check can be simplified
Bram Moolenaar <Bram@vim.org>
parents:
18808
diff
changeset
|
35 void nbdb(char *, ...) ATTRIBUTE_FORMAT_PRINTF(1, 2); |
7 | 36 |
37 static int lookup(char *); | |
1621 | 38 #ifdef USE_NB_ERRORHANDLER |
7 | 39 static int errorHandler(Display *, XErrorEvent *); |
40 #endif | |
41 | |
42 /* | |
43 * nbdebug_wait - This function can be used to delay or stop execution of vim. | |
10226
7a4fb555c83a
commit https://github.com/vim/vim/commit/9af418427652562384744648d7d173a4bfebba95
Christian Brabandt <cb@256bit.org>
parents:
10042
diff
changeset
|
44 * It's normally used to delay startup while attaching a |
15510
41fbbcea0f1b
patch 8.1.0763: nobody is using the Sun Workshop support
Bram Moolenaar <Bram@vim.org>
parents:
10226
diff
changeset
|
45 * debugger to a running process. Since NetBeans starts gvim |
7 | 46 * from a background process this is the only way to debug |
47 * startup problems. | |
48 */ | |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
49 void |
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
50 nbdebug_wait( |
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
51 u_int wait_flags, // tells what to do |
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
52 char *wait_var, // wait environment variable |
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
53 u_int wait_secs) // how many seconds to wait |
7 | 54 { |
55 | |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
56 init_homedir(); // not inited yet |
7 | 57 #ifdef USE_WDDUMP |
58 WDDump(0, 0, 0); | |
59 #endif | |
60 | |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
61 // for debugging purposes only |
31804
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
62 if (wait_flags & WT_ENV && wait_var && getenv(wait_var) != NULL) |
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
63 { |
7 | 64 sleep(atoi(getenv(wait_var))); |
31804
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
65 } |
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
66 else if (wait_flags & WT_WAIT && lookup("~/.gvimwait")) |
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
67 { |
7 | 68 sleep(wait_secs > 0 && wait_secs < 120 ? wait_secs : 20); |
31804
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
69 } |
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
70 else if (wait_flags & WT_STOP && lookup("~/.gvimstop")) |
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
71 { |
7 | 72 int w = 1; |
31804
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
73 while (w) |
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
74 { |
7 | 75 ; |
76 } | |
77 } | |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
78 } |
7 | 79 |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
80 void |
7 | 81 nbdebug_log_init( |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
82 char *log_var, // env var with log file |
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
83 char *level_var) // env var with nb_debug level |
7 | 84 { |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
85 char *file; // possible nb_debug output file |
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
86 char *cp; // nb_dlevel pointer |
7 | 87 |
16621
7ad3fc329e08
patch 8.1.1313: warnings for using localtime() and ctime()
Bram Moolenaar <Bram@vim.org>
parents:
15868
diff
changeset
|
88 if (log_var && (file = getenv(log_var)) != NULL) |
7ad3fc329e08
patch 8.1.1313: warnings for using localtime() and ctime()
Bram Moolenaar <Bram@vim.org>
parents:
15868
diff
changeset
|
89 { |
7 | 90 time_t now; |
91 | |
92 nb_debug = fopen(file, "a"); | |
93 time(&now); | |
16621
7ad3fc329e08
patch 8.1.1313: warnings for using localtime() and ctime()
Bram Moolenaar <Bram@vim.org>
parents:
15868
diff
changeset
|
94 fprintf(nb_debug, "%s", get_ctime(now, TRUE)); |
31804
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
95 if (level_var && (cp = getenv(level_var)) != NULL) |
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
96 { |
7 | 97 nb_dlevel = strtoul(cp, NULL, 0); |
31804
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
98 } |
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
99 else |
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
100 { |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
101 nb_dlevel = NB_TRACE; // default level |
7 | 102 } |
1621 | 103 #ifdef USE_NB_ERRORHANDLER |
104 XSetErrorHandler(errorHandler); | |
105 #endif | |
7 | 106 } |
107 | |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
108 } |
7 | 109 |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
110 void |
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
111 nbdbg(char *fmt, ...) |
7 | 112 { |
113 va_list ap; | |
114 | |
31804
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
115 if (nb_debug != NULL && nb_dlevel & NB_TRACE) |
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
116 { |
7 | 117 va_start(ap, fmt); |
118 vfprintf(nb_debug, fmt, ap); | |
119 va_end(ap); | |
120 fflush(nb_debug); | |
121 } | |
122 | |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
123 } |
7 | 124 |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
125 static int |
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
126 lookup(char *file) |
7 | 127 { |
128 char buf[BUFSIZ]; | |
129 | |
130 expand_env((char_u *) file, (char_u *) buf, BUFSIZ); | |
131 return | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15510
diff
changeset
|
132 #ifndef FEAT_GUI_MSWIN |
7 | 133 (access(buf, F_OK) == 0); |
134 #else | |
135 (access(buf, 0) == 0); | |
136 #endif | |
137 | |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
138 } |
7 | 139 |
1621 | 140 #ifdef USE_NB_ERRORHANDLER |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
141 static int |
7 | 142 errorHandler( |
143 Display *dpy, | |
144 XErrorEvent *err) | |
145 { | |
146 char msg[256]; | |
147 char buf[256]; | |
148 | |
149 XGetErrorText(dpy, err->error_code, msg, sizeof(msg)); | |
150 nbdbg("\n\nNBDEBUG Vim: X Error of failed request: %s\n", msg); | |
151 | |
152 sprintf(buf, "%d", err->request_code); | |
153 XGetErrorDatabaseText(dpy, | |
154 "XRequest", buf, "Unknown", msg, sizeof(msg)); | |
155 nbdbg("\tMajor opcode of failed request: %d (%s)\n", | |
156 err->request_code, msg); | |
31804
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
157 if (err->request_code > 128) |
50555279168b
patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents:
25475
diff
changeset
|
158 { |
7 | 159 nbdbg("\tMinor opcode of failed request: %d\n", |
160 err->minor_code); | |
161 } | |
162 | |
163 return 0; | |
164 } | |
165 #endif | |
166 | |
167 | |
18808
7982f65d8f54
patch 8.1.2392: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
16621
diff
changeset
|
168 #endif // NBDEBUG |