Compare commits

..

No commits in common. '87f624ac3ce284b197259b784d9fd3852c2d673b' and '57ab6006cd75cad33776030d19c889e71378a0fc' have entirely different histories.

  1. 35
      Xresources
  2. 182
      nvim/init.lua
  3. 606
      urxvt/ext/keyboard-select
  4. 1
      xinitrc
  5. 27
      zshrc

@ -1,6 +1,7 @@
!! URxvt Appearance !! URxvt Appearance
URxvt*termName: rxvt-256color urxvt*termName: rxvt-256color
URxvt*font: xft:Terminess Nerd Font:size=12 urxvt*font: xft:TerminessTTF Nerd Font:style=Medium:size=12, xft:IosevkaTerm Nerd Font:style=Regular:size=6:minspace=1
urxvt*skipBuiltinGlyphs: 1
Xft.autohint: 1 Xft.autohint: 1
Xft.lcdfilter: lcddefault Xft.lcdfilter: lcddefault
Xft.hintstyle: hintfull Xft.hintstyle: hintfull
@ -9,21 +10,15 @@ Xft.antialias: 1
Xft.rgba: rgb Xft.rgba: rgb
rofi.color-enabled: true rofi.color-enabled: true
URxvt*letterSpace: 0 urxvt*letterSpace: 0
URxvt*lineSpace: 1 urxvt*lineSpace: 1
URxvt*geometry: 80x-1 urxvt*geometry: 80x-1
URxvt.internalBorder: 12 urxvt.internalBorder: 12
URxvt.saveline: 2048 urxvt.saveline: 2048
URxvt.scrollBar: false urxvt.scrollBar: false
URxvt.scrollBar_right: false urxvt.scrollBar_right: false
URxvt.urgentOnBell: true urxvt.urgentOnBell: true
URxvt.depth: 32 urxvt.depth: 32
URxvt.cursorUnderline: true urxvt.cursorUnderline: true
URxvt.cursorBlink: true urxvt.cursorBlink: true
URxvt*scrollTtyOutput: false urxvt*scrollTtyOutput: false
!! enable keyboard copying
!! https://github.com/pkkolos/urxvt-scripts/tree/master
URxvt.perl-ext-common: keyboard-select
URxvt.keysym.Control-s: perl:keyboard-select:activate
URxvt.keyboard-select.clipboard: true

@ -21,7 +21,6 @@ vim.wo.cursorline = true
vim.opt.hlsearch = false vim.opt.hlsearch = false
vim.opt.wrap = true vim.opt.wrap = true
vim.opt.showmatch = true vim.opt.showmatch = true
vim.opt.completeopt = { 'menu', 'menuone', 'noselect' }
vim.g.python3_host_prog = '/home/frosty/.dotfiles/nvim/env/bin/python' vim.g.python3_host_prog = '/home/frosty/.dotfiles/nvim/env/bin/python'
@ -49,7 +48,7 @@ function imap(shortcut, command)
map('i', shortcut, command) map('i', shortcut, command)
end end
vim.opt.guifont = "Hack Nerd Font:h12" vim.opt.guifont = "Iosevka Nerd Font:h12"
if vim.g.neovide then if vim.g.neovide then
vim.g.neovide_refresh_rate = 140 vim.g.neovide_refresh_rate = 140
-- change to whatever font you prefer -- change to whatever font you prefer
@ -73,7 +72,7 @@ end
-- <leader> is leader key; default is \ -- <leader> is leader key; default is \
nmap("<leader>v", "<cmd>NvimTreeToggle<cr>") nmap("<leader>v", "<cmd>NvimTreeToggle<cr>")
nmap("<leader>ec", "<cmd>e ~/.config/nvim/init.lua<cr>") nmap("<leader>ec", "<cmd>e ~/.config/nvim/init.lua<cr>")
nmap("<leader>sc", "<cmd>source ~/.config/nvim/init.lua<cr><cmd>PackerClean<cr><cmd>PackerCompile<cr>") nmap("<leader>sc", "<cmd>source ~/.config/nvim/init.lua<cr><cmd>PackerSync<cr>")
-- buffer commands -- buffer commands
nmap("<leader>b", "<cmd>BufferLineCyclePrev<cr>") nmap("<leader>b", "<cmd>BufferLineCyclePrev<cr>")
@ -114,7 +113,7 @@ local on_attach = function(client, bufnr)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
vim.keymap.set('n', '<space>f', '<cmd>lua vim.lsp.buf.format({ async = true })<CR>', bufopts) vim.keymap.set('n', '<space>f', '<cmd>lua vim.lsp.buf.format({ async = true })<CR>', bufopts)
-- require "coq".lsp_ensure_capabilities {} require "coq".lsp_ensure_capabilities {}
require 'illuminate'.on_attach(client) require 'illuminate'.on_attach(client)
-- format on save does not work for python for some reason -- format on save does not work for python for some reason
@ -131,15 +130,9 @@ local on_attach = function(client, bufnr)
end end
local lsp = require "lspconfig" local lsp = require "lspconfig"
local lsp_defaults = lsp.util.default_config
lsp.hls.setup { on_attach = on_attach } -- haskell language server lsp.hls.setup { on_attach = on_attach } -- haskell language server
lsp.ccls.setup { on_attach = on_attach }
lsp.pyright.setup { on_attach = on_attach } lsp.pyright.setup { on_attach = on_attach }
lsp.svelte.setup { on_attach = on_attach }
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.offsetEncoding = { "utf-16" }
lsp.clangd.setup { on_attach = on_attach, capabilities = capabilities }
-- https://github.com/denoland/deno - maybe switch? -- https://github.com/denoland/deno - maybe switch?
lsp.tsserver.setup { on_attach = on_attach } lsp.tsserver.setup { on_attach = on_attach }
lsp.marksman.setup { on_attach = on_attach } lsp.marksman.setup { on_attach = on_attach }
@ -153,18 +146,8 @@ lsp.lua_ls.setup { on_attach = on_attach,
} }
} }
} }
lsp.tailwindcss.setup { on_attach = on_attach }
lsp.julials.setup {
on_new_config = function(new_config, _)
local julia = vim.fn.expand("~/.julia/environments/nvim-lspconfig/bin/julia")
if lsp.util.path.is_file(julia) then
vim.notify("running julials")
new_config.cmd[1] = julia
end
end,
on_attach = on_attach
}
vim.cmd("colorscheme carbonfox")
-- kill eslint_d on exit -- kill eslint_d on exit
local on_leave_group = vim.api.nvim_create_augroup("OnLeaveGroup", {}) local on_leave_group = vim.api.nvim_create_augroup("OnLeaveGroup", {})
vim.api.nvim_create_autocmd("VimLeave", { vim.api.nvim_create_autocmd("VimLeave", {
@ -198,12 +181,32 @@ end
return M]] return M]]
-- --
vim.cmd("colorscheme carbonfox")
return require('packer').startup(function(use) return require('packer').startup(function(use)
use 'wbthomason/packer.nvim' use 'wbthomason/packer.nvim'
use 'nvim-lua/plenary.nvim' use 'nvim-lua/plenary.nvim'
--[[use { "lukas-reineke/lsp-format.nvim",
config = function()
require("lsp-format").setup {
python = {
exclude = { "pyright" },
},
javascript = {
exclude = { "tsserver" }
}
}
end,
requires = { 'neovim/nvim-lspconfig' }
}]]
--
use 'neovim/nvim-lspconfig' use 'neovim/nvim-lspconfig'
use {
'ms-jpq/coq_nvim',
branch = 'coq',
event = "VimEnter",
config = 'vim.cmd[[COQnow]]'
}
use { 'ms-jpq/coq.artifacts', branch = 'artifacts' }
use { 'ms-jpq/coq.thirdparty', branch = '3p' }
use { use {
'nvim-treesitter/nvim-treesitter', 'nvim-treesitter/nvim-treesitter',
run = ':TSUpdate', run = ':TSUpdate',
@ -215,88 +218,11 @@ return require('packer').startup(function(use)
} }
end end
} }
use { use { 'kyazdani42/nvim-tree.lua',
'nvim-tree/nvim-web-devicons',
}
use {
'nvim-tree/nvim-tree.lua',
after = "nvim-web-devicons",
requires = "nvim-tree/nvim-web-devicons",
config = function() require('nvim-tree').setup {} end
}
use {
"hrsh7th/nvim-cmp",
requires = { requires = {
"hrsh7th/cmp-buffer", "hrsh7th/cmp-nvim-lsp", 'kyazdani42/nvim-web-devicons'
"L3MON4D3/LuaSnip", "rafamadriz/friendly-snippets",
'hrsh7th/cmp-nvim-lua', 'octaltree/cmp-look', 'hrsh7th/cmp-path', 'hrsh7th/cmp-calc',
'f3fora/cmp-spell', 'hrsh7th/cmp-emoji'
}, },
config = function() config = function() require('nvim-tree').setup {} end
local cmp = require("cmp")
local luasnip = require('luasnip')
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end
},
sources = {
{ name = 'path' },
{ name = 'nvim_lsp', keyword_length = 1 },
{ name = 'buffer', keyword_length = 3 },
{ name = 'luasnip', keyword_length = 2 },
},
window = {
documentation = cmp.config.window.bordered()
},
formatting = {
fields = { 'menu', 'abbr', 'kind' },
format = function(entry, item)
local menu_icon = {
nvim_lsp = 'λ',
luasnip = '',
buffer = 'Ω',
path = '🖫',
}
item.menu = menu_icon[entry.source.name]
return item
end,
},
mapping = {
['<Up>'] = cmp.mapping.select_prev_item(select_opts),
['<Down>'] = cmp.mapping.select_next_item(select_opts),
['<C-p>'] = cmp.mapping.select_prev_item(select_opts),
['<C-n>'] = cmp.mapping.select_next_item(select_opts),
['<C-u>'] = cmp.mapping.scroll_docs(-4),
['<C-d>'] = cmp.mapping.scroll_docs(4),
['<C-e>'] = cmp.mapping.abort(),
['<C-y>'] = cmp.mapping.confirm({ select = true }),
['<CR>'] = cmp.mapping.confirm({ select = false }),
['<C-f>'] = cmp.mapping(function(fallback)
if luasnip.jumpable(1) then
luasnip.jump(1)
else
fallback()
end
end, { 'i', 's' }),
['<C-b>'] = cmp.mapping(function(fallback)
if luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }),
}
})
end
} }
--use { 'jose-elias-alvarez/typescript.nvim', --use { 'jose-elias-alvarez/typescript.nvim',
-- config = function() require("typescript") -- config = function() require("typescript")
@ -315,44 +241,27 @@ return require('packer').startup(function(use)
return find_pyproject(params.root) or params.root return find_pyproject(params.root) or params.root
end end
}) })
local black = null_ls.builtins.formatting.black.with({ local black = null_ls.builtins.formatting.black.with({
extra_args = { "--config", "pyproject.toml" },
cwd = function(params) cwd = function(params)
return find_pyproject(params.root) or params.root return find_pyproject(params.root) or params.root
end end
}) })
local flake8 = null_ls.builtins.diagnostics.flake8.with({ local flake8 = null_ls.builtins.diagnostics.flake8.with({
cwd = function(params) cwd = function(params)
return find_flake8(params.root) or params.root return find_flake8(params.root) or params.root
end end
}) })
local eslint_d_format = null_ls.builtins.formatting.eslint_d
local eslint_format = null_ls.builtins.formatting.eslint_d.with({ local eslint_d_diag = null_ls.builtins.diagnostics.eslint_d
extra_filetypes = { "svelte" }, local eslint_d_code = null_ls.builtins.code_actions.eslint_d
}) local gitsigns = null_ls.builtins.code_actions.gitsigns
local eslint_diag = null_ls.builtins.diagnostics.eslint_d.with({
extra_filetypes = { "svelte" },
})
local eslint_code_actions = null_ls.builtins.code_actions.eslint_d.with({
extra_filetypes = { "svelte" },
})
null_ls.setup { null_ls.setup {
on_attach = on_attach, on_attach = on_attach,
sources = {
eslint_format,
eslint_diag,
eslint_code_actions,
null_ls.builtins.code_actions.gitsigns,
isort,
black,
flake8
}
} }
null_ls.register({ isort, black, flake8, gitsigns })
null_ls.register({ name = "eslint_d", sources = { eslint_d_code, eslint_d_diag, eslint_d_format } })
end, end,
requires = { "nvim-lua/plenary.nvim" }, requires = { "nvim-lua/plenary.nvim" },
} }
@ -366,8 +275,8 @@ return require('packer').startup(function(use)
} }
use { use {
'akinsho/bufferline.nvim', 'akinsho/bufferline.nvim',
tag = "*", tag = "v2.*",
requires = 'nvim-tree/nvim-web-devicons', requires = 'kyazdani42/nvim-web-devicons',
config = function() config = function()
require("bufferline").setup { require("bufferline").setup {
options = { options = {
@ -376,6 +285,11 @@ return require('packer').startup(function(use)
} }
end end
} }
use { "EdenEast/nightfox.nvim",
config = function()
require("nightfox").setup {}
end
}
use { use {
"nvim-lualine/lualine.nvim", "nvim-lualine/lualine.nvim",
event = "VimEnter", event = "VimEnter",
@ -385,12 +299,11 @@ return require('packer').startup(function(use)
sections = { lualine_x = { 'filetype' } } sections = { lualine_x = { 'filetype' } }
} }
end, end,
requires = { 'nvim-tree/nvim-web-devicons', opt = true } requires = { 'kyazdani42/nvim-web-devicons', opt = true }
} }
use { use {
"startup-nvim/startup.nvim", "startup-nvim/startup.nvim",
after = "nvim-web-devicons", requires = { "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" },
requires = { "nvim-tree/nvim-web-devicons", "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" },
config = function() config = function()
require "startup".setup() require "startup".setup()
end end
@ -419,7 +332,6 @@ return require('packer').startup(function(use)
require('colorizer').setup { require('colorizer').setup {
'css', 'css',
'javascript', 'javascript',
'toml'
} }
end, end,
} }
@ -442,9 +354,7 @@ return require('packer').startup(function(use)
{ 'nvim-lua/plenary.nvim' }, { 'nvim-lua/plenary.nvim' },
} }
} }
use { 'stevearc/dressing.nvim' }
if packer_bootstrap then if packer_bootstrap then
require('packer').sync() require('packer').sync()
end end
use "EdenEast/nightfox.nvim"
end) end)

@ -1,606 +0,0 @@
#! perl -w
# Author: Bert Muennich
# Website: http://www.github.com/muennich/urxvt-perls
# License: GPLv2
# Use keyboard shortcuts to select and copy text.
# Usage: put the following lines in your .Xdefaults/.Xresources:
# URxvt.perl-ext-common: ...,keyboard-select
# URxvt.keysym.M-Escape: perl:keyboard-select:activate
# The following line overwrites the default Meta-s binding and allows to
# activate keyboard-select directly in backward search mode:
# URxvt.keysym.M-s: perl:keyboard-select:search
# Use Meta-Escape to activate selection mode, then use the following keys:
# h/j/k/l: Move cursor left/down/up/right (also with arrow keys)
# g/G/0/^/$/H/M/L/f/F/;/,/w/W/b/B/e/E: More vi-like cursor movement keys
# '/'/?: Start forward/backward search
# n/N: Repeat last search, N: in reverse direction
# Ctrl-f/b: Scroll down/up one screen
# Ctrl-d/u: Scroll down/up half a screen
# v/V/Ctrl-v: Toggle normal/linewise/blockwise selection
# y/Return: Copy selection to primary buffer, Return: quit afterwards
# Y: Copy selected lines to primary buffer or cursor line and quit
# q/Escape: Quit keyboard selection mode
# Options:
# URxvt.keyboard-select.clipboard: If true, copy to clipboard too
use strict;
sub on_start{
my ($self) = @_;
$self->{clipboard} = $self->x_resource_boolean('keyboard-select.clipboard');
$self->{patterns}{'w'} = qr/\w[^\w\s]|\W\w|\s\S/;
$self->{patterns}{'W'} = qr/\s\S/;
$self->{patterns}{'b'} = qr/.*(?:\w[^\w\s]|\W\w|\s\S)/;
$self->{patterns}{'B'} = qr/.*\s\S/;
$self->{patterns}{'e'} = qr/[^\w\s](?=\w)|\w(?=\W)|\S(?=\s|$)/;
$self->{patterns}{'E'} = qr/\S(?=\s|$)/;
()
}
sub on_action {
my ($self, $action) = @_;
on_user_command($self, "keyboard-select:" . $action);
}
sub on_user_command {
my ($self, $cmd) = @_;
if (not $self->{active}) {
if ($cmd eq 'keyboard-select:activate') {
activate($self);
} elsif ($cmd eq 'keyboard-select:search') {
activate($self, 1);
}
}
()
}
sub key_press {
my ($self, $event, $keysym, $char) = @_;
my $key = chr($keysym);
if (lc($key) eq 'c' && $event->{state} & urxvt::ControlMask) {
deactivate($self);
} elsif ($self->{search}) {
if ($keysym == 0xff1b) {
if ($self->{search_mode}) {
deactivate($self);
} else {
$self->{search} = '';
status_area($self);
}
} elsif ($keysym == 0xff08) {
$self->{search} = substr($self->{search}, 0, -1);
if (not $self->{search} and $self->{search_mode}) {
deactivate($self);
} else {
status_area($self);
}
} elsif ($keysym == 0xff0d ||
(lc($key) eq 'm' && $event->{state} & urxvt::ControlMask)) {
my $txt = substr($self->{search}, 1);
if ($txt) {
$self->{pattern} = ($txt =~ m/[[:upper:]]/) ? qr/\Q$txt\E/ :
qr/\Q$txt\E/i;
} elsif ($self->{pattern}) {
delete $self->{pattern};
}
$self->{search} = '';
$self->screen_cur($self->{srhcr}, $self->{srhcc});
if (not find_next($self)) {
if ($self->{search_mode}) {
deactivate($self);
} else {
status_area($self);
}
}
} elsif (length($char) > 0) {
$self->{search} .= $self->locale_decode($char);
my $txt = substr($self->{search}, 1);
if ($txt) {
$self->{pattern} = ($txt =~ m/[[:upper:]]/) ? qr/\Q$txt\E/ :
qr/\Q$txt\E/i;
} elsif ($self->{pattern}) {
delete $self->{pattern};
}
$self->screen_cur($self->{srhcr}, $self->{srhcc});
find_next($self);
status_area($self);
}
} elsif ($self->{move_to}) {
if ($keysym == 0xff1b) {
$self->{move_to} = 0;
status_area($self);
} elsif (length($char) > 0) {
$self->{move_to} = 0;
$self->{patterns}{'f-1'} = qr/^.*\Q$key\E/;
$self->{patterns}{'f+1'} = qr/^.+?\Q$key\E/;
move_to($self, ';');
status_area($self);
}
} elsif ($keysym == 0xff1b || lc($key) eq 'q') {
deactivate($self);
} elsif (lc($key) eq 'y' || $keysym == 0xff0d ||
(lc($key) eq 'm' && $event->{state} & urxvt::ControlMask)) {
my $quit = 0;
if ($key eq 'Y' && $self->{select} ne 'l') {
$quit = !$self->{select};
toggle_select($self, 'l');
}
if ($self->{select}) {
my ($br, $bc, $er, $ec) = calc_span($self);
$ec = $self->line($er)->l if $self->{select} eq 'l';
$self->selection_beg($br, $bc);
$self->selection_end($er, $ec);
$self->selection_make($event->{time}, $self->{select} eq 'b');
if ($self->{clipboard}) {
$self->selection($self->selection(), 1);
$self->selection_grab($event->{time}, 1);
}
if (lc($key) eq 'y') {
$self->selection_beg(1, 0);
$self->selection_end(1, 0);
$self->{select} = '';
status_area($self);
$self->want_refresh();
} else {
$quit = 1;
}
}
if ($quit) {
deactivate($self);
}
} elsif ($key eq 'V') {
toggle_select($self, 'l');
} elsif ($key eq 'v') {
if ($event->{state} & urxvt::ControlMask) {
toggle_select($self, 'b');
} else {
toggle_select($self, 'n');
}
} elsif ($key eq 'k' || $keysym == 0xff52) {
move_cursor($self, 'k');
} elsif ($key eq 'j' || $keysym == 0xff54) {
move_cursor($self, 'j');
} elsif ($key eq 'h' || $keysym == 0xff51) {
move_cursor($self, 'h');
} elsif ($key eq 'l' || $keysym == 0xff53) {
move_cursor($self, 'l');
} elsif ($keysym == 0xff57) {
move_cursor($self, '$');
} elsif ($keysym == 0xff50) {
move_cursor($self, '^');
} elsif ('gG0^$HML' =~ m/\Q$key\E/ ||
('fbdu' =~ m/\Q$key\E/ && $event->{state} & urxvt::ControlMask)) {
move_cursor($self, $key);
} elsif (lc($key) eq 'f') {
$self->{move_to} = 1;
$self->{move_dir} = $key eq 'F' ? -1 : 1;
status_area($self, $key);
} elsif (';,wWbBeE' =~ m/\Q$key\E/) {
move_to($self, $key);
} elsif ($key eq '/' || $key eq '?') {
$self->{search} = $key;
$self->{search_dir} = $key eq '?' ? -1 : 1;
($self->{srhcr}, $self->{srhcc}) = $self->screen_cur();
status_area($self);
} elsif (lc($key) eq 'n') {
find_next($self, $self->{search_dir} * ($key eq 'N' ? -1 : 1));
}
return 1;
}
sub move_cursor {
my ($self, $key) = @_;
my ($cr, $cc) = $self->screen_cur();
my $line = $self->line($cr);
if ($key eq 'k' && $line->beg > $self->top_row) {
$cr = $line->beg - 1;
} elsif ($key eq 'j' && $line->end < $self->nrow - 1) {
$cr = $line->end + 1;
} elsif ($key eq 'h' && $self->{offset} > 0) {
$self->{offset} = $line->offset_of($cr, $cc) - 1;
$self->{dollar} = 0;
} elsif ($key eq 'l' && $self->{offset} < $line->l - 1) {
++$self->{offset};
} elsif ($key eq 'f' || $key eq 'd') {
my $vs = $self->view_start() +
($key eq 'd' ? $self->nrow / 2 : $self->nrow - 1);
$vs = 0 if $vs > 0;
$cr += $vs - $self->view_start($vs);
} elsif ($key eq 'b' || $key eq 'u') {
my $vs = $self->view_start() -
($key eq 'u' ? $self->nrow / 2 : $self->nrow - 1);
$vs = $self->top_row if $vs < $self->top_row;
$cr += $vs - $self->view_start($vs);
} elsif ($key eq 'g') {
($cr, $self->{offset}) = ($self->top_row, 0);
$self->{dollar} = 0;
} elsif ($key eq 'G') {
($cr, $self->{offset}) = ($self->nrow - 1, 0);
$self->{dollar} = 0;
} elsif ($key eq '0') {
$self->{offset} = 0;
$self->{dollar} = 0;
} elsif ($key eq '^') {
my $ltxt = $self->special_decode($line->t);
while ($ltxt =~ s/^( *)\t/$1 . " " x (8 - length($1) % 8)/e) {}
$self->{offset} = $ltxt =~ m/^ +/ ? $+[0] : 0;
$self->{dollar} = 0;
} elsif ($key eq '$') {
my $co = $line->offset_of($cr, $cc);
$self->{dollar} = $co + 1;
$self->{offset} = $line->l - 1;
} elsif ($key eq 'H') {
$cr = $self->view_start();
} elsif ($key eq 'M') {
$cr = $self->view_start() + $self->nrow / 2;
} elsif ($key eq 'L') {
$cr = $self->view_start() + $self->nrow - 1;
}
$line = $self->line($cr);
$cc = $self->{dollar} || $self->{offset} >= $line->l ? $line->l - 1 :
$self->{offset};
$self->screen_cur($line->coord_of($cc));
status_area($self);
$self->want_refresh();
()
}
sub move_to {
my ($self, $key) = @_;
my ($cr, $cc) = $self->screen_cur();
my $line = $self->line($cr);
my $offset = $self->{offset};
my ($dir, $pattern);
my ($wrap, $found) = (0, 0);
if ($key eq ';' || $key eq ',') {
$dir = $self->{move_dir} * ($key eq ',' ? -1 : 1);
$pattern = $self->{patterns}{sprintf('f%+d', $dir)};
return if not $pattern;
} else {
if (lc($key) eq 'b') {
$dir = -1;
} else {
$dir = 1;
++$offset if lc($key) eq 'e';
}
$pattern = $self->{patterns}{$key};
$wrap = 1;
}
if ($dir > 0) {
NEXTDOWN: my $text = substr($line->t, $offset);
if ($text =~ m/$pattern/) {
$offset += $+[0] - 1;
$found = 1;
} elsif ($wrap && $line->end + 1 < $self->nrow) {
$cr = $line->end + 1;
$line = $self->line($cr);
$offset = 0;
if (lc($key) eq 'e') {
goto NEXTDOWN;
} else {
$found = 1;
}
}
} elsif ($dir < 0) {
NEXTUP: my $text = substr($line->t, 0, $offset);
if ($text =~ m/$pattern/) {
$offset += $+[0] - length($text) - 1;
$found = 1;
} elsif ($wrap) {
if ($offset > 0) {
$offset = 0;
$found = 1;
} elsif ($line->beg > $self->top_row) {
$cr = $line->beg - 1;
$line = $self->line($cr);
$offset = $line->l;
goto NEXTUP;
}
}
}
if ($found) {
$self->{dollar} = 0;
$self->{offset} = $offset;
$self->screen_cur($line->coord_of($offset));
$self->want_refresh();
}
()
}
sub find_next {
my ($self, $dir) = @_;
return if not $self->{pattern};
$dir = $self->{search_dir} if not $dir;
my ($cr, $cc) = $self->screen_cur();
my $line = $self->line($cr);
my $offset = $line->offset_of($cr, $cc);
my $text;
my $found = 0;
++$offset if $dir > 0;
while (not $found) {
if ($dir > 0) {
$text = substr($line->t, $offset);
if ($text =~ m/$self->{pattern}/) {
$found = 1;
$offset += $-[0];
} else {
last if $line->end >= $self->nrow;
$line = $self->line($line->end + 1);
$offset = 0;
}
} else {
$text = substr($line->t, 0, $offset);
if ($text =~ m/$self->{pattern}/) {
$found = 1;
$offset = $-[0] while $text =~ m/$self->{pattern}/g;
} else {
last if $line->beg <= $self->top_row;
$line = $self->line($line->beg - 1);
$offset = $line->l;
}
}
}
if ($found) {
$self->{dollar} = 0;
$self->{offset} = $offset;
$self->screen_cur($line->coord_of($offset));
status_area($self);
$self->want_refresh();
}
return $found;
}
sub tt_write {
return 1;
}
sub refresh {
my ($self) = @_;
my ($cr, $cc) = $self->screen_cur();
# scroll the current cursor position into visible area
if ($cr < $self->view_start()) {
$self->view_start($cr);
} elsif ($cr >= $self->view_start() + $self->nrow) {
$self->view_start($cr - $self->nrow + 1);
}
if ($self->{select}) {
my ($hl, $reverse_cursor);
my ($br, $bc, $er, $ec) = calc_span($self);
if ($self->x_resource('highlightColor')) {
$hl = urxvt::RS_Sel;
$reverse_cursor = 0;
} else {
$hl = urxvt::RS_RVid;
$reverse_cursor = $self->{select} ne 'l';
}
if ($self->{select} eq 'b') {
my $co = $self->line($cr)->offset_of($cr, $cc);
my $dollar = $self->{dollar} && $co >= $self->{dollar} - 1;
my $r = $br;
while ($r <= $er) {
my $line = $self->line($r);
if ($bc < $line->l) {
$ec = $line->l if $dollar;
my ($br, $bc) = $line->coord_of($bc);
my ($er, $ec) = $line->coord_of($ec <= $line->l ? $ec : $line->l);
$self->scr_xor_span($br, $bc, $er, $ec, $hl);
} elsif ($r == $cr) {
$reverse_cursor = 0;
}
$r = $line->end + 1;
}
} else {
$self->scr_xor_span($br, $bc, $er, $ec, $hl);
}
if ($reverse_cursor) {
# make the cursor visible again
$self->scr_xor_span($cr, $cc, $cr, $cc + 1, $hl);
}
}
()
}
sub activate {
my ($self, $search) = @_;
$self->{active} = 1;
$self->{select} = '';
$self->{dollar} = 0;
$self->{move_to} = 0;
if ($search) {
$self->{search} = '?';
$self->{search_dir} = -1;
$self->{search_mode} = 1;
} else {
$self->{search} = '';
$self->{search_mode} = 0;
}
($self->{oldcr}, $self->{oldcc}) = $self->screen_cur();
($self->{srhcr}, $self->{srhcc}) = $self->screen_cur();
$self->{old_view_start} = $self->view_start();
$self->{old_pty_ev_events} = $self->pty_ev_events(urxvt::EV_NONE);
my $line = $self->line($self->{oldcr});
$self->{offset} = $line->offset_of($self->{oldcr}, $self->{oldcc});
$self->selection_beg(1, 0);
$self->selection_end(1, 0);
$self->enable(
key_press => \&key_press,
refresh_begin => \&refresh,
refresh_end => \&refresh,
tt_write => \&tt_write,
);
if ($self->{offset} >= $line->l) {
$self->{offset} = $line->l > 0 ? $line->l - 1 : 0;
$self->screen_cur($line->coord_of($self->{offset}));
$self->want_refresh();
}
$self->{overlay_len} = 0;
status_area($self);
()
}
sub deactivate {
my ($self) = @_;
$self->selection_beg(1, 0);
$self->selection_end(1, 0);
delete $self->{overlay} if $self->{overlay};
$self->disable("key_press", "refresh_begin", "refresh_end", "tt_write");
$self->screen_cur($self->{oldcr}, $self->{oldcc});
$self->view_start($self->{old_view_start});
$self->pty_ev_events($self->{old_pty_ev_events});
$self->want_refresh();
$self->{active} = 0;
()
}
sub status_area {
my ($self, $extra) = @_;
my ($stat, $stat_len);
if ($self->{search}) {
$stat_len = $self->ncol;
$stat = $self->{search} . ' ' x ($stat_len - length($self->{search}));
} else {
if ($self->{select}) {
$stat = "-V" . ($self->{select} ne 'n' ? uc($self->{select}) : "") . "- ";
}
if ($self->top_row == 0) {
$stat .= "All";
} elsif ($self->view_start() == $self->top_row) {
$stat .= "Top";
} elsif ($self->view_start() == 0) {
$stat .= "Bot";
} else {
$stat .= sprintf("%2d%%",
($self->top_row - $self->view_start) * 100 / $self->top_row);
}
$stat = "$extra $stat" if $extra;
$stat_len = length($stat);
}
if (!$self->{overlay} || $self->{overlay_len} != $stat_len) {
delete $self->{overlay} if $self->{overlay};
$self->{overlay} = $self->overlay(-1, -1, $stat_len, 1,
urxvt::OVERLAY_RSTYLE, 0);
$self->{overlay_len} = $stat_len;
}
$self->{overlay}->set(0, 0, $self->special_encode($stat));
$self->{overlay}->show();
()
}
sub toggle_select {
my ($self, $mode) = @_;
if ($self->{select} eq $mode) {
$self->{select} = '';
} else {
if (not $self->{select}) {
($self->{ar}, $self->{ac}) = $self->screen_cur();
}
$self->{select} = $mode;
}
status_area($self);
$self->want_refresh();
()
}
sub calc_span {
my ($self) = @_;
my ($cr, $cc) = $self->screen_cur();
my ($br, $bc, $er, $ec);
if ($self->{select} eq 'b') {
$br = $self->line($cr)->beg;
$bc = $self->line($cr)->offset_of($cr, $cc);
$er = $self->line($self->{ar})->beg;
$ec = $self->line($self->{ar})->offset_of($self->{ar}, $self->{ac});
($br, $er) = ($er, $br) if $br > $er;
($bc, $ec) = ($ec, $bc) if $bc > $ec;
} else {
if ($cr < $self->{ar}) {
($br, $bc, $er, $ec) = ($cr, $cc, $self->{ar}, $self->{ac});
} elsif ($cr > $self->{ar}) {
($br, $bc, $er, $ec) = ($self->{ar}, $self->{ac}, $cr, $cc);
} else {
($br, $er) = ($cr, $cr);
($bc, $ec) = $cc < $self->{ac} ? ($cc, $self->{ac}) : ($self->{ac}, $cc);
}
}
if ($self->{select} eq 'l') {
($br, $er) = ($self->line($br)->beg, $self->line($er)->end);
($bc, $ec) = (0, $self->ncol);
} else {
++$ec;
}
return ($br, $bc, $er, $ec);
}

@ -7,4 +7,5 @@ xset -dpms
xset s noblank xset s noblank
xset s off -dpms xset s off -dpms
wal -i ~/.wallpapers wal -i ~/.wallpapers
#/home/frosty/.config/polybar/launch.sh &
exec i3 exec i3

27
zshrc

@ -1,7 +1,7 @@
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source ${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh source ${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh
fi fi
export PATH=$HOME/bin:/usr/local/bin:$PATH
export ZSH=$HOME/.oh-my-zsh export ZSH=$HOME/.oh-my-zsh
ZSH_THEME="powerlevel10k/powerlevel10k" ZSH_THEME="powerlevel10k/powerlevel10k"
@ -17,10 +17,9 @@ source $ZSH/oh-my-zsh.sh
export LANG=en_US.UTF-8 export LANG=en_US.UTF-8
#LAMMPS path variables #LAMMPS path variables
export PATH=/home/frosty/Programs/Python/MolSieve/lammps/install/bin:$PATH
#export PYTHONPATH=/home/frosty/Apps/lammps/install/python:$PYTHONPATH #export PYTHONPATH=/home/frosty/Apps/lammps/install/python:$PYTHONPATH
#export LD_LIBRARY_PATH=/home/frosty/Programs/Python/MolSieve/lammps/install/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/home/frosty/Programs/Python/MolSieve/lammps/install/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/frosty/neomd/lammps/install/lib:$LD_LIBRARY_PATH
#export SLEPC_DIR=/opt/slepc/linux-c-opt #export SLEPC_DIR=/opt/slepc/linux-c-opt
#petsc path variables #petsc path variables
@ -73,29 +72,9 @@ bindkey -v # bind keys to vim mode
eval "$(zoxide init zsh)" eval "$(zoxide init zsh)"
path+=('/home/frosty/.local/bin') path+=('/home/frosty/.local/bin')
path+=("/usr/local/bin")
path+=('/home/frosty/Programs/Python/MolSieve/lammps/install/bin')
export GEM_HOME="$(ruby -e 'puts Gem.user_dir')" export GEM_HOME="$(ruby -e 'puts Gem.user_dir')"
path+=("$GEM_HOME/bin") path+=("$GEM_HOME/bin")
#export PYENV_ROOT="$HOME/.pyenv"
#command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
#eval "$(pyenv init -)"
path+=('/home/frosty/.ghcup/bin/')
path+=('/home/frosty/.cabal/bin')
path+=('/home/frosty/Apps/ovito-pro/bin')
path+=('/home/frosty/.cargo/bin')
path+=('/home/frosty/neomd/neo4j-community-4.4.29/bin/')
path+=('/home/frosty/neomd/parsplice/install/bin')
alias resetDB='neo4j stop; rm -rf /home/frosty/neomd/neo4j_data; neo4j start'
# Restart your shell for the changes to take effect.
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
export PATH export PATH
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

Loading…
Cancel
Save