diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/pdf/.gitignore | 1 | ||||
-rw-r--r-- | doc/pdf/Makefile | 31 | ||||
-rw-r--r-- | doc/rfc/.gitignore | 3 | ||||
-rw-r--r-- | doc/rfc/Makefile | 21 | ||||
-rw-r--r-- | doc/rfc/rfc.vim | 30 | ||||
-rw-r--r-- | doc/rfc/rfctags.pl | 28 |
6 files changed, 114 insertions, 0 deletions
diff --git a/doc/pdf/.gitignore b/doc/pdf/.gitignore new file mode 100644 index 00000000..a1363379 --- /dev/null +++ b/doc/pdf/.gitignore @@ -0,0 +1 @@ +*.pdf diff --git a/doc/pdf/Makefile b/doc/pdf/Makefile new file mode 100644 index 00000000..7afbdcf2 --- /dev/null +++ b/doc/pdf/Makefile @@ -0,0 +1,31 @@ +PDFS += abi.pdf +PDFS += c11.pdf +PDFS += elf.pdf +PDFS += intel-64-opt.pdf +PDFS += intel-64-sdm-vol-1.pdf +PDFS += intel-64-sdm-vol-2.pdf +PDFS += intel-64-sdm-vol-3.pdf +PDFS += intel-64-sdm-vol-4.pdf +PDFS += multiboot.pdf + +ELF = https://refspecs.linuxbase.org/elf +INTEL = https://software.intel.com/sites/default/files/managed + +URL.abi.pdf = ${ELF}/x86_64-abi-0.99.pdf +URL.c11.pdf = http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf +URL.elf.pdf = ${ELF}/elf.pdf +URL.intel-64-opt.pdf = ${INTEL}/9e/bc/64-ia-32-architectures-optimization-manual.pdf +URL.intel-64-sdm-vol-1.pdf = ${INTEL}/a4/60/253665-sdm-vol-1.pdf +URL.intel-64-sdm-vol-2.pdf = ${INTEL}/a4/60/325383-sdm-vol-2abcd.pdf +URL.intel-64-sdm-vol-3.pdf = ${INTEL}/a4/60/325384-sdm-vol-3abcd.pdf +URL.intel-64-sdm-vol-4.pdf = ${INTEL}/22/0d/335592-sdm-vol-4.pdf +URL.multiboot.pdf = https://www.gnu.org/software/grub/manual/multiboot/multiboot.pdf + +all: ${PDFS} + +${PDFS}: + curl -Lf -o $@ ${URL.$@} + chmod a-w $@ + +clean: + rm -f ${PDFS} diff --git a/doc/rfc/.gitignore b/doc/rfc/.gitignore new file mode 100644 index 00000000..808cd63e --- /dev/null +++ b/doc/rfc/.gitignore @@ -0,0 +1,3 @@ +*.txt +*.txt.gz +tags diff --git a/doc/rfc/Makefile b/doc/rfc/Makefile new file mode 100644 index 00000000..87462a6c --- /dev/null +++ b/doc/rfc/Makefile @@ -0,0 +1,21 @@ +PREFIX ?= ~/.local + +MODULE = ftp.rfc-editor.org::rfcs-text-only + +tags: rfctags.pl rfc-index.txt.gz + perl rfctags.pl | sort -f > $@ + +rfc-index.txt.gz: + rsync -ptz ${MODULE}/rfc-index.txt ${MODULE}/'rfc[1-9]*.txt' . + gzip -9f *.txt + +clean: + rm -f tags *.txt *.txt.gz + +install: tags rfc.vim + install -d ${PREFIX}/share/rfc ${PREFIX}/share/nvim/site/plugin + ln -f tags *.txt.gz ${PREFIX}/share/rfc + install -m 644 rfc.vim ${PREFIX}/share/nvim/site/plugin + +uninstall: + rm -fr ${PREFIX}/share/rfc ${PREFIX}/share/nvim/site/plugin/rfc.vim diff --git a/doc/rfc/rfc.vim b/doc/rfc/rfc.vim new file mode 100644 index 00000000..2455d8a6 --- /dev/null +++ b/doc/rfc/rfc.vim @@ -0,0 +1,30 @@ +if !exists('g:rfc_path') + let g:rfc_path = expand('<sfile>:h:h:h:h') . '/rfc' +endif + +function! s:RFC(number) + if !empty(a:number) + let number = str2nr(matchstr(a:number, '\d\+'), 10) + else + let number = '-index' + endif + let path = expand(g:rfc_path . '/rfc' . number . '.txt.gz') + if filereadable(path) + execute 'silent' 'noswapfile' 'view' path + else + echohl ErrorMsg | echo 'No such RFC' a:number | echohl None + endif +endfunction + +function! s:BufRead() + setlocal readonly + setlocal keywordprg=:RFC + setlocal iskeyword=a-z,A-Z,48-57,.,[,],-,_ + nmap <buffer> <silent> gO :call search('^Table of Contents', 'bcs')<CR> +endfunction + +command! -bar -nargs=? RFC call s:RFC(<q-args>) +augroup RFC + autocmd! + autocmd BufRead rfc*.txt.gz call s:BufRead() +augroup END diff --git a/doc/rfc/rfctags.pl b/doc/rfc/rfctags.pl new file mode 100644 index 00000000..01324a0d --- /dev/null +++ b/doc/rfc/rfctags.pl @@ -0,0 +1,28 @@ +use strict; +use warnings; +use open ':encoding(ISO-8859-1)'; + +use IO::Uncompress::Gunzip qw($GunzipError); + +($,, $\) = ("\t", "\n"); +print '!_TAG_FILE_SORTED', 2, $0; # Promise to pipe this through sort -f +for my $rfc (<*.txt.gz>) { + my $handle = new IO::Uncompress::Gunzip $rfc + or die "${rfc}: ${GunzipError}"; + while (<$handle>) { + chomp; + # Section headings + if (/^([\d.]+|[A-Z][.])\s+([^\t]+)?/) { + print $1, $rfc, $.; + print $2, $rfc, $. if $2; + print $1, $rfc, $. if $1 =~ /^([\d.]+)[.]$/; + } + # References + if (/^\s*(\[[\w-]+\])\s{2,}/) { + print $1, $rfc, $.; + print "\\$1", $rfc, $.; # vim ^] prepends \ to [ + } + } + die "${rfc}: $!" if $!; + close $handle; +} |