@@ -110,15 +110,19 @@ function pomodoro.isInLongBreak()
110
110
and pomodoro .phase == Phases .BREAK
111
111
end
112
112
113
- function pomodoro .startBreak ()
114
- pomodoro .phase = Phases .BREAK
115
- pomodoro .break_count = pomodoro .break_count + 1
113
+ --- @param forced_time ? number
114
+ function pomodoro .startBreak (forced_time )
116
115
local break_duration
117
- if pomodoro . isInLongBreak () then
118
- break_duration = pomodoro . long_break_duration
116
+ if forced_time then
117
+ break_duration = forced_time * MIN_IN_MS
119
118
else
120
119
break_duration = pomodoro .break_duration
121
120
end
121
+ pomodoro .phase = Phases .BREAK
122
+ pomodoro .break_count = pomodoro .break_count + 1
123
+ if pomodoro .isInLongBreak () and not forced_time then
124
+ break_duration = pomodoro .long_break_duration
125
+ end
122
126
123
127
info (" Break of " .. break_duration / MIN_IN_MS .. " m started!" )
124
128
vim .schedule (pomodoro .displayPomodoroUI )
@@ -131,12 +135,17 @@ function pomodoro.endBreak()
131
135
pomodoro .start ()
132
136
end
133
137
134
- function pomodoro .start ()
135
- info (
136
- " Work session of " .. pomodoro .work_duration / MIN_IN_MS .. " m started!"
137
- )
138
+ --- @param forced_time ? number
139
+ function pomodoro .start (forced_time )
140
+ local work_duration
141
+ if forced_time then
142
+ work_duration = forced_time * MIN_IN_MS
143
+ else
144
+ work_duration = pomodoro .work_duration
145
+ end
146
+ info (" Work session of " .. work_duration / MIN_IN_MS .. " m started!" )
138
147
pomodoro .phase = Phases .RUNNING
139
- pomodoro .startTimer (pomodoro . work_duration , pomodoro .startBreak )
148
+ pomodoro .startTimer (work_duration , pomodoro .startBreak )
140
149
end
141
150
142
151
function pomodoro .delayBreak ()
@@ -159,13 +168,23 @@ function pomodoro.stop()
159
168
end
160
169
161
170
function pomodoro .registerCmds ()
162
- vim .api .nvim_create_user_command (
163
- " PomodoroForceBreak" ,
164
- pomodoro .startBreak ,
165
- {}
166
- )
171
+ vim .api .nvim_create_user_command (" PomodoroForceBreak" , function (opts )
172
+ local forced_break_duration = tonumber (opts .args )
173
+ if forced_break_duration then
174
+ pomodoro .startBreak (forced_break_duration )
175
+ else
176
+ pomodoro .startBreak ()
177
+ end
178
+ end , { nargs = " *" })
167
179
vim .api .nvim_create_user_command (" PomodoroSkipBreak" , pomodoro .endBreak , {})
168
- vim .api .nvim_create_user_command (" PomodoroStart" , pomodoro .start , {})
180
+ vim .api .nvim_create_user_command (" PomodoroStart" , function (opts )
181
+ local forced_work_duration = tonumber (opts .args )
182
+ if forced_work_duration then
183
+ pomodoro .start (forced_work_duration )
184
+ else
185
+ pomodoro .start ()
186
+ end
187
+ end , { nargs = " *" })
169
188
vim .api .nvim_create_user_command (" PomodoroStop" , pomodoro .stop , {})
170
189
vim .api .nvim_create_user_command (
171
190
" PomodoroDelayBreak" ,
0 commit comments