mirror of
				https://github.com/NotAShelf/slides.nvim.git
				synced 2025-11-03 20:32:19 +00:00 
			
		
		
		
	init
This commit is contained in:
		
				commit
				
					
						31dc8fde27
					
				
			
		
					 4 changed files with 142 additions and 0 deletions
				
			
		
							
								
								
									
										7
									
								
								.editorconfig
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								.editorconfig
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					root = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[*]
 | 
				
			||||||
 | 
					end_of_line = lf
 | 
				
			||||||
 | 
					charset = utf-8
 | 
				
			||||||
 | 
					indent_style = space
 | 
				
			||||||
 | 
					indent_size = 2
 | 
				
			||||||
							
								
								
									
										21
									
								
								LICENSE
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								LICENSE
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					MIT License
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2021 Pedro Castro
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The above copyright notice and this permission notice shall be included in all
 | 
				
			||||||
 | 
					copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
				
			||||||
 | 
					SOFTWARE.
 | 
				
			||||||
							
								
								
									
										51
									
								
								README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								README.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,51 @@
 | 
				
			||||||
 | 
					# slides.nvim
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Slides](https://github.com/maaslalani/slides) presentation in your Neovim.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Prerequisites
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `Neovim >= 0.5.0`
 | 
				
			||||||
 | 
					- [`Slides`](https://github.com/maaslalani/slides)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Installation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### [packer.nvim](https://github.com/wbthomason/packer.nvim)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```lua
 | 
				
			||||||
 | 
					use {
 | 
				
			||||||
 | 
					  'aspeddro/slides.nvim',
 | 
				
			||||||
 | 
					  config = function ()
 | 
				
			||||||
 | 
					    require'slides'.setup{}
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Configuration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```lua
 | 
				
			||||||
 | 
					require'slides'.setup{
 | 
				
			||||||
 | 
					  bin = 'slides' -- default config, path to binary
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Open current buffer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					:Slides
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					:Slides [path/to/file.md]
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Create a mapping:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```lua
 | 
				
			||||||
 | 
					-- 'n' = normal mode
 | 
				
			||||||
 | 
					vim.api.nvim_set_keymap('n', "<leader>s", ":Slides<CR>", {silent = true, noremap = true})
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use `q` and `ctrl + c` to close slide
 | 
				
			||||||
							
								
								
									
										63
									
								
								lua/slides.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								lua/slides.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,63 @@
 | 
				
			||||||
 | 
					local M = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local state = {
 | 
				
			||||||
 | 
					  win = nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local config = {
 | 
				
			||||||
 | 
					  bin = 'slides'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function M.close()
 | 
				
			||||||
 | 
					  if state.win ~= nil then
 | 
				
			||||||
 | 
					    vim.api.nvim_win_close(state.win, true)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function M.setup(user_config)
 | 
				
			||||||
 | 
					  config = vim.tbl_deep_extend('force', {}, config, user_config or {})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  vim.cmd [[command! -nargs=? -complete=file Slides :lua require"slides".show('<f-args>')]]
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function M.show(file)
 | 
				
			||||||
 | 
					  local opts = {
 | 
				
			||||||
 | 
					    style = "minimal",
 | 
				
			||||||
 | 
					    relative = "editor",
 | 
				
			||||||
 | 
					    width = vim.api.nvim_get_option("columns"),
 | 
				
			||||||
 | 
					    height = vim.api.nvim_get_option("lines"),
 | 
				
			||||||
 | 
					    row = 1,
 | 
				
			||||||
 | 
					    col = 1,
 | 
				
			||||||
 | 
					    border = "shadow",
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  local input = string.len(file) == 0 and vim.api.nvim_get_current_buf() or file
 | 
				
			||||||
 | 
					  local is_file = type(input) == 'string'
 | 
				
			||||||
 | 
					  local filetype = is_file and vim.fn.fnamemodify(input, ':e'):gsub("\"", "") or vim.api.nvim_buf_get_option(input, 'filetype')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if not vim.tbl_contains({'md', 'markdown'}, filetype) then
 | 
				
			||||||
 | 
					    vim.api.nvim_err_writeln('Invalid filetype')
 | 
				
			||||||
 | 
					    return
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if vim.fn.executable(config.bin) ~= 1 then
 | 
				
			||||||
 | 
					    vim.api.nvim_err_writeln('Executable not found')
 | 
				
			||||||
 | 
					    return
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  local bufnr = vim.api.nvim_create_buf(false, true)
 | 
				
			||||||
 | 
					  local win = vim.api.nvim_open_win(bufnr, true, opts)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  state.win = win
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  vim.cmd('startinsert!')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  vim.fn.termopen(config.bin .. ' ' .. (is_file and input or vim.api.nvim_buf_get_name(input)), {
 | 
				
			||||||
 | 
					    on_exit = function()
 | 
				
			||||||
 | 
					      M.close()
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return M
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue