1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
//! Logging macros for kernel messages.
//!
//! Linux equivalent: `pr_err()`, `pr_warn()`, `pr_info()`, `pr_debug()` in `include/linux/printk.h`
//!
//! These macros provide a convenient way to log messages at different severity levels.
//! They check the log level before formatting to avoid allocation overhead when
//! logging is disabled.
/// Logs a message at the Error level.
///
/// Use for critical errors that require immediate attention and may prevent
/// normal operation.
///
/// # Example
///
/// ```
/// use reovim_kernel::api::v1::pr_err;
///
/// let buffer_id = 42;
/// pr_err!("failed to save buffer {}", buffer_id);
/// pr_err!("critical error occurred");
/// ```
/// Logs a message at the Warn level.
///
/// Use for warning conditions that don't prevent operation but indicate
/// potential problems.
///
/// # Example
///
/// ```
/// use reovim_kernel::api::v1::pr_warn;
///
/// let path = "/tmp/file.txt";
/// pr_warn!("file {} not found, using default", path);
/// pr_warn!("deprecated configuration option used");
/// ```
/// Logs a message at the Info level.
///
/// Use for general informational messages about normal operation.
///
/// # Example
///
/// ```
/// use reovim_kernel::api::v1::pr_info;
///
/// pr_info!("editor started");
/// pr_info!("opened {} buffers", 3);
/// ```
/// Logs a message at the Debug level.
///
/// Use for detailed diagnostic information useful during development.
/// These messages are typically disabled in release builds.
///
/// # Example
///
/// ```
/// use reovim_kernel::api::v1::pr_debug;
///
/// let cursor_pos = (10, 5);
/// pr_debug!("cursor moved to {:?}", cursor_pos);
/// pr_debug!("entering function");
/// ```
/// Logs a message at the Trace level.
///
/// Use for very detailed tracing of execution flow. This is the most
/// verbose level and should be used sparingly.
///
/// # Example
///
/// ```
/// use reovim_kernel::api::v1::pr_trace;
///
/// pr_trace!("processing event");
/// pr_trace!("loop iteration {}", 42);
/// ```