uiua pad and link (plus some other stuff)
parent
a9d3bceb9f
commit
7d462d0294
@ -1,5 +1,5 @@
|
|||||||
require('packages')
|
require('packages')()
|
||||||
require('bindings')
|
require('bindings')()
|
||||||
require('autocmds')
|
require('autocmds')()
|
||||||
require('nvcfg')
|
require('nvcfg')()
|
||||||
require('local')
|
require('local')()
|
||||||
|
@ -1,34 +1,117 @@
|
|||||||
vim.opt.expandtab = true -- tabs to spaces
|
-- base64 encode and decode from http://lua-users.org/wiki/BaseSixtyFour
|
||||||
vim.opt.shiftwidth = 2 -- 4 spaces for < and > TODO: change back to 4
|
local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'
|
||||||
vim.opt.softtabstop = 2 -- 4 spaces in a tab TODO: change back to 4
|
-- encoding
|
||||||
vim.opt.number = true -- Show line numbers
|
function enc(data)
|
||||||
vim.opt.relativenumber = true -- Show other line numbers as relative
|
return ((data:gsub('.', function(x)
|
||||||
vim.opt.smartindent = true -- Smart indent
|
local r,b='',x:byte()
|
||||||
vim.g.airline_powerline_fonts = 1 -- nice icons for airline
|
for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
|
||||||
vim.g.wrap = false -- don't wrap lines
|
return r;
|
||||||
vim.g.termguicolors = true -- better colors
|
end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
|
||||||
vim.g.gruvbox_italic = 1 -- gruvbox can use italic font
|
if (#x < 6) then return '' end
|
||||||
vim.g.material_style = 'oceanic' -- material theme
|
local c=0
|
||||||
vim.g.bf_array_mode = 2 -- cyclic brainfuck memory
|
for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
|
||||||
vim.g.bf_value_mode = 2 -- cyclic brainfuck values
|
return b:sub(c+1,c+1)
|
||||||
|
end)..({ '', '==', '=' })[#data%3+1])
|
||||||
-- load colorscheme
|
end
|
||||||
local file = io.open(vim.fn.stdpath('config') .. "/colorscheme", "r")
|
|
||||||
local cs = file:read("l")
|
-- decoding
|
||||||
file:close()
|
function dec(data)
|
||||||
vim.cmd("colorscheme " .. cs)
|
data = string.gsub(data, '[^'..b..'=]', '')
|
||||||
|
return (data:gsub('.', function(x)
|
||||||
-- ufo
|
if (x == '=') then return '' end
|
||||||
vim.o.foldcolumn = '1'
|
local r,f='',(b:find(x)-1)
|
||||||
vim.o.foldlevel = 99
|
for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end
|
||||||
vim.o.foldlevelstart = 99
|
return r;
|
||||||
vim.o.foldenable = true
|
end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
|
||||||
require('ufo').setup()
|
if (#x ~= 8) then return '' end
|
||||||
|
local c=0
|
||||||
-- vimtex
|
for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end
|
||||||
vim.g.vimtex_view_general_viewer = 'evince'
|
return string.char(c)
|
||||||
|
end))
|
||||||
-- autoclose
|
end
|
||||||
require('autoclose').setup({})
|
|
||||||
|
return function()
|
||||||
return false
|
vim.opt.expandtab = true -- tabs to spaces
|
||||||
|
vim.opt.shiftwidth = 2 -- 4 spaces for < and > TODO: change back to 4
|
||||||
|
vim.opt.softtabstop = 2 -- 4 spaces in a tab TODO: change back to 4
|
||||||
|
vim.opt.number = true -- Show line numbers
|
||||||
|
vim.opt.relativenumber = true -- Show other line numbers as relative
|
||||||
|
vim.opt.smartindent = true -- Smart indent
|
||||||
|
vim.g.airline_powerline_fonts = 1 -- nice icons for airline
|
||||||
|
vim.g.wrap = false -- don't wrap lines
|
||||||
|
vim.g.termguicolors = true -- better colors
|
||||||
|
vim.g.gruvbox_italic = 1 -- gruvbox can use italic font
|
||||||
|
vim.g.material_style = 'oceanic' -- material theme
|
||||||
|
vim.g.bf_array_mode = 2 -- cyclic brainfuck memory
|
||||||
|
vim.g.bf_value_mode = 2 -- cyclic brainfuck values
|
||||||
|
|
||||||
|
-- load colorscheme
|
||||||
|
local file = io.open(vim.fn.stdpath('config') .. "/colorscheme", "r")
|
||||||
|
local cs = file:read("l")
|
||||||
|
file:close()
|
||||||
|
vim.cmd("colorscheme " .. cs)
|
||||||
|
|
||||||
|
-- ufo
|
||||||
|
vim.o.foldcolumn = '1'
|
||||||
|
vim.o.foldlevel = 99
|
||||||
|
vim.o.foldlevelstart = 99
|
||||||
|
vim.o.foldenable = true
|
||||||
|
require('ufo').setup()
|
||||||
|
|
||||||
|
-- vimtex
|
||||||
|
vim.g.vimtex_view_general_viewer = 'evince'
|
||||||
|
|
||||||
|
-- -- autoclose
|
||||||
|
-- require('autoclose').setup({})
|
||||||
|
|
||||||
|
-- uiua pad
|
||||||
|
vim.api.nvim_create_user_command('UiuaPad', function(opts)
|
||||||
|
math.randomseed(os.time())
|
||||||
|
|
||||||
|
-- pad file
|
||||||
|
if vim.g.pad_file == nil then
|
||||||
|
vim.g.pad_file = vim.fn.stdpath('cache') .. '/pad_' .. math.random(100, 999) .. '.ua'
|
||||||
|
io.open(vim.g.pad_file, 'w'):close()
|
||||||
|
end
|
||||||
|
local pad_file = vim.g.pad_file
|
||||||
|
|
||||||
|
-- open relevant buffers
|
||||||
|
vim.cmd.edit(pad_file)
|
||||||
|
vim.cmd.vsplit()
|
||||||
|
local pad_buf = vim.fn.bufnr('%')
|
||||||
|
local pad_win = vim.fn.win_getid();
|
||||||
|
vim.cmd.wincmd('l')
|
||||||
|
vim.cmd.term('cd ' .. vim.fn.stdpath('cache') .. '; uiua watch --clear ' .. pad_file)
|
||||||
|
local term_buf = vim.fn.bufnr('%')
|
||||||
|
local term_win = vim.fn.win_getid();
|
||||||
|
vim.cmd.wincmd('h')
|
||||||
|
|
||||||
|
-- close either one when the other closes
|
||||||
|
vim.api.nvim_create_augroup("uiuapad", {clear = true})
|
||||||
|
vim.api.nvim_create_autocmd("WinClosed", {
|
||||||
|
group = "uiuapad",
|
||||||
|
pattern = {tostring(pad_win), tostring(term_win)}, --pad_file, --{"*" .. pad_file, pad_file},
|
||||||
|
callback = function(ev)
|
||||||
|
-- print(pad_buf)
|
||||||
|
-- print(term_buf)
|
||||||
|
-- print(vim.fn.bufexists( pad_buf ))
|
||||||
|
-- print(vim.fn.bufexists( term_buf ))
|
||||||
|
-- if vim.fn.bufexists(pad_buf) then vim.cmd("bdelete! " .. pad_buf) end
|
||||||
|
if vim.fn.bufexists(pad_buf) then vim.cmd("bdelete! " .. pad_buf) end
|
||||||
|
if vim.fn.bufexists(term_buf) then vim.cmd("bdelete! " .. term_buf) end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
end, {})
|
||||||
|
|
||||||
|
-- generate uiua pad link
|
||||||
|
vim.api.nvim_create_user_command('UiuaLink', function(opts)
|
||||||
|
local uiua_version_raw = vim.fn.system({"uiua", "--version"})
|
||||||
|
print(uiua_version_raw)
|
||||||
|
local uiua_version = uiua_version_raw:sub(6, -2):gsub('%p', '_')
|
||||||
|
local buf_text = vim.fn.join(vim.fn.getline(0, '$'), '\n')
|
||||||
|
local url = "https://uiua.org/pad?src=" .. uiua_version .. "__" .. enc(buf_text)
|
||||||
|
print(url)
|
||||||
|
vim.fn.setreg('+', url)
|
||||||
|
end, {})
|
||||||
|
end
|
||||||
|
Loading…
Reference in New Issue