Various things (aliases, vimrc, scripts, readme)

This commit is contained in:
Michael Campagnaro 2021-07-14 11:16:23 -04:00
parent 5f60495990
commit dfc7e9ec74
9 changed files with 392 additions and 115 deletions

269
aliases
View File

@ -134,6 +134,7 @@ make_vid_dir_and_cd_into() {
# @note If the filename contains symbols that are incompatible with
# Windows' directory names then add --restrict-filenames to the command.
dir_name=$(youtube-dl.exe --get-filename -o "%(upload_date)s - %(title)s" $opts $url)
if [[ $dir_name == "" ]]; then
return 1
fi
@ -157,20 +158,23 @@ make_vid_dir_and_cd_into() {
dl_youtube_vid() {
local format="$1"
local shortname="$2"
local url="$3"
shift 3
local make_folder="$3"
local url="$4"
shift 4
local opts="$@"
if [[ $url == "" ]]; then
error "Format: $0 <url> <optional args>\n"
error "Format: $0 <make folder?> <url> <optional args>\n"
return
fi
opts+=" --write-sub --sub-lang en --embed-subs"
make_vid_dir_and_cd_into $url
if [[ $? -ne 0 ]]; then
return
if [[ $make_folder == "1" ]]; then
make_vid_dir_and_cd_into $url ""
if [[ $? -ne 0 ]]; then
return
fi
fi
if [[ $shortname -eq 0 ]]; then
@ -188,26 +192,31 @@ dl_youtube_vid() {
youtube-dl.exe -f $format -o "$filename" $opts $url
fi
cd ..
if [[ $make_folder == "1" ]]; then
cd ..
fi
}
# Download YouTube video and flip horizontally.
dl_youtube_vid_and_hflip() {
local format="$1"
local url="$2"
shift 2
local make_folder="$2"
local url="$3"
shift 3
local opts="$@"
if [[ $url == "" ]]; then
error "Format: $0 <url> <optional args>\n"
error "Format: $0 <make folder?> <url> <optional args>\n"
return
fi
opts+=" --write-sub --sub-lang en --embed-subs"
make_vid_dir_and_cd_into $url
if [[ $? -ne 0 ]]; then
return
if [[ $make_folder == "1" ]]; then
make_vid_dir_and_cd_into $url ""
if [[ $? -ne 0 ]]; then
return
fi
fi
local filename=$(youtube-dl.exe --get-filename -o "%(upload_date)s-%(title)s-youtube-%(id)s.%(ext)s" $url)
@ -223,7 +232,9 @@ dl_youtube_vid_and_hflip() {
ffmpeg -i "$filename" -vf hflip -c:a copy "copy_${filename}"
mv "copy_${filename}" "$filename"
cd ..
if [[ $make_folder == "1" ]]; then
cd ..
fi
}
dl_youtube_playlist() {
@ -259,6 +270,21 @@ dl_youtube_playlist() {
cd ..
}
# Download Twitch chat transcript
actually_dl_twitch_chat() {
local url="$1"
local filename="$2"
rechat.exe -d $url "$filename.json"
if [[ -f "$filename.json" ]]; then
rechat.exe -p "$filename.json" "$filename.txt" -b -o
mv "$filename.txt" "${filename:0:4}-${filename:4:2}-${filename:6}.txt"
rm "$filename.json"
else
error "Video doesn't have a chat transcript."
fi
}
dl_twitch_chat() {
local url="$1"
shift 1
@ -274,44 +300,42 @@ dl_twitch_chat() {
return
fi
# Download Twitch chat transcript
local name_format="%(upload_date)s-%(title)s-twitch-%(id)s"
local chat_file=$(youtube-dl.exe --get-filename -o "$name_format" $opts $url)
rechat.exe -d $url "$chat_file.json"
rechat.exe -p "$chat_file.json" "$chat_file.txt" -b -o
mv "$chat_file.txt" "${chat_file:0:4}-${chat_file:4:2}-${chat_file:6}.txt"
rm "$chat_file.json"
actually_dl_twitch_chat $url "$(youtube-dl.exe --get-filename -o "%(upload_date)s-%(title)s-twitch-%(id)s" $opts $url)"
cd ..
}
# Download Twitch videos.
# If you want to download a sub-only vid then extract your twitch cookies to a file (can use cookies.txt addon)
# and then pass it as an option, using the full path to the cookies file, e.g.
# If you want to download subcriber-only vids then first extract your twitch
# cookies to a file (can use cookies.txt addon from Lennon Hill) and then pass it as an option,
# using the full path to the cookies file, e.g.
# `tw-1080p60 <url> --cookies /c/<cookie_path>/twitch_cookies.txt`
#
dl_twitch_vid() {
local format="$1"
local shortname="$2"
local compression_level="$3"
local url="$4"
shift 4
local compress="$3"
local make_folder="$4"
local url="$5"
shift 5
local opts="$@"
if [[ $url == "" ]]; then
error "Format: $0 <url> <optional args>\n"
error "Format: $0 <make folder?> <url> <optional args>\n"
return
fi
if [[ $compression_level -eq 0 ]]; then
if [[ $compress -eq 0 ]]; then
printf "${BOLD}Downloading Twitch vid with no compression.${NORMAL}\n"
else
printf "${BOLD}Downloading Twitch vid with compression level ${YELLOW}$compression_level${NORMAL}.\n"
printf "${BOLD}Downloading Twitch vid with compression.${NORMAL}.\n"
fi
make_vid_dir_and_cd_into $url "" $opts
if [[ $? -ne 0 ]]; then
return
if [[ $make_folder == "1" ]]; then
make_vid_dir_and_cd_into $url "" $opts
if [[ $? -ne 0 ]]; then
return
fi
fi
if [[ $shortname -eq 0 ]]; then
@ -321,11 +345,7 @@ dl_twitch_vid() {
fi
# Download Twitch chat transcript
local chat_file=$(youtube-dl.exe --get-filename -o "$name_format" $opts $url)
rechat.exe -d $url "$chat_file.json"
rechat.exe -p "$chat_file.json" "$chat_file.txt" -b -o
mv "$chat_file.txt" "${chat_file:0:4}-${chat_file:4:2}-${chat_file:6}.txt"
rm "$chat_file.json"
actually_dl_twitch_chat $url "$(youtube-dl.exe --get-filename -o "$name_format" $opts $url)"
# Download the video.
local filename=$(youtube-dl.exe --get-filename -o "$name_format.%(ext)s" $opts $url)
@ -335,18 +355,82 @@ dl_twitch_vid() {
error=$?
if [[ $error -eq 0 ]]; then
if [[ $compression_level -ne 0 ]]; then
compress-video "$filename" $compression_level "temp"
if [[ $compress -eq 1 ]]; then
local temp_name="temp_${RANDOM}"
# 1 arg = use GPU
compress-video 1 "$filename" "$temp_name"
extension="${filename##*.}"
mv "$filename" uncompressed_original.$extension
mv temp.$extension "$filename"
mv "$filename" "orig_$filename.$extension"
mv $temp_name.$extension "$filename"
printf "${BOLD}Make sure to delete the original video file${NORMAL}\n"
fi
else
error "Error: Failed to download '$url'\n"
fi
cd ..
if [[ $make_folder == "1" ]]; then
cd ..
fi
}
# Download Vimeo videos.
dl_vimeo_vid() {
local format="$1"
local shortname="$2"
local compress="$3"
local make_folder="$4"
local url="$5"
shift 5
local opts="$@"
if [[ $url == "" ]]; then
error "Format: $0 <make folder?> <url> <optional args>\n"
return
fi
if [[ $compress -eq 0 ]]; then
printf "${BOLD}Downloading Vimeo vid with no compression.${NORMAL}\n"
else
printf "${BOLD}Downloading Vimeo vid with compression.${NORMAL}.\n"
fi
if [[ $make_folder == "1" ]]; then
make_vid_dir_and_cd_into $url "" $opts
if [[ $? -ne 0 ]]; then
return
fi
fi
if [[ $shortname -eq 0 ]]; then
local name_format="%(upload_date)s-%(title)s-vimeo-%(id)s"
else
local name_format="%(upload_date)s-shortname-vimeo-%(id)s"
fi
# Download the video.
local filename=$(youtube-dl.exe --get-filename -o "$name_format.%(ext)s" $opts $url)
filename="${filename:0:4}-${filename:4:2}-${filename:6}"
youtube-dl.exe -f "$format" -o "$filename" $opts $url
error=$?
if [[ $error -eq 0 ]]; then
if [[ $compress -eq 1 ]]; then
local temp_name="temp_${RANDOM}"
# 1 arg = use GPU
compress-video 1 "$filename" "$temp_name"
extension="${filename##*.}"
mv "$filename" "orig_$filename.$extension"
mv $temp_name.$extension "$filename"
printf "${BOLD}Make sure to delete the original video file${NORMAL}\n"
fi
else
error "Error: Failed to download '$url'\n"
fi
if [[ $make_folder == "1" ]]; then
cd ..
fi
}
# Download MP4 video.
@ -642,12 +726,22 @@ alias vu='vagrant up'
alias vimrc='vim ~/.vimrc'
alias weather='curl wttr.in/toronto -A "curl"'
alias yt='dl_youtube_vid "" 0'
alias yt-shortname='dl_youtube_vid "" 1'
alias yt-1080='dl_youtube_vid "137+140" 0'
alias yt-1080-shortname='dl_youtube_vid "137+140" 1'
alias yt-720='dl_youtube_vid "136+140" 0'
alias yt-720-shortname='dl_youtube_vid "136+140" 1'
#
# Downloading
#
COMPRESSION_ON=1
COMPRESSION_OFF=0
SHORTNAME_ON=1
SHORTNAME_OFF=0
# YouTube Vid DL
alias yt='dl_youtube_vid "" $SHORTNAME_OFF'
alias yt-shortname='dl_youtube_vid "" $SHORTNAME_ON'
alias yt-1080='dl_youtube_vid "137+140" $SHORTNAME_OFF'
alias yt-1080-shortname='dl_youtube_vid "137+140" $SHORTNAME_ON'
alias yt-720='dl_youtube_vid "136+140" $SHORTNAME_OFF'
alias yt-720-shortname='dl_youtube_vid "136+140" $SHORTNAME_ON'
alias yt-playlist='dl_youtube_playlist ""'
alias yt-playlist-1080='dl_youtube_playlist "137+140"'
@ -657,47 +751,68 @@ alias yt-audio='youtube-dl.exe -f "140"'
alias yt-and-hflip='dl_youtube_vid_and_hflip "137+140"' # 1080p
alias ig-download-and-hflip='dl_instagram_vid_and_hflip '
compression_quality=27 # 27 for gpu; 25 for cpu
# Twitch Vid DL
alias tw-src='dl_twitch_vid "Source" $SHORTNAME_OFF $COMPRESSION_OFF'
alias tw-src='dl_twitch_vid "Source" 0 0'
alias tw='dl_twitch_vid "1080p" 0 0'
alias tw-compressed='dl_twitch_vid "1080p" 0 $compression_quality'
alias tw-shortname='dl_twitch_vid "1080p" 1 0'
alias tw-shortname-compressed='dl_twitch_vid "1080p" 1 $compression_quality'
alias tw='dl_twitch_vid "1080p" $SHORTNAME_OFF $COMPRESSION_OFF'
alias tw-compressed='dl_twitch_vid "1080p" $SHORTNAME_OFF $COMPRESSION_ON'
alias tw-shortname='dl_twitch_vid "1080p" $SHORTNAME_ON $COMPRESSION_OFF'
alias tw-shortname-compressed='dl_twitch_vid "1080p" $SHORTNAME_ON $COMPRESSION_ON'
alias tw-custom='dl_twitch_vid '
alias tw-chat='dl_twitch_chat'
alias tw-1080='dl_twitch_vid "1080" 0 0'
alias tw-1080-compressed='dl_twitch_vid "1080" 0 $compression_quality'
alias tw-1080-shortname='dl_twitch_vid "1080" 1 0'
alias tw-1080-shortname-compressed='dl_twitch_vid "1080" 1 $compression_quality'
alias tw-1080='dl_twitch_vid "1080" $SHORTNAME_OFF $COMPRESSION_OFF'
alias tw-1080-compressed='dl_twitch_vid "1080" $SHORTNAME_OFF $COMPRESSION_ON'
alias tw-1080-shortname='dl_twitch_vid "1080" $SHORTNAME_ON $COMPRESSION_OFF'
alias tw-1080-shortname-compressed='dl_twitch_vid "1080" $SHORTNAME_ON $COMPRESSION_ON'
alias tw-1080p60='dl_twitch_vid "1080p60" 0 0'
alias tw-1080p50='dl_twitch_vid "1080p50" 0 0'
alias tw-1080p60-compressed='dl_twitch_vid "1080p60" 0 $compression_quality'
alias tw-1080p50-compressed='dl_twitch_vid "1080p50" 0 $compression_quality'
alias tw-1080p60-shortname='dl_twitch_vid "1080p60" 1 0'
alias tw-1080p50-shortname='dl_twitch_vid "1080p50" 1 0'
alias tw-1080p60-shortname-compressed='dl_twitch_vid "1080p60" 1 $compression_quality'
alias tw-1080p50-shortname-compressed='dl_twitch_vid "1080p50" 1 $compression_quality'
alias tw-1080p60='dl_twitch_vid "1080p60" $SHORTNAME_OFF $COMPRESSION_OFF'
alias tw-1080p50='dl_twitch_vid "1080p50" $SHORTNAME_OFF $COMPRESSION_OFF'
alias tw-1080p60-compressed='dl_twitch_vid "1080p60" $SHORTNAME_OFF $COMPRESSION_ON'
alias tw-1080p50-compressed='dl_twitch_vid "1080p50" $SHORTNAME_OFF $COMPRESSION_ON'
alias tw-1080p60-shortname='dl_twitch_vid "1080p60" $SHORTNAME_ON $COMPRESSION_OFF'
alias tw-1080p50-shortname='dl_twitch_vid "1080p50" $SHORTNAME_ON $COMPRESSION_OFF'
alias tw-1080p60-shortname-compressed='dl_twitch_vid "1080p60" $SHORTNAME_ON $COMPRESSION_ON'
alias tw-1080p50-shortname-compressed='dl_twitch_vid "1080p50" $SHORTNAME_ON $COMPRESSION_ON'
alias tw-720='dl_twitch_vid "720p" 0 0'
alias tw-720-compressed='dl_twitch_vid "720p-1" 0 $compression_quality'
alias tw-720-shortname='dl_twitch_vid "720p-1" 1 0'
alias tw-720-60='dl_twitch_vid "720p60" 0 0'
alias tw-720-60-shortname='dl_twitch_vid "720p60" 1 0'
alias tw-720='dl_twitch_vid "720p" $SHORTNAME_OFF $COMPRESSION_OFF'
alias tw-720-compressed='dl_twitch_vid "720p-1" $SHORTNAME_OFF $COMPRESSION_ON'
alias tw-720-shortname='dl_twitch_vid "720p-1" $SHORTNAME_ON $COMPRESSION_OFF'
alias tw-720-60='dl_twitch_vid "720p60" $SHORTNAME_OFF $COMPRESSION_OFF'
alias tw-720-60-shortname='dl_twitch_vid "720p60" $SHORTNAME_ON $COMPRESSION_OFF'
alias tw-4k='dl_twitch_vid "2160p" 0 0'
alias tw-4k-compressed='dl_twitch_vid "2160p" 0 $compression_quality'
alias tw-4k-shortname='dl_twitch_vid "2160p" 1 0'
alias tw-4k-shortname-compressed='dl_twitch_vid "2160p" 1 $compression_quality'
alias tw-4k='dl_twitch_vid "2160p" $SHORTNAME_OFF $COMPRESSION_OFF'
alias tw-4k-compressed='dl_twitch_vid "2160p" $SHORTNAME_OFF $COMPRESSION_ON'
alias tw-4k-shortname='dl_twitch_vid "2160p" $SHORTNAME_ON $COMPRESSION_OFF'
alias tw-4k-shortname-compressed='dl_twitch_vid "2160p" $SHORTNAME_ON $COMPRESSION_ON'
alias tw-source='dl_twitch_vid "Source" 0 0'
alias tw-source='dl_twitch_vid "Source" $SHORTNAME_OFF $COMPRESSION_OFF'
# Vimeo Vid DL
alias vimeo='dl_vimeo_vid "Original" $SHORTNAME_OFF $COMPRESSION_OFF'
alias vimeo-compressed='dl_vimeo_vid "Original" $SHORTNAME_OFF $COMPRESSION_ON'
# Misc
alias download-mp4='dl_mp4'
alias download-from-m3u8='dl_from_m3u8'
# Video Compression
function _compress_video_hard() {
local crf=35
local name="$1"
local out="$2"
if [[ name == "" || out == "" ]]; then
error "Format: cmd <source> <dest>\n"
return
fi
# 1 arg = use GPU
compress-video-with-crf 1 $crf "$name" "$out"
}
alias compress-video-hard='_compress_video_hard'
####################################################################################################
# Git
####################################################################################################

View File

@ -24,50 +24,48 @@ else
fi
if [[ $1 == "" ]]; then
printf "\n${BOLD}Usage: $0 <filename> <optional crf value> <optional output name>\n - If you want to encode a range of CRF values then use -1 as the crf value.${NORMAL}\n"
printf "${BOLD}${RED}Usage: $0 <use-gpu (1|0)> <filename> <optional output name>${NORMAL}\n"
exit 1
fi
filename=$(basename -- "$1")
use_gpu=$1
filename=$(basename -- "$2")
extension="${filename##*.}"
filename="${filename%.*}"
use_crf=$2
default_crf=25 # Programming vids have pretty crisp text @ crf 25.
output_name="$3"
use_cpu=$4
use_crf=25 # Found the following to work best with vids containing text (e.g. programming vid): 25 for CPU encoding and 27 for GPU.
if [[ $use_gpu -eq 1 ]]; then
use_crf=27
fi
function encode() {
crf=$1
if [[ $output_name == "" ]]; then
output="${filename}_REDUCED_CRF-${crf}.$extension"
output="${filename}_COMPRESSED_CRF-${crf}.$extension"
else
output="${output_name}.$extension"
fi
printf "\n${YELLOW}${BOLD}Encoding '$filename.$extension' with CRF $crf | output: $output${NORMAL}\n"
printf "\n${YELLOW}${BOLD}Encoding '$filename.$extension' | GPU: $use_gpu | CRF $crf | output: $output${NORMAL}\n"
if [[ $use_cpu -eq 1 ]]; then
ffmpeg -i "$filename.$extension" -c:v libx264 -crf $crf -preset veryfast -profile:v baseline -level 3.0 -strict -2 "$output"
else
if [[ $use_gpu -eq 1 ]]; then
# File will be slightly larger than CPU encoding, but it's much faster to transcode and doesn't max out the CPU cores.
ffmpeg -y -vsync 0 -hwaccel cuvid -c:v h264_cuvid -i "$filename.$extension" -c:a copy -c:v h264_nvenc -profile:v high -rc:v vbr_hq -cq:v $crf -b:v 5M -maxrate 5M -max_muxing_queue_size 9999 "$output"
else
ffmpeg -i "$filename.$extension" -c:v libx264 -crf $crf -preset veryfast -profile:v baseline -level 3.0 -strict -2 "$output"
fi
printf "\n${GREEN}${BOLD}Done encoding '$filename.$extension' with CRF $crf${NORMAL}\n\n"
printf "\n${GREEN}${BOLD}Done encoding '$filename.$extension' (CRF $crf) | output name '$output'${NORMAL}\n\n"
}
if [[ $use_crf == "" ]]; then
use_crf=$default_crf
fi
encode $use_crf
if [[ $use_crf == -1 ]]; then
printf "\n${YELLOW}${BOLD}Encoding using a range of CRF values.${NORMAL}\n"
#printf "\n${YELLOW}${BOLD}Encoding using a range of CRF values.${NORMAL}\n"
## Bigger crf values == bigger compression.
#for crf in {25..28}
#do
# encode $crf
#done
# Bigger crf values == bigger compression.
for crf in {25..28}
do
encode $crf
done
else
encode $use_crf
fi

View File

@ -0,0 +1,69 @@
#!/usr/bin/env bash
if which tput >/dev/null 2>&1; then
ncolors=$(tput colors)
fi
if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
RED="$(tput setaf 1)"
GREEN="$(tput setaf 2)"
YELLOW="$(tput setaf 3)"
BLUE="$(tput setaf 4)"
MAGENTA="$(tput setaf 5)"
CYAN="$(tput setaf 6)"
BOLD="$(tput bold)"
NORMAL="$(tput sgr0)"
else
RED=""
GREEN=""
YELLOW=""
BLUE=""
MAGENTA=""
CYAN=""
BOLD=""
NORMAL=""
fi
if [[ $1 == "" ]]; then
printf "${BOLD}${RED}Usage: $0 <use-gpu (1|0)> <crf value> <filename> <optional output name>\n\nIf you want to encode a range of CRF values then use -1 as the crf value.${NORMAL}\n"
exit 1
fi
use_gpu=$1
use_crf=$2
filename=$(basename -- "$3")
extension="${filename##*.}"
filename="${filename%.*}"
output_name="$4"
function encode() {
crf=$1
if [[ $output_name == "" ]]; then
output="${filename}_COMPRESSED_CRF-${crf}.$extension"
else
output="${output_name}.$extension"
fi
printf "\n${YELLOW}${BOLD}Encoding '$filename.$extension' | GPU: $use_gpu | CRF $crf | output: $output${NORMAL}\n"
if [[ $use_gpu -eq 1 ]]; then
# File will be slightly larger than CPU encoding, but it's much faster to transcode and doesn't max out the CPU cores.
ffmpeg -y -vsync 0 -hwaccel cuvid -c:v h264_cuvid -i "$filename.$extension" -c:a copy -c:v h264_nvenc -profile:v high -rc:v vbr_hq -cq:v $crf -b:v 5M -maxrate 5M -max_muxing_queue_size 9999 "$output"
else
ffmpeg -i "$filename.$extension" -c:v libx264 -crf $crf -preset veryfast -profile:v baseline -level 3.0 -strict -2 "$output"
fi
printf "\n${GREEN}${BOLD}Done encoding '$filename.$extension' (CRF $crf) | output name '$output'${NORMAL}\n\n"
}
if [[ $use_crf -ne -1 ]]; then
encode $use_crf
else
printf "\n${YELLOW}${BOLD}Encoding using a range of CRF values.${NORMAL}\n"
# Bigger crf values == bigger compression.
for crf in {25..28}
do
encode $crf
done
fi

View File

View File

@ -0,0 +1,10 @@
/* Hide the top tabs toolbar.
To install this:
* Go to your Firefox profile folder (look in %appdata%/Mozilla/Firefox/Profiles)
* Create a 'chrome' folder and place this there.
* In Firefox, go to about:config and set `toolkit.legacyUserProfileCustomizations.stylesheets` to true.
* Restart the browser.
*/
#TabsToolbar {
display: none !important;
}

36
vimrc
View File

@ -56,10 +56,11 @@ let g:campo_light_theme = 'campo-light-simple'
let g:campo_theme_use_rainbow_parens = 1
"--------------------------------------------
" You can further customize things in a private vimrc. I use this
" for things that I don't want included in my public dotfiles repo
" such as temp file settings.
source ~/.vimrc.private
" You can further customize things in a private vimrc. I use this for things
" that I don't want included in my public dotfiles repo such as temp file settings.
if filereadable($HOME . "/.vimrc.private")
source $HOME/.vimrc.private
endif
"################################################################
"################################################################
@ -467,9 +468,12 @@ augroup campoCmds
autocmd BufReadPre *.asm let g:asmsyntax = "fasm"
" Auto reload VIM when settings changed.
autocmd BufWritePost .vimrc so $MYVIMRC
autocmd BufWritePost *.vim so $MYVIMRC
autocmd BufWritePost ~/.vimrc.private so $MYVIMRC
" @fixme Reload lvimrc after sourcing this file on a save. I tried calling
" a function that does the source and a call to lvimrc's API but got an
" error complaining that the function cannot be created while it's in use.
autocmd BufWritePost .vimrc source $MYVIMRC
autocmd BufWritePost *.vim source $MYVIMRC
autocmd BufWritePost ~/.vimrc.private source $MYVIMRC
function! s:RunCtags()
" The ampersand at the end is to make this run in the background. I had to
@ -532,7 +536,7 @@ nmap <leader>z <c-z>
" Open the vimrc file for editing / reload vimrc file.
nmap <silent> <leader>ev :vsp $MYVIMRC<cr>
nmap <silent> <leader>pv :vsp ~/.vimrc.private<cr>
nmap <silent> <leader>rv :so $MYVIMRC<cr>
nmap <silent> <leader>rv :source $MYVIMRC<cr>
" Type %/ in the command bar to have it replaced with the current buffer's
" path if the file is on disk. One thing I noticed is that you have to type
@ -1070,8 +1074,8 @@ nnoremap <C-p> :cp<CR>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Search using ripgrep (first install with Rust: cargo install ripgrep).
function! Search(case_sensitive)
let l:helper = "[" . (a:case_sensitive ? "case-sensitive" : "case-insensitive") . "] search: "
function! Search(case_sensitive, search_args)
let l:helper = "Search [" . a:search_args . " | " . (a:case_sensitive ? "case-sensitive" : "case-insensitive") . "]: "
let l:term = input(l:helper)
if empty(l:term)
return
@ -1079,7 +1083,7 @@ function! Search(case_sensitive)
"@note --pretty (i.e. colors) is not enabled in vim-ripgrep because the
"quickfix window doesn't seem to parse the ansi color codes.
let l:rg_args = "--column --line-number --no-heading --fixed-strings --no-ignore --hidden --follow --trim -g \"!tags\" " . g:campo_custom_search_args
let l:rg_args = "--column --line-number --no-heading --fixed-strings --no-ignore --hidden --follow --trim -g \"!tags\" " . a:search_args
if !a:case_sensitive
let l:rg_args .= " --ignore-case"
@ -1087,8 +1091,14 @@ function! Search(case_sensitive)
exec 'Rg ' . l:rg_args . ' "' . l:term . '"'
endfunction
map <leader>s :call Search(0)<cr>
map <leader>ss :call Search(1)<cr>
" Case insensitive
map <leader>s :call Search(0, g:campo_custom_search_args)<cr>
noremap <F2> :call Search(0, g:campo_custom_search_args_2)<cr>
" Case sensitive
map <leader>ss :call Search(1, g:campo_custom_search_args)<cr>
noremap <F3> :call Search(1, g:campo_custom_search_args_2)<cr>
" Navigation for the vim-ripgrep search results.
" Hit o on a result line to open the file at that line.

View File

@ -0,0 +1,67 @@
////////////////////////////////////////////////////////////////////////////
// ADOBE SYSTEMS INCORPORATED
// Copyright 2008-2017 Adobe Systems Incorporated
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the
// terms of the Adobe license agreement accompanying it. If you have received this file from a
// source other than Adobe, then your use, modification, or distribution of it requires the prior
// written permission of Adobe.
/////////////////////////////////////////////////////////////////////////////
// Works around the lack of a permanently enabled "Show Items from Subfolders" option (aka flat view).
// The default behaviour is to turn off the option when changing folders. This extension enables the
// flat view when the app starts and then keeps it enabled when changing folders. You can disable this
// behaviour by disabling the "Always Show Items from Subfolders" option.
function AlwaysFlatViewSetting() {
this.requiredContext = "\tAdobe Bridge must be running.\n";
this.menuID = "alwaysFlatViewSetting";
}
AlwaysFlatViewSetting.prototype.run = function() {
if (!this.canRun()) return false;
var toggleFlatView = function(enable) {
var task = 'MenuElement.find("FlatView").checked = ' + (enable ? 'true' : 'false');
app.scheduleTask(task, 0, false);
}
var label = "Always Show Items from Subfolders";
var menuItem = new MenuElement( "command", label, "after FlatView");
menuItem.canBeChecked = true;
menuItem.checked = true;
menuItem.onSelect = function() {
menuItem.checked = !menuItem.checked;
toggleFlatView(menuItem.checked);
}
// Triggered when changing folders or selecting some menu option.
onSelectItem = function(event) {
if (event.object instanceof Document && event.type == "selectionsChanged") {
if (menuItem.checked) {
toggleFlatView(true);
}
return {handled:false}; // continue handling all other event handlers
}
}
app.eventHandlers.push({handler: onSelectItem});
return true;
}
AlwaysFlatViewSetting.prototype.canRun = function() {
if (BridgeTalk.appName == "bridge") {
if (MenuElement.find(this.menuID)) {
return false; // Item already exists.
}
return true;
}
$.writeln("ERROR:: Cannot run AlwaysFlatViewSetting");
$.writeln(this.requiredContext);
return false;
}
if (typeof(AlwaysFlatViewSetting_unitTest ) == "undefined") {
new AlwaysFlatViewSetting().run();
}

View File

@ -0,0 +1,2 @@
reg add "HKLM\Software\Microsoft\Windows\Windows Error Reporting" /v "Disabled" /t REG_DWORD /d 1 /f
reg add "HKLM\System\CurrentControlSet\Services\WerSvc" /v "Start" /t REG_DWORD /d 4 /f

View File

@ -19,6 +19,9 @@
* AFAIK this only works for Intel CPUs; not sure how to do the same thing on AMD.
* In the power plan set the processor min/max speed to 99%.
* Disable Windows error reporting dialog so that when stuff crashes you can get to a debugger faster.
* Open an admin cmd prompt and run the file `disable-windows-error-reporting-dialog.bat` from this directory.
* Optional: disable Windows Defender real-time protection:
* This can speed up compilation times since Defender will scan every file written to disk. I was
able to shave off ~2-5 seconds in a particular project.
@ -106,8 +109,11 @@ processor time and is generally useless.
* Install the Windows SDK https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk
* Download [O&O ShutUp10](https://www.oo-software.com/en/shutup10) and disable things.
## Setup up Unix-like Shell
## Setup Terminal
* Install [MSYS2 w/ MinGW-w64](http://www.msys2.org/) to `C:\msys64`
* MinGW is intended for developing native Windows applications. MSYS is for developing software
that runs inside of the MSYS2 posix-like env with FHS style filesystem naming (i.e. MSYS2
tools/packages).
* Open `C:\msys64\mingw64.exe`
* Run `pacman -Syu`, then restart the terminal and run `pacman -Su`.
* Run `pacman -S base-devel mingw-w64-x86_64-toolchain git bc`