Create rstudio_clone.lua
AI generated template first, will tinker after
This commit is contained in:
parent
3338d39206
commit
95345f67ed
|
@ -0,0 +1,130 @@
|
|||
-- Enable filetype detection
|
||||
vim.cmd('filetype plugin on')
|
||||
|
||||
-- Function to setup RStudio-like layout
|
||||
local function setup_rstudio_layout()
|
||||
-- Close any existing buffers to start fresh
|
||||
vim.cmd('silent! %bdelete!')
|
||||
|
||||
-- Set up the main layout with 4 quadrants
|
||||
vim.cmd('vsplit') -- Vertical split (left/right)
|
||||
vim.cmd('split') -- Horizontal split in left pane (top-left/bottom-left)
|
||||
vim.cmd('wincmd l') -- Move to right pane
|
||||
vim.cmd('split') -- Horizontal split in right pane (top-right/bottom-right)
|
||||
|
||||
-- Navigate to each quadrant and set them up
|
||||
-- Top Left: Code/Text Editor (current buffer)
|
||||
vim.cmd('wincmd t') -- Move to top-left
|
||||
|
||||
-- Bottom Left: Terminal/Console
|
||||
vim.cmd('wincmd j') -- Move to bottom-left
|
||||
vim.cmd('resize 15') -- Set height for console
|
||||
vim.cmd('terminal') -- Open terminal
|
||||
vim.cmd('startinsert') -- Enter insert mode in terminal
|
||||
|
||||
-- Top Right: Various panels (Git, CSV, etc.)
|
||||
vim.cmd('wincmd l') -- Move to top-right
|
||||
vim.cmd('vsplit') -- Split top-right vertically for multiple tabs
|
||||
vim.cmd('wincmd h') -- Move to left side of top-right
|
||||
|
||||
-- Set up tabbed interface for top-right
|
||||
vim.cmd('tabnew') -- Create new tab for Git
|
||||
vim.cmd('Neotree git_status') -- Requires neo-tree.nvim
|
||||
|
||||
vim.cmd('tabnew') -- Create new tab for CSV/data
|
||||
vim.cmd('DBUI') -- Requires vim-dadbod-ui for database/CSV viewing
|
||||
|
||||
vim.cmd('tabfirst') -- Go back to first tab
|
||||
|
||||
-- Bottom Right: Plots, Directory, Help
|
||||
vim.cmd('wincmd j') -- Move to bottom-right
|
||||
vim.cmd('split') -- Split bottom-right
|
||||
vim.cmd('wincmd j') -- Move to lower part of bottom-right
|
||||
|
||||
-- Set up tabbed interface for bottom-right
|
||||
vim.cmd('tabnew') -- Tab for file explorer
|
||||
vim.cmd('Neotree filesystem') -- File tree
|
||||
|
||||
vim.cmd('tabnew') -- Tab for plots (image preview)
|
||||
vim.cmd('terminal') -- Terminal for displaying plots
|
||||
vim.cmd('startinsert')
|
||||
|
||||
vim.cmd('tabnew') -- Tab for help
|
||||
vim.cmd('help') -- Open help
|
||||
|
||||
vim.cmd('tabfirst') -- Go back to first tab
|
||||
|
||||
-- Return to main editor (top-left)
|
||||
vim.cmd('wincmd t') -- Back to top-left
|
||||
|
||||
-- Set window sizes
|
||||
vim.cmd('vertical resize 60') -- Set width for left panes
|
||||
end
|
||||
|
||||
-- Function to check if we should setup RStudio layout
|
||||
local function setup_filetype_layout()
|
||||
local ft = vim.bo.filetype
|
||||
if ft == 'r' or ft == 'rmd' or ft == 'quarto' then
|
||||
-- Only setup if we're in a GUI or fullscreen and not already setup
|
||||
if vim.fn.has('gui_running') == 1 then
|
||||
setup_rstudio_layout()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Auto commands for R and Rmd files
|
||||
vim.api.nvim_create_autocmd({'BufWinEnter', 'FileType'}, {
|
||||
pattern = {'*.r', '*.R', '*.rmd', '*.Rmd', '*.RMD'},
|
||||
callback = function()
|
||||
vim.schedule(function()
|
||||
setup_filetype_layout()
|
||||
end)
|
||||
end
|
||||
})
|
||||
|
||||
-- Plugin configuration
|
||||
return require('packer').startup(function(use)
|
||||
-- Package manager
|
||||
use 'wbthomason/packer.nvim'
|
||||
|
||||
-- File tree and git status
|
||||
use {
|
||||
'nvim-neo-tree/neo-tree.nvim',
|
||||
requires = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
'MunifTanjim/nui.nvim',
|
||||
},
|
||||
config = function()
|
||||
require('neo-tree').setup({
|
||||
filesystem = {
|
||||
hijack_netrw_behavior = "open_default"
|
||||
}
|
||||
})
|
||||
end
|
||||
}
|
||||
|
||||
-- Database/CSV viewer
|
||||
use {
|
||||
'kristijanhusak/vim-dadbod-ui',
|
||||
requires = {'tpope/vim-dadbod'}
|
||||
}
|
||||
|
||||
-- Terminal management
|
||||
use {'akinsho/toggleterm.nvim', tag = '*', config = function()
|
||||
require('toggleterm').setup()
|
||||
end}
|
||||
|
||||
-- R language support
|
||||
use 'jalvesaq/Nvim-R'
|
||||
|
||||
-- Markdown support for Rmd files
|
||||
use 'preservim/vim-markdown'
|
||||
|
||||
-- Image preview for plots
|
||||
use 'edluffy/hologram.nvim'
|
||||
|
||||
-- Better syntax highlighting
|
||||
use 'nvim-treesitter/nvim-treesitter'
|
||||
|
||||
end)
|
Loading…
Reference in New Issue