1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
// @name memo
// @description to write a memo
// @description-ja メモを書く
// @license Creative Commons 2.1 (Attribution + Share Alike)
// @version 1.0
// @author anekos (anekos@snca.net)
// @maxVersion 2.0pre
// @minVersion 2.0pre
// ==/VimperatorPlugin==
//
// Usage:
// :memo
// show the memo that was written.
// :memo fooooobar!
// write "fooooobar!" to the specified memo file.
//
// Usage-ja:
// :memo
// 書かれたメモを表示する
// :memo fooooobar!
// "fooooobar!" と、メモに書く
//
// Links:
//
// References:
// http://developer.mozilla.org/index.php?title=Ja/Code_snippets/File_I%2F%2FO
(function () {
let localfilepath = liberator.globalVariables.memo_filepath || io.expandPath('~/.vimpmemo');
let charset = 'UTF-8'
//ネタ的
let lz = function(s,n)(s+'').replace(new RegExp('^.{0,'+(n-1)+'}$'),function(s)lz('0'+s,n));
function dateTime () {
with (new Date())
return lz(getYear() + 1900, 4) + '/' +
lz(getMonth(), 2) + '/' +
lz(getDate(), 2) + ' ' +
lz(getHours(), 2) + ':' +
lz(getMinutes(), 2) ;
}
function filepath () {
let result = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
result.initWithPath(localfilepath);
return result;
}
function puts (line) {
line = dateTime() + "\t" + line + "\n";
let out = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream);
let conv = Cc['@mozilla.org/intl/converter-output-stream;1'].
createInstance(Ci.nsIConverterOutputStream);
out.init(filepath(), 0x02 | 0x10 | 0x08, 0664, 0);
conv.init(out, charset, line.length,
Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
conv.writeString(line);
conv.close();
out.close();
}
function gets () {
let file = Cc['@mozilla.org/network/file-input-stream;1'].createInstance(Ci.nsIFileInputStream);
file.init(filepath(), 1, 0, false);
let conv = Cc['@mozilla.org/intl/converter-input-stream;1'].createInstance(Ci.nsIConverterInputStream);
conv.init(file, charset, file.available(), conv.DEFAULT_REPLACEMENT_CHARACTER);
let result = {};
conv.readString(file.available(), result);
conv.close();
file.close();
return result.value;
}
commands.addUserCommand(
['memo'],
'Write memo',
function (arg) {
if (arg.string) {
puts(arg.string);
} else {
liberator.echo(gets());
}
}
);
})();
|