Skip to content

Instantly share code, notes, and snippets.

@k-takata
k-takata / hd2str_time.vim
Created June 16, 2014 12:55
Performance of map() and for loop (VimL)
let hds = []
for j in range(1, 200)
for i in range(0x20, 0x7e)
let hds += [printf("%02x", i)]
endfor
endfor
let hd = join(hds, '')
" Time of split
let stime = reltime()
diff --git a/autoload/vimproc.vim b/autoload/vimproc.vim
index bb79a8c..543af50 100644
--- a/autoload/vimproc.vim
+++ b/autoload/vimproc.vim
@@ -884,10 +884,8 @@ function! s:read(...) dict "{{{
" return s:hd2str([hd])
endfunction"}}}
function! s:read_lines(...) dict "{{{
- let res = self.buffer
-
@k-takata
k-takata / testpy_ic.py
Last active August 29, 2015 14:03
onigmo test script for cclass with ignorecase
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function, unicode_literals
import onig
import testpy
import sys
x2 = testpy.x2
x3 = testpy.x3
@k-takata
k-takata / pre-push
Last active August 29, 2015 14:05
Git hook to prevent pushing when patches are applied by StGit
#!/bin/sh
if stg top > /dev/null 2>&1; then
echo error: patch applied.
exit 1
fi
@k-takata
k-takata / mqpull.sh
Last active May 31, 2024 04:39
Do 'hg pull' and 'hg pull --mq' easily
#!/bin/sh
mainbundle=hg_main.bundle
mqbundle=hg_mq.bundle
rm -f $mainbundle $mqbundle
hg --pager=no incoming -v --bundle $mainbundle
if [ $? -eq 255 ]; then
exit 1
@k-takata
k-takata / createfile.c
Last active August 29, 2015 14:07
Create a very long file name with ANSI API
#include <windows.h>
main(int argc, char *argv[])
{
char *filename = "あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお.txt";
HANDLE h;
h = CreateFileA(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
printf("handle:%p, length:%d\n", h, strlen(filename));
CloseHandle(h);
@k-takata
k-takata / 486-OpenWatcom.md
Last active March 4, 2024 06:43
『はじめて読む486』のサンプルを OpenWatcom でビルドする

『はじめて読む486』のサンプルを OpenWatcom でビルドする

概要

『はじめて読む486』のサンプルプログラム集 をできるだけ簡単に試してみるために、OpenWatcom を使ってビルドしてみました。

※ 16bit 用の無料で使えるコンパイラとしては LSI C-86 試食版が有名ですが、関数の呼び出し規約が MSC や Borland C とは異なっているため、アセンブリプログラムの修正が必須となってしまいます。また、Turbo C 2.01 もありますが、インストールが面倒で TASM も含まれていません。

ダウンロード

@k-takata
k-takata / dl-patches.sh
Last active August 29, 2015 14:07
Download all patches for Vim 7.4
#!/bin/bash
version=7.4
#unstable=unstable/
unstable=
patch_url=http://ftp.vim.org/pub/vim/${unstable}patches/${version}
# Get start and end version
version_esc=${version//./\\.} # Escape dots
start=$(gawk '{l = gensub(/'${version_esc}'\.([0-9]+)/, "\\1", 1, $2)} END {printf "%03d", l+1}' README 2> /dev/null || echo 001)
@k-takata
k-takata / issue174-mingw.diff
Created October 20, 2014 11:35
Vimproc issue #174
--- a/autoload/proc_w32.c
+++ b/autoload/proc_w32.c
@@ -43,6 +43,7 @@
#include <windows.h>
#include <winbase.h>
#include <shellapi.h>
+#include <shlobj.h>
#include <shobjidl.h>
#if 0
# include <winsock2.h>
@k-takata
k-takata / map_time.vim
Created November 10, 2014 13:18
Bench mark of tolower(), split() and map() in VimL
let pathext = ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.tcl"
let s:path_separator = ";"
" Time of split
let stime = reltime()
for i in range(1, 1000)
let s:path_extensions = split(tolower(pathext), s:path_separator)
endfor
echo reltimestr(reltime(stime)) . " (split) " . len(s:path_extensions)
echo s:path_extensions