From 299a99b93ec60f7b85345aa1e88d4d513a9ace80 Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Sat, 2 Oct 2010 18:16:39 -0500 Subject: [PATCH 1/3] add support for .proto, clean up scala --- vim/ftdetect/scala.vim | 3 -- vim/syntax/proto.vim | 106 +++++++++++++++++++++++++++++++++++++++++ vimrc | 2 + 3 files changed, 108 insertions(+), 3 deletions(-) delete mode 100644 vim/ftdetect/scala.vim create mode 100644 vim/syntax/proto.vim diff --git a/vim/ftdetect/scala.vim b/vim/ftdetect/scala.vim deleted file mode 100644 index f1f3e83..0000000 --- a/vim/ftdetect/scala.vim +++ /dev/null @@ -1,3 +0,0 @@ -" $URL: https://lampsvn.epfl.ch/svn-repos/scala/scala-tool-support/trunk/src/vim/ftdetect/scala.vim $ - -au BufRead,BufNewFile *.scala set filetype=scala diff --git a/vim/syntax/proto.vim b/vim/syntax/proto.vim new file mode 100644 index 0000000..42f3307 --- /dev/null +++ b/vim/syntax/proto.vim @@ -0,0 +1,106 @@ +" Protocol Buffers - Google's data interchange format +" Copyright 2008 Google Inc. All rights reserved. +" http://code.google.com/p/protobuf/ +" +" Redistribution and use in source and binary forms, with or without +" modification, are permitted provided that the following conditions are +" met: +" +" * Redistributions of source code must retain the above copyright +" notice, this list of conditions and the following disclaimer. +" * Redistributions in binary form must reproduce the above +" copyright notice, this list of conditions and the following disclaimer +" in the documentation and/or other materials provided with the +" distribution. +" * Neither the name of Google Inc. nor the names of its +" contributors may be used to endorse or promote products derived from +" this software without specific prior written permission. +" +" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +" OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +" This is the Vim syntax file for Google Protocol Buffers. +" +" Usage: +" +" 1. cp proto.vim ~/.vim/syntax/ +" 2. Add the following to ~/.vimrc: +" +" augroup filetype +" au! BufRead,BufNewFile *.proto setfiletype proto +" augroup end +" +" Or just create a new file called ~/.vim/ftdetect/proto.vim with the +" previous lines on it. + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case match + +syn keyword pbTodo contained TODO FIXME XXX +syn cluster pbCommentGrp contains=pbTodo + +syn keyword pbSyntax syntax import option +syn keyword pbStructure package message group +syn keyword pbRepeat optional required repeated +syn keyword pbDefault default +syn keyword pbExtend extend extensions to max +syn keyword pbRPC service rpc returns + +syn keyword pbType int32 int64 uint32 uint64 sint32 sint64 +syn keyword pbType fixed32 fixed64 sfixed32 sfixed64 +syn keyword pbType float double bool string bytes +syn keyword pbTypedef enum +syn keyword pbBool true false + +syn match pbInt /-\?\<\d\+\>/ +syn match pbInt /\<0[xX]\x+\>/ +syn match pbFloat /\<-\?\d*\(\.\d*\)\?/ +" TODO: .proto also supports C-style block comments; +" see /usr/share/vim/vim70/syntax/c.vim for how it's done. +syn region pbComment start="//" skip="\\$" end="$" keepend contains=@pbCommentGrp +syn region pbString start=/"/ skip=/\\"/ end=/"/ +syn region pbString start=/'/ skip=/\\'/ end=/'/ + +if version >= 508 || !exists("did_proto_syn_inits") + if version < 508 + let did_proto_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink pbTodo Todo + + HiLink pbSyntax Include + HiLink pbStructure Structure + HiLink pbRepeat Repeat + HiLink pbDefault Keyword + HiLink pbExtend Keyword + HiLink pbRPC Keyword + HiLink pbType Type + HiLink pbTypedef Typedef + HiLink pbBool Boolean + + HiLink pbInt Number + HiLink pbFloat Float + HiLink pbComment Comment + HiLink pbString String + + delcommand HiLink +endif + +let b:current_syntax = "proto" diff --git a/vimrc b/vimrc index 16ff75b..c8037c8 100644 --- a/vimrc +++ b/vimrc @@ -229,6 +229,8 @@ if has('autocmd') autocmd FileType c,cpp :call cabbrev() autocmd BufRead,BufNewFile *.mm set filetype=noweb + autocmd BufRead,BufNewFile *.scala set filetype=scala + autocmd BufRead,BufNewFile *.proto setfiletype proto endif " make tab reindent in normal mode From 790b80a2294e405287089bdc60847aa7f1d29e70 Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Sat, 2 Oct 2010 18:21:33 -0500 Subject: [PATCH 2/3] update llvm.vim --- vim/syntax/llvm.vim | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/vim/syntax/llvm.vim b/vim/syntax/llvm.vim index 5d9f789..23802f4 100644 --- a/vim/syntax/llvm.vim +++ b/vim/syntax/llvm.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: llvm " Maintainer: The LLVM team, http://llvm.org/ -" Version: $Revision: 97271 $ +" Version: $Revision$ if version < 600 syntax clear @@ -49,6 +49,7 @@ syn keyword llvmKeyword hidden protected default syn keyword llvmKeyword except deplibs syn keyword llvmKeyword volatile fastcc coldcc cc ccc syn keyword llvmKeyword x86_stdcallcc x86_fastcallcc +syn keyword llvmKeyword ptx_kernel ptx_device syn keyword llvmKeyword signext zeroext inreg sret nounwind noreturn syn keyword llvmKeyword nocapture byval nest readnone readonly noalias syn keyword llvmKeyword inlinehint noinline alwaysinline optsize ssp sspreq @@ -57,14 +58,12 @@ syn keyword llvmKeyword module asm align tail to syn keyword llvmKeyword addrspace section alias sideeffect c gc syn keyword llvmKeyword target datalayout triple syn keyword llvmKeyword blockaddress -syn keyword llvmKeyword union " Obsolete keywords. -syn keyword llvmError uninitialized implementation -syn keyword llvmError getresult big little endian begin end +syn keyword llvmError getresult begin end " Misc syntax. -syn match llvmIgnore /[%@]\d\+\>/ +syn match llvmNoName /[%@]\d\+\>/ syn match llvmNumber /-\?\<\d\+\>/ syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/ syn match llvmFloat /\<0x\x\+\>/ @@ -73,7 +72,7 @@ syn keyword llvmConstant zeroinitializer undef null syn match llvmComment /;.*$/ syn region llvmString start=/"/ skip=/\\"/ end=/"/ syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/ -syn match llvmIdentifier /[%@][-a-zA-Z$._0-9][-a-zA-Z$._0-9]*/ +syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/ " Syntax-highlight dejagnu test commands. syn match llvmSpecialComment /;\s*RUN:.*$/ @@ -99,7 +98,7 @@ if version >= 508 || !exists("did_c_syn_inits") HiLink llvmKeyword Keyword HiLink llvmBoolean Boolean HiLink llvmFloat Float - HiLink llvmIgnore Ignore + HiLink llvmNoName Identifier HiLink llvmConstant Constant HiLink llvmSpecialComment SpecialComment HiLink llvmError Error From c95280798c431c0e843cd0bb3d0a8a16d6b0085c Mon Sep 17 00:00:00 2001 From: David Alexander Majnemer Date: Tue, 5 Oct 2010 16:41:24 -0500 Subject: [PATCH 3/3] add answerback.c, tells us if we are on putty --- answerback.c | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 answerback.c diff --git a/answerback.c b/answerback.c new file mode 100644 index 0000000..9f2ed5b --- /dev/null +++ b/answerback.c @@ -0,0 +1,130 @@ +#define _POSIX_C_SOURCE 200112L + +#include /* for signal handling */ +#include /* fopen(), et al. */ +#include /* for ssize_t, read, write */ +#include /* for EXIT_SUCCESS, EXIT_FAILURE */ +#include /* ctermid, et al. */ + +int main() +{ + const char *cterm = ctermid(NULL); + + if (cterm == NULL) + { + fputs("Cannot get the path to the console", stderr); + } + + FILE *fp; + if((fp = fopen(cterm, "r+b")) == NULL) + { + perror("open"); + return EXIT_SUCCESS; + } + + int fd = fileno(fp); + if (fd == -1) + { + perror("fileno"); + return EXIT_FAILURE; + } + + setbuf(fp, NULL); + + sigset_t new_sig; + if (sigemptyset(&new_sig) == -1) + { + perror("sigemptyset"); + return EXIT_FAILURE; + } + if (sigaddset(&new_sig, SIGINT) == -1) + { + perror("sigaddset"); + return EXIT_FAILURE; + } + if (sigaddset(&new_sig, SIGTSTP) == -1) + { + perror("sigaddset"); + return EXIT_FAILURE; + } + sigset_t old_sig; + if (sigprocmask(SIG_BLOCK, &new_sig, &old_sig) == -1) + { + perror("sigprocmask"); + return EXIT_FAILURE; + } + + struct termios old_term; + if (tcgetattr(fd, &old_term) == -1) + { + perror("tcgetattr"); + return EXIT_FAILURE; + } + + struct termios new_term = old_term; + new_term.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL | ICANON); + new_term.c_cc[VMIN] = 0; + new_term.c_cc[VTIME] = 10; + + if (tcsetattr(fd, TCSAFLUSH, &new_term) == -1) + { + perror("tcsetattr"); + if (tcsetattr(fd, TCSAFLUSH, &old_term) == -1) + { + perror("tcsetattr"); + } + return EXIT_FAILURE; + } + + char code[1] = { 5 }; + for (;;) + { + ssize_t ret = write(fd, code, sizeof(code)); + if (ret == -1) + { + perror("write"); + tcsetattr(fd, TCSAFLUSH, &old_term); + return EXIT_FAILURE; + } + else if (ret > 0) + { + break; + } + } + + char buffer[16] = { 0 }; + ssize_t ret = read(fd, buffer, sizeof(buffer) - 1); + if (ret == -1) + { + perror("read"); + tcsetattr(fd, TCSAFLUSH, &old_term); + return EXIT_FAILURE; + } + buffer[ret] = '\0'; + + if (tcsetattr(fd, TCSAFLUSH, &old_term) == -1) + { + perror("tcsetattr"); + return EXIT_FAILURE; + } + + if (sigprocmask(SIG_SETMASK, &old_sig, NULL) == -1) + { + perror("sigprocmask"); + return EXIT_FAILURE; + } + + if (fclose(fp) == EOF) + { + perror("fclose"); + return EXIT_FAILURE; + } + + if (ret > 0) + { + puts(buffer); + return EXIT_SUCCESS; + } + + return EXIT_FAILURE; +}