Giter Club home page Giter Club logo

dotfiles's People

Contributors

jasonghent avatar ratmav avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

dotfiles's Issues

Docs

Github wikis are OK, but keeping that in a separate repo is annoying. Create a docs directory and move the files in there.

parinfer

need a parinfer plugin for lisps, particularly clojure.

tmux test always fails on centos7

# Start tmux if present and not already running.
if command -v tmux>/dev/null; then
  [[ ! $TERM =~ screen ]] && [ -z $TMUX ] && exec tmux
fi

The test used to determine if tmux is installed in the Bash profile always fails on CentOS 7, and probably other Linux distributions. This should be an easy fix, but logging here to remember to fix it later. Not a blocking issue at the moment.

Python Bootstrapping Racket

Why does pip output the following during the PyPI package installs?

...checking virtualenvwrapper install...
Requirement already satisfied: virtualenvwrapper in /usr/local/lib/python2.7/site-packages
Requirement already satisfied: virtualenv in /usr/local/lib/python2.7/site-packages (from virtualenvwrapper)
Requirement already satisfied: virtualenv-clone in /usr/local/lib/python2.7/site-packages (from virtualenvwrapper)
Requirement already satisfied: stevedore in /usr/local/lib/python2.7/site-packages (from virtualenvwrapper)
Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python2.7/site-packages (from stevedore->virtualenvwrapper)
Requirement already satisfied: pbr>=2.0.0 in /usr/local/lib/python2.7/site-packages (from stevedore->virtualenvwrapper)
...installed virtualenvwrapper...
...checking autoenv install...
Requirement already satisfied: autoenv in /usr/local/lib/python2.7/site-packages
...installed autoenv...

It looks like the checks to verify the virtualenvwrapper and autoenv installs are passing and failing?

Also, at the end, I'm seeing:

...checking  install...
...... already installed

Why is the package name blank? Is Bash adding in a mystery empty element to the array of package names somehow? Is the array declared incorrectly? It looks like all the intended packages are being installed....

firefox, brave, sync, and rust

brave sync between ios and the desktop version...just flat out doesn't work.

honestly, i'm not writing a lot of go (but i'm still interested in shipping binaries).

i AM interested in more web tech.

so...firefox sync works, rust is cool, and i get a cross platform terminal emulator that doesn't run in a browser (alacritty) that can do full screen properly (if what's on the tin is to be trusted).

give alacritty another shot, see if fullscreen works. also might be worth looking at the amp editor. assuming alacritty fullscreen works, automate the install and remove all the brave and go (gvm) stuff from the dotfiles.

port to linux

should be fairly easy and close to the macos bash. target centos stream for rpm based distros and whatever the current debian release is in a vm.

haskell

supported platforms:

  • macos
  • nixos
  • windows

bootstrap (bash, powershell):

  1. install nix
  2. nix install dependencies (formerly done with brew)
  3. install ghc(i), stack, cabal, etc.

haskell script:

  1. symlink dotfiles
  2. configure git
  3. configure nvim
  4. nvim plugin install
  5. powerline fonts

github actions

investigate and attempt to implement github actions to run linters on push, etc. shellcheck for bash...not sure about powershell. PSScriptAnalyzer looks like the one, but will probably take some setup for sure.

goneovim

use goneovim for proper workspace support and remote nvim access.

tmux horizontal split pane

idk which tpm plugin it is, but fork it and change leader-| from vertical split all panes to vertical split current pane, and leader-\ to split all panes from split current pane. the mappings to do horizontal splits ('leader-dashandleader-underscore`) behave more "consistently", i.e. leader-key to split current pane, then leader-shift+key to split from all panes.

Teardown

Undo the bootstrap Bash script.

bootstrap in go

use go to detect os, then exec (and forward stdout/stderr to shell) bash or powershell depending on os.

zenburn

bunsen seems to default to a solarized theme. see if you can cook up a zenburn one and automate that. also probably worth spinning up the conky config, and whatever other tweaks.

zsh

after upgrading to macos catalina, i see this:

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
[ccuming@ccuming ~]$

thrilling. ok, so this means that i need to run the chsh command, then migrate my bash configs to zsh, then script the zsh setup. a stretch goal is to take a look at oh-my-zsh.

this is kind of a pain (bash has "just worked" for me so far), but my understanding is that zsh is just the interpreter, and i can still use bash as a scripting language (for the most part). apple has more info here.

this also means that it's probably worth it on linux (centos stream) to switch to zsh to reuse code.

vscodium settings path

in bash/mac_os.sh, around lines 47-48:

vscodium_settings() {
  if [ -e $HOME/Library/Application\ Support/VSCodium/User/settings.json ]; then
    rm -f $HOME/Library/Application\ Support/VSCodium/User/settings.json
  fi
  ln -s $PWD/settings.json $HOME/Library/Application\ Support/VSCodium/User/settings.json
}

that path is all over the place. it would be nice if it could be defined in a function-local variable. that said, i already tried it and ran into all kinds of problems with "file not found," etc. could just be the whitespace, but i'm not sure.

tmux.

all other options are super buggy at the moment. get back on the tmux train. here's what how that needs to look:

  • start tmux on shell startup, but don't nest tmux sessions.
  • something like Ctrl-T for the leader key.
  • leader+s to split horizontal
  • leader+v to split vertical
  • leader+(h|j|k|l) to navigate panes.
  • leader+shift(?)+(h|j|k|l) to resize panes
  • leader+z to toggle zoom on pane
  • leader+p to pause terminal and enable scrollback and search.

Also, the tmux setup should be as Vim-like as possible, IIRC there are some interesting config options particularly for the scrollback/search stuff (used to be the F7 key.).

Finally, it's time to integrate Vim's yank and paste as well as tmux with the system clipboard. Hopefully there is a clean cross platform (macOS and Linux) was to handle this. (#23)

NOTE: This means moving back to Vim, not Neovim. Can just use.vimrc like in the past, etc. It also means we I don't really need vim-buffergator via #19. (#21)

cerbero

be nice to have a cross-platform spotlight clone (lol even on macos because same keyboard shortcuts). cerbero looks great, except it loads a google search plugin by default.

create a fork and try building it w/o the plugin (see line 9 in initializeAsync.js), and if that doesn't break too badly, try writing a ddg plugin!

plugin: watch

make cli calls to get accurate (wttr.in doesn't seem super accurate) local weather info, the current date and time in the local timezone, utc, and whatever other timeszones you want (configurable).

write a go binary to do this cross platform, then ship with vim (maybe bundle like vim-ctrlspace does).

this also gets the clock out of airline.

hail to the king.

move back to vim, since tmux looks like the best solution for terminal multiplexing. unix philosophy wins again.

alacritty

the new alacritty terminal emulator looks pretty interesting and is cross platform. it doesn't really do proper full screen yet (alacritty/alacritty#38), but looking at the example config, it looks like it can already do opacity (alacritty/alacritty#331), at least on osx. Linux needs work I think.

Worth keeping an eye on.

vim window resize

set up leader keys to resize windows, and remove the golden-ratio plugin.

vim-airline

remove powerline, try vim airline. doesn't require weird fonts, although those aren't too hard to install.

plugin: vim-airline system status extension

write a little go binary to get system status using https://github.com/shirou/gopsutil. be sure to VENDOR AND COMMIT your dependencies in case the repo vanishes.

then, use https://github.com/enricobacis/vim-airline-clock as a guide to provide a vim-airline extension. use the file manager in go layout from https://github.com/vim-ctrlspace/vim-ctrlspace to provide pre-built binaries in the plugin. also include the go binary source for easy hacking. might be a good use case for a git submodule.

plugin: desk

minimal plugin for more conventional (to me) project workspace management. leans on tabs and logic from other plugins (give them a shoutout in the readme), this just bundles them all up nicely and limits options so i don't step on my own feet.

desk -> single nvim instance
book -> vim tab (book on desk)
page -> vim buffer (page in book)

Bindings:

  • Ctrl-d-n: new book
  • Ctrl-d-l: next book
  • Ctrl-d-h: previous book
  • Ctrl-d-c: refreshes list of files in search
  • Ctrl-d-f: tab-scoped fuzzy file name search
  • Ctrld-d-t: simple tree view, hjkl navigation. "Enter" opens file in buffer. that's all (nerdtree)
  • Ctrl-d-r: renames book (vim-ctrlspace)
  • Ctrl-d-q: closes book (vim-ctrlspace)
  • Ctrl-d-m: moves book (vim-bufkill)
  • Ctrl-d-g: greps file content (not buffer or file name), using the silver searcher (need to investigate).

dependencies (to be forked and pulled in as needed):

  • vimctrlspace
    • tab-scoped file name search (avoid go binary, try using glob and/or CtrlP logic w/ ignore rules)
  • nerdtree
    • simple tree view; only need "Enter" to open file in buffer, really.
  • vim-buffkill
    • probably necessary to keep tab/window around when moving a desk, since move wipes open desk buffers.

desk sets these as default keybindings, probably using viml commands

what's staying from the atom setup?

some things are in master that aren't atom related but are still pretty nice. stuff like the brew package for bash completion. what else is there? the source code pro fonts package?

plugin: aperture

see if you can write a custom function that will toggle vim window zoom with Ctrl-w-z

  • how do you track "window-local" state in the function to determine if a window is zoomed?
  • also, is the libvterm clipping bug even an issue anymore? does it still clip with things like golden-ratio? would be nice to update the bug if it doesn't just to let people know. it doesn't seem to be an issue with Ctrl-w-|/Ctrl-w-= (built in full-zoom).

flygrep

git grepping is getting cumbersome, hopping from terminal to terminal. give FlyGrep a shot using The Silver Searcher as the backend. Also, probably look into forking FlyGrep since it's part of SpaceVim, and TBH I'm not as keen on editor "distributions" as I once was.

nuake

found nuake today, which is pretty interesting: it puts a drop down terminal inside nvim. that's pretty neat, and it also seems to avoiding clipping terminal text?!?!! worth looking at harder when i have time.

also, here's a diff i used on init.vim while tinkering with it:

diff --git a/init.vim b/init.vim
index 34b6aa6..591c668 100644
--- a/init.vim
+++ b/init.vim
@@ -12,8 +12,18 @@ call plug#begin('~/.local/share/nvim/plugged')
   Plug 'airblade/vim-gitgutter'
   Plug 'nightsense/snow'
   Plug 'mrtazz/simplenote.vim'
+  Plug 'https://gitlab.com/Lenovsky/nuake.git'
 call plug#end()

+" Nuake
+tnoremap <Leader>t <C-\><C-n>:Nuake<CR>
+nnoremap <Leader>t :Nuake<CR>
+inoremap <Leader>t <C-\><C-n>:Nuake<CR>
+nnoremap <Leader>t :Nuake<CR>
+let g:nuake_position = 'top'
+let g:nuake_size = 0.2
+let g:nuake_per_tab = 1
+
 " snow colorscheme
 set background=dark
 colorscheme snow
@@ -114,7 +124,7 @@ nnoremap <Leader>f :CtrlP .<CR>
 nnoremap <Leader>b :CtrlPBuffer<CR>
 nnoremap <Leader>c :CtrlPClearCache<CR>

-" Terminal:
+" " Terminal:
 :tnoremap <Esc> <C-\><C-n>
 :tnoremap <A-h> <C-\><C-N><C-w>h
 :tnoremap <A-j> <C-\><C-N><C-w>j

shellcheck

[ccuming@ccuming dotfiles]$ shellcheck .bash*

In .bash_profile line 4:
    . ~/.bashrc
      ^-------^ SC1090: Can't follow non-constant source. Use a directive to specify location.


In .bashrc line 10:
    [[ ! $TERM =~ screen ]] && [ -z $TMUX ] && [[ $- == *i* ]] && exec tmux
                                    ^---^ SC2086: Double quote to prevent globbing and word splitting.

Did you mean:
    [[ ! $TERM =~ screen ]] && [ -z "$TMUX" ] && [[ $- == *i* ]] && exec tmux


In .bashrc line 20:
    source "$(brew --prefix)/etc/bash_completion"
           ^-- SC1090: Can't follow non-constant source. Use a directive to specify location.


In .bashrc line 35:
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
                               ^---------------^ SC1090: Can't follow non-constant source. Use a directive to specify location.


In .bashrc line 36:
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
                                        ^------------------------^ SC1090: Can't follow non-constant source. Use a directive to specify location.


In .bashrc line 39:
source "$HOME/.gvm/scripts/gvm"
       ^----------------------^ SC1090: Can't follow non-constant source. Use a directive to specify location.


In .bashrc line 43:
    . ~/.misc_envars
      ^------------^ SC1090: Can't follow non-constant source. Use a directive to specify location.

For more information:
  https://www.shellcheck.net/wiki/SC1090 -- Can't follow non-constant source....
  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...
[ccuming@ccuming dotfiles]$ shellcheck bootstrap.sh

In bootstrap.sh line 3:
source ./bash/mac_os.sh
       ^--------------^ SC1091: Not following: ./bash/mac_os.sh was not specified as input (see shellcheck -x).


In bootstrap.sh line 4:
source ./bash/linux.sh
       ^-------------^ SC1091: Not following: ./bash/linux.sh was not specified as input (see shellcheck -x).


In bootstrap.sh line 21:
  git config --global core.editor "$(which nvim)"
                                     ^---^ SC2230: which is non-standard. Use builtin 'command -v' instead.


In bootstrap.sh line 27:
    rm -rf $HOME/$link
           ^---------^ SC2115: Use "${var:?}" to ensure this never expands to / .
           ^---^ SC2086: Double quote to prevent globbing and word splitting.
                 ^---^ SC2086: Double quote to prevent globbing and word splitting.

Did you mean:
    rm -rf "$HOME"/"$link"


In bootstrap.sh line 28:
    ln -s $PWD/$link $HOME/$link
          ^--^ SC2086: Double quote to prevent globbing and word splitting.
               ^---^ SC2086: Double quote to prevent globbing and word splitting.
                     ^---^ SC2086: Double quote to prevent globbing and word splitting.
                           ^---^ SC2086: Double quote to prevent globbing and word splitting.

Did you mean:
    ln -s "$PWD"/"$link" "$HOME"/"$link"


In bootstrap.sh line 42:
  mkdir -p $HOME/.config/nvim
           ^---^ SC2086: Double quote to prevent globbing and word splitting.

Did you mean:
  mkdir -p "$HOME"/.config/nvim


In bootstrap.sh line 44:
    ln -s $PWD/init.vim $HOME/.config/nvim/init.vim
          ^--^ SC2086: Double quote to prevent globbing and word splitting.
                        ^---^ SC2086: Double quote to prevent globbing and word splitting.

Did you mean:
    ln -s "$PWD"/init.vim "$HOME"/.config/nvim/init.vim

For more information:
  https://www.shellcheck.net/wiki/SC2115 -- Use "${var:?}" to ensure this nev...
  https://www.shellcheck.net/wiki/SC1091 -- Not following: ./bash/linux.sh wa...
  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...
[ccuming@ccuming dotfiles]$ shellcheck bash/*

In bash/mac_os.sh line 21:
    if brew list | grep $package > /dev/null 2>&1; then
                        ^------^ SC2086: Double quote to prevent globbing and word splitting.

Did you mean:
    if brew list | grep "$package" > /dev/null 2>&1; then


In bash/mac_os.sh line 24:
      brew install $package
                   ^------^ SC2086: Double quote to prevent globbing and word splitting.

Did you mean:
      brew install "$package"


In bash/mac_os.sh line 34:
    brew cask reinstall $cask --force 1>/dev/null
                        ^---^ SC2086: Double quote to prevent globbing and word splitting.

Did you mean:
    brew cask reinstall "$cask" --force 1>/dev/null

For more information:
  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...

editor bake off

  • Atom
    • Nice, but it seems weird to run a full browser, etc. just to run terminals and edit text.
    • it takes c++, coffeescript, and html/css to hack on it. not bad languages, but not interesting for an editor.
    • vim bindings are good enough, but can't interact with terminals as buffers using modal style.
  • Spacemacs
    • pretty awesome on paper, but it's a little buggy in practice
    • treats terminals as buffers, but can't edit buffers in modal style.
    • can hack on it in lisp, which is awesome
  • Nvim
    • terminal is buggy but there are workarounds.
    • the last line of output gets pushed out of view - is this a powerline issue?
    • can hack on it in vimscript and c++, which is fine.

It's worth noting that powerline doesn't work in Atom, which is the option that is working the best at the moment.

Some TODO's:

  • Does removing powerline solve the terminal output problem in neovim?
  • Use brew to install the Source Code Pro font
  • Be sure to cherry pick any shell config or bootstrapping script changes from the Atom branch if you decide to move on.
  • If Neovim wins, be sure to take a look at parinfer if it's not already installed.
  • Clean up the home directory once this is settled.

desk

https://github.com/vim-ctrlspace/vim-ctrlspace already supports multi-root workspaces, i think i just need to get used to the keybindings. study up, remove the desk stuff out of init.vim, move nerdtree to Leader-N, and keep moving. configure idk ag or something for workspace search.

make sure the workspace persistence doesn't go in git somehow (should be in $HOME).

plugin: marv

package the MarkdownConverter function as a plugin. requires os detection and pandoc. support mac, windows, linux.

Ubuntu

Ubuntu uses .profile, so we probably need to copy that to the local bash profile when Ubuntu is the target system.

shellcheck

fire off shellcheck on the bash, and fix whatever it complains about.

airline defaults

it's a bunch of word count, etc. stuff i don't really care about. and the column number is labeled ln which makes me think line, not column. change that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.