Skip to content

Commit d15a144

Browse files
feat: add buf level commands for enable, disable, & toggle
## Details Request: #313 Adds the following commands: - `buf_enable` - `buf_disable` - `buf_toggle` These are the same as the commands without the `buf_` prefix, but are run for the current buffer only, instead of all attached buffers.
1 parent 4645c18 commit d15a144

File tree

7 files changed

+94
-44
lines changed

7 files changed

+94
-44
lines changed

README.md

+14-11
Original file line numberDiff line numberDiff line change
@@ -103,17 +103,20 @@ use({
103103

104104
# Commands
105105

106-
| Command | Lua Function | Description |
107-
| -------------------------- | --------------------------------------- | ------------------------------------------------- |
108-
| `:RenderMarkdown` | `require('render-markdown').enable()` | Enable this plugin |
109-
| `:RenderMarkdown enable` | `require('render-markdown').enable()` | Enable this plugin |
110-
| `:RenderMarkdown disable` | `require('render-markdown').disable()` | Disable this plugin |
111-
| `:RenderMarkdown toggle` | `require('render-markdown').toggle()` | Switch between enabling & disabling this plugin |
112-
| `:RenderMarkdown log` | `require('render-markdown').log()` | Opens the log file for this plugin |
113-
| `:RenderMarkdown expand` | `require('render-markdown').expand()` | Increase anti-conceal margin above and below by 1 |
114-
| `:RenderMarkdown contract` | `require('render-markdown').contract()` | Decrease anti-conceal margin above and below by 1 |
115-
| `:RenderMarkdown debug` | `require('render-markdown').debug()` | Prints information about marks on current line |
116-
| `:RenderMarkdown config` | `require('render-markdown').config()` | Prints difference between config and default |
106+
| Command | Lua Function | Description |
107+
| ----------------------------- | ------------------------------------------ | ------------------------------------------------- |
108+
| `:RenderMarkdown` | `require('render-markdown').enable()` | Enable this plugin |
109+
| `:RenderMarkdown enable` | `require('render-markdown').enable()` | Enable this plugin |
110+
| `:RenderMarkdown buf_enable` | `require('render-markdown').buf_enable()` | Enable this plugin for current buffer |
111+
| `:RenderMarkdown disable` | `require('render-markdown').disable()` | Disable this plugin |
112+
| `:RenderMarkdown buf_disable` | `require('render-markdown').buf_disable()` | Disable this plugin for current buffer |
113+
| `:RenderMarkdown toggle` | `require('render-markdown').toggle()` | Toggle state of this plugin |
114+
| `:RenderMarkdown buf_toggle` | `require('render-markdown').buf_toggle()` | Toggle state of this plugin for current buffer |
115+
| `:RenderMarkdown log` | `require('render-markdown').log()` | Opens the log file for this plugin |
116+
| `:RenderMarkdown expand` | `require('render-markdown').expand()` | Increase anti-conceal margin above and below by 1 |
117+
| `:RenderMarkdown contract` | `require('render-markdown').contract()` | Decrease anti-conceal margin above and below by 1 |
118+
| `:RenderMarkdown debug` | `require('render-markdown').debug()` | Prints information about marks on current line |
119+
| `:RenderMarkdown config` | `require('render-markdown').config()` | Prints difference between config and default |
117120

118121
# Completions
119122

doc/render-markdown.txt

+27-19
Original file line numberDiff line numberDiff line change
@@ -137,33 +137,41 @@ PACKER.NVIM *render-markdown-install-packer.nvim*
137137
==============================================================================
138138
5. Commands *render-markdown-commands*
139139

140-
-------------------------------------------------------------------------------------------------
141-
Command Lua Function Description
142-
-------------------------- --------------------------------------- ------------------------------
143-
:RenderMarkdown require('render-markdown').enable() Enable this plugin
140+
-----------------------------------------------------------------------------------------------------
141+
Command Lua Function Description
142+
----------------------------- ------------------------------------------ ----------------------------
143+
:RenderMarkdown require('render-markdown').enable() Enable this plugin
144144

145-
:RenderMarkdown enable require('render-markdown').enable() Enable this plugin
145+
:RenderMarkdown enable require('render-markdown').enable() Enable this plugin
146146

147-
:RenderMarkdown disable require('render-markdown').disable() Disable this plugin
147+
:RenderMarkdown buf_enable require('render-markdown').buf_enable() Enable this plugin for
148+
current buffer
148149

149-
:RenderMarkdown toggle require('render-markdown').toggle() Switch between enabling &
150-
disabling this plugin
150+
:RenderMarkdown disable require('render-markdown').disable() Disable this plugin
151151

152-
:RenderMarkdown log require('render-markdown').log() Opens the log file for this
153-
plugin
152+
:RenderMarkdown buf_disable require('render-markdown').buf_disable() Disable this plugin for
153+
current buffer
154154

155-
:RenderMarkdown expand require('render-markdown').expand() Increase anti-conceal margin
156-
above and below by 1
155+
:RenderMarkdown toggle require('render-markdown').toggle() Toggle state of this plugin
157156

158-
:RenderMarkdown contract require('render-markdown').contract() Decrease anti-conceal margin
159-
above and below by 1
157+
:RenderMarkdown buf_toggle require('render-markdown').buf_toggle() Toggle state of this plugin
158+
for current buffer
160159

161-
:RenderMarkdown debug require('render-markdown').debug() Prints information about marks
162-
on current line
160+
:RenderMarkdown log require('render-markdown').log() Opens the log file for this
161+
plugin
163162

164-
:RenderMarkdown config require('render-markdown').config() Prints difference between
165-
config and default
166-
-------------------------------------------------------------------------------------------------
163+
:RenderMarkdown expand require('render-markdown').expand() Increase anti-conceal margin
164+
above and below by 1
165+
166+
:RenderMarkdown contract require('render-markdown').contract() Decrease anti-conceal margin
167+
above and below by 1
168+
169+
:RenderMarkdown debug require('render-markdown').debug() Prints information about
170+
marks on current line
171+
172+
:RenderMarkdown config require('render-markdown').config() Prints difference between
173+
config and default
174+
-----------------------------------------------------------------------------------------------------
167175

168176
==============================================================================
169177
6. Completions *render-markdown-completions*

lua/render-markdown/api.lua

+13-1
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,24 @@ function M.enable()
99
manager.set_all(true)
1010
end
1111

12+
function M.buf_enable()
13+
manager.set_current(true)
14+
end
15+
1216
function M.disable()
1317
manager.set_all(false)
1418
end
1519

20+
function M.buf_disable()
21+
manager.set_current(false)
22+
end
23+
1624
function M.toggle()
17-
manager.set_all(not state.enabled)
25+
manager.set_all()
26+
end
27+
28+
function M.buf_toggle()
29+
manager.set_current()
1830
end
1931

2032
function M.log()

lua/render-markdown/command.lua

+5-5
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,19 @@ end
2929
---@private
3030
---@param opts { fargs: string[] }
3131
function M.command(opts)
32-
local args, error_message = opts.fargs, nil
32+
local args, message = opts.fargs, nil
3333
if #args == 0 or #args == 1 then
3434
local command = #args == 0 and api.enable or api[args[1]]
3535
if command ~= nil then
3636
command()
3737
else
38-
error_message = string.format('unexpected command: %s', args[1])
38+
message = string.format('unexpected command: %s', args[1])
3939
end
4040
else
41-
error_message = string.format('unexpected # arguments: %d', #args)
41+
message = string.format('unexpected # arguments: %d', #args)
4242
end
43-
if error_message ~= nil then
44-
vim.notify(string.format('%s: %s', M.plugin, error_message), vim.log.levels.ERROR)
43+
if message ~= nil then
44+
vim.notify(string.format('%s: %s', M.plugin, message), vim.log.levels.ERROR)
4545
end
4646
end
4747

lua/render-markdown/core/ui.lua

+3
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,9 @@ function M.next_state(config, win, mode)
154154
if not state.enabled then
155155
return 'default'
156156
end
157+
if not config.enabled then
158+
return 'default'
159+
end
157160
if not config:render(mode) then
158161
return 'default'
159162
end

lua/render-markdown/health.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ local state = require('render-markdown.state')
55
local M = {}
66

77
---@private
8-
M.version = '7.8.14'
8+
M.version = '7.8.15'
99

1010
function M.check()
1111
M.start('version')

lua/render-markdown/manager.lua

+31-7
Original file line numberDiff line numberDiff line change
@@ -42,29 +42,53 @@ function M.setup()
4242
})
4343
end
4444

45-
---@param enabled boolean
45+
---@param buf integer
46+
---@return boolean
47+
function M.is_attached(buf)
48+
return vim.tbl_contains(buffers, buf)
49+
end
50+
51+
---@param enabled? boolean
4652
function M.set_all(enabled)
4753
-- Lazy Loading: all previously opened buffers have been ignored
4854
if #util.lazy('cmd') > 0 then
4955
M.attach_current()
5056
end
51-
state.enabled = enabled
57+
if enabled ~= nil then
58+
state.enabled = enabled
59+
else
60+
state.enabled = not state.enabled
61+
end
5262
for _, buf in ipairs(buffers) do
53-
ui.update(buf, vim.fn.bufwinid(buf), 'UserCommand', true)
63+
M.trigger_update(buf)
5464
end
5565
end
5666

57-
---@param buf integer
58-
---@return boolean
59-
function M.is_attached(buf)
60-
return vim.tbl_contains(buffers, buf)
67+
---@param enabled? boolean
68+
function M.set_current(enabled)
69+
local buf = util.current('buf')
70+
if M.is_attached(buf) then
71+
local config = state.get(buf)
72+
if enabled ~= nil then
73+
config.enabled = enabled
74+
else
75+
config.enabled = not config.enabled
76+
end
77+
M.trigger_update(buf)
78+
end
6179
end
6280

6381
---@private
6482
function M.attach_current()
6583
M.attach(util.current('buf'))
6684
end
6785

86+
---@private
87+
---@param buf integer
88+
function M.trigger_update(buf)
89+
ui.update(buf, vim.fn.bufwinid(buf), 'UserCommand', true)
90+
end
91+
6892
---@private
6993
---@param buf integer
7094
function M.attach(buf)

0 commit comments

Comments
 (0)