Permalink
Browse files

Merge branch 'xyzzy-022-mirror'

Conflicts:
	src/version.h
  • Loading branch information...
2 parents c41c009 + 0d41ca7 commit b8850490c189524ad77c23a5909c331576763707 @mumurik committed Sep 6, 2012
Showing with 469 additions and 24 deletions.
  1. +145 −0 docs/release-note-0.2.2.243.md
  2. +2 −0 etc/Lisp
  3. +3 −1 lisp/builtin.l
  4. +1 −0 lisp/setf.l
  5. +7 −0 lisp/typespec.l
  6. +43 −1 reference/reference.xml
  7. +16 −0 src/environ.cc
  8. +4 −12 src/filer.cc
  9. +16 −8 src/gen-syms.cc
  10. +2 −2 src/insdel.cc
  11. +6 −0 src/pred.cc
  12. +39 −0 unittest/environ-tests.l
  13. +20 −0 unittest/insdel.l
  14. +165 −0 unittest/typespec-tests.l
@@ -0,0 +1,145 @@
+xyzzy リリースノート
+====================
+
+ * バージョン: 0.2.2.243
+ * リリース日: 2012-08-29
+ * ホームページ: <http://xyzzy-022.github.com>
+
+
+はじめに
+--------
+
+xyzzy 0.2.2.243 ではファイラのソート方法の改善などを行なっています。
+
+
+インストール
+------------
+
+インストーラはありませんので zip を展開するだけです。
+インストールから初期設定までは以下を参照してください。
+
+ * [QuickTour - XyzzyWiki]
+
+
+アップデート
+------------
+
+以下の手順で 0.2.2.235 からアップデートしてください。
+
+ 1. 0.2.2.235 のバックアップ取得
+ 2. 0.2.2.243 を上書き
+ 3. $XYZZY/html を削除 ($XYZZY/docs/old に移動しています)
+ 4. xyzzy.wxp を削除
+ 5. xyzzy.exe 起動
+
+lisp/ 配下や etc/ 配下をカスタマイズしている場合は
+上書き後に再度カスタマイズをお願いします。
+
+
+機能追加
+--------
+
+ * ファイラで数値を考慮したソートをエクスプローラと合わせました (x022235, #347)
+
+ xyzzy 0.2.2.242 までは以下のようなソート結果になっていましたが、
+
+ ```
+ a3.txt
+ a02.txt
+ a10.txt
+ a001.txt
+ ```
+
+ これをエクスプローラとあわせて以下のようになるようにしました。
+
+ ```
+ a001.txt
+ a02.txt
+ a3.txt
+ a10.txt
+ ```
+
+
+バグ修正
+--------
+
+ * なし
+
+
+xyzzy Lisp 開発者向け機能追加
+-----------------------------
+
+ * 環境変数の一覧を取得できるようにしました (x022235, #344)
+
+ ```lisp
+ (si:environ)
+ (("ALLUSERSPROFILE" . "C:\\ProgramData")
+ ("APPDATA" . "C:\\Users\\xyzzy\\AppData\\Roaming")
+ ("CommonProgramFiles" . "C:\\Program Files\\Common Files")
+ ...)
+ ```
+
+ * `buffer-substring` に optional な buffer 引数を追加しました (x022235, #345)
+
+ * `si:getenv``setf` 可能にしました (x022235, #346)
+
+ * 以下の型の typespec を追加しました (x022235, #352)
+
+ `check-type` などでチェックできます。
+
+ * `ed:wait-object`
+ * `ed:char-encoding`
+ * `si:structure-definition`
+ * `si:dll-module`
+ * `si:c-function`
+ * `si:c-callable`
+ * `si:environment`
+
+ * `si:*dll-module-p` を追加しました (x022235, #352)
+
+
+xyzzy Lisp 開発者向けバグ修正
+-----------------------------
+
+ * なし
+
+
+Common Lisp との互換性向上
+--------------------------
+
+ * なし
+
+
+その他
+------
+
+ * なし
+
+
+既知の問題
+----------
+
+ * macro-function が CL と異なる (#320)
+ * multiple-value-bind、multiple-value-setq の macro-function が nil (#319)
+ * special-form-p が特殊形式以外にも t を返す (#318)
+ * call-process :wait t でコマンドが固まると xyzzy も固まる (#316)
+ * (setf (symbol-function)) がシンボル名を返す (#269)
+ * ASCII 以外のサイズはお任せ時に日本語が縦長で表示される (#241)
+ * software-type, software-version が CL と異なる (#169)
+ * :typeがlistかvectorで:namedじゃない構造体でtypepがおかしい (#138)
+ * ローカル関数で (setf READER) (#137)
+ * dualウィンドウモードでfilerのディレクトリ指定が動かない (#130)
+ * c-modeでマクロの継続行のインデントがおかしい (#127)
+ * クリップボードにコピーするとxyzzyが固まる場合がある (#113)
+ * C-u 999 C-g 後にメニュー操作でエラー (#111)
+ * Vista 以降で再変換 (C-c C-c) が動作しない (#101)
+ * ole で responseBody, responseStream を取得できない (#68)
+ * ole-for-each で ie.Document.all の IEnum を取得できない (#67)
+ * ole-create-event-sink に TypeLib のファイル名を明示的に指定しないとエラーになる (#66)
+ * 巨大な文字列に対する正規表現マッチがすごい遅い (#65)
+ * setf の最適化に bug (#63)
+ * handler-case で :no-error を指定してコンパイルするとエラー (#62)
+ * labels の lambda-list 内の init-form で同じ labels 式で定義したローカル関数を呼び出してると、コンパイルで挙動が変わる (#61)
+ * multiframe: 画面端の折り返しがウィンドウ単位でちゃんと動くようにする変更を取り込む (#25)
+
+`(provide "xyzzy-0.2.2.243")`
View
@@ -1259,6 +1259,7 @@ si:base64-encode
si:canonicalize-type
si:closure-variable
si:dump-image-path
+si:environ
si:getenv
si:getpid
si:hmac-md5
@@ -3133,6 +3134,7 @@ si:*copy-into-seq
si:*copy-structure-data
si:*create-wait-object
si:*dll-function-p
+si:*dll-module-p
si:*enum-hash-table
si:*environmentp
si:*find-in-environment
View
@@ -505,6 +505,7 @@
(si::defun-builtin *ratiop (object))
(si::defun-builtin *builtin-function-p (object))
(si::defun-builtin *c-callable-p (object))
+(si::defun-builtin *dll-module-p (object))
(si::defun-builtin *dll-function-p (object))
(si::defun-builtin *bignump (object))
(si::defun-builtin *fixnump (object))
@@ -543,6 +544,7 @@
(si::defun-builtin *structure-subtypep (type1 type2))
(si::defun-builtin dump-image-path ())
(si::defun-builtin system-root ())
+(si::defun-builtin environ ())
(si::defun-builtin getenv (variable))
(si::defun-builtin putenv (variable &optional value))
(si::defun-builtin getpid ())
@@ -766,7 +768,7 @@
(si::defun-builtin insert-file-contents (filename &optional visit-p offset size))
(si::defun-builtin insert (&rest string-or-char))
(si::defun-builtin delete-region (from to))
-(si::defun-builtin buffer-substring (from to))
+(si::defun-builtin buffer-substring (from to &optional buffer))
(si::defun-builtin copy-to-clipboard (string))
(si::defun-builtin get-clipboard-data ())
(si::defun-builtin clipboard-empty-p ())
View
@@ -413,6 +413,7 @@
,new-sequence))
(defsetf default-value set-default)
+(defsetf si:getenv si:putenv)
(define-setf-method ldb (bytespec int &environment env)
(multiple-value-bind (temps vals stores store-form access-form)
View
@@ -122,7 +122,14 @@
(ed:dde-handle . ed:dde-handle-p)
(ed:window . ed:windowp)
(ed:oledata . ed:oledatap)
+ (ed:wait-object . ed:wait-object-p)
+ (ed:char-encoding . ed:char-encoding-p)
(si:chunk . si:*chunkp)
+ (si:structure-definition . si:*structure-definition-p)
+ (si:dll-module . si:*dll-module-p)
+ (si:c-function . si:*dll-function-p)
+ (si:c-callable . si:*c-callable-p)
+ (si:environment . si:*environmentp)
))
(dolist (x typespec-alist)
View
@@ -5692,10 +5692,18 @@ buffer-streamであるストリームの入出力のポイントを指定しま
<chapter>
<title>buffer-substring</title>
<type>Function</type>
-<arguments>buffer-substring FROM TO</arguments>
+<arguments>buffer-substring FROM TO &amp;optional BUFFER</arguments>
<package>editor</package>
<description>
バッファの指定された範囲の文字列を返します。
+
+ FROM : 開始位置のポイント
+ TO : 終了位置のポイント
+ BUFFER : バッファを指定します。
+ 指定がなければカレントバッファになります。
+
+補足:
+ BUFFER 引数は xyzzy 0.2.2.243 から指定可能です。
</description>
<seealso>substring</seealso>
<section>文字列</section>
@@ -26546,6 +26554,30 @@ Base64エンコードします。
</chapter>
<chapter>
+<title>si:environ</title>
+<type>Function</type>
+<arguments>environ</arguments>
+<package>system</package>
+<description>
+全ての環境変数の名前と値の連想リストを返します。
+
+使用例:
+ (si:environ)
+ =&gt; (("ALLUSERSPROFILE" . "C:\\ProgramData")
+ ("APPDATA" . "C:\\Users\\xyzzy\\AppData\\Roaming")
+ ("CommonProgramFiles" . "C:\\Program Files\\Common Files")
+ ...)
+
+補足:
+ xyzzy 0.2.2.243 から利用可能です。
+</description>
+<seealso>si:getenv</seealso>
+<seealso>si:putenv</seealso>
+<section>システム</section>
+<file>builtin.l</file>
+</chapter>
+
+<chapter>
<title>si:getenv</title>
<type>Function</type>
<arguments>getenv VARIABLE</arguments>
@@ -26559,9 +26591,18 @@ Base64エンコードします。
;;; 環境変数PATHを取り出して、個々のPATHに分割する。
(split-string (si:getenv "PATH") #\;)
=&gt; ("c:\\usr\\local\\bin" "C:\\WINNT\\system32" "C:\\WINNT" ...)
+
+ (setf (si:getenv "FOO") "BAR")
+ =&gt; "BAR"
+ (si:getenv "FOO")
+ =&gt; "BAR"
+
+補足:
+ xyzzy 0.2.2.243 からsetf可能です。
</description>
<seealso>user-name</seealso>
<seealso>machine-name</seealso>
+<seealso>si:environ</seealso>
<seealso>si:putenv</seealso>
<section>システム</section>
<file>builtin.l</file>
@@ -26592,6 +26633,7 @@ VALUE を省略した場合や nil を指定した場合は環境変数を削除
補足:
xyzzy 0.2.2.236 から利用可能です。
</description>
+<seealso>si:environ</seealso>
<seealso>si:getenv</seealso>
<section>システム</section>
<file>builtin.l</file>
View
@@ -940,6 +940,22 @@ environ::save_geometry ()
}
lisp
+Fsi_environ ()
+{
+ lisp r = Qnil;
+ for (char **e = environ; *e; e++)
+ {
+ char *eq = strchr (*e, '=');
+ if (!eq) continue;
+ lisp env = xcons (make_string (*e, eq - *e),
+ make_string (eq + 1));
+ r = xcons (env, r);
+ }
+
+ return Fnreverse (r);
+}
+
+lisp
Fsi_getenv (lisp var)
{
check_string (var);
View
@@ -584,18 +584,10 @@ compare_filename (const char *s1, const char *s2, int param)
u_char c1 = *p1++, c2 = *p2++;
if (digit_char_p (c1) && digit_char_p (c2))
{
- const u_char *const b1 = p1 - 1;
- for (; digit_char_p (*p1); p1++)
- ;
- const u_char *const b2 = p2 - 1;
- for (; digit_char_p (*p2); p2++)
- ;
- int l1 = p1 - b1, l2 = p2 - b2;
- if (l1 != l2)
- return l1 - l2;
- int d = memcmp (b1, b2, l1);
- if (d)
- return d;
+ int n1 = atoi (reinterpret_cast <const char *> (p1 - 1));
+ int n2 = atoi (reinterpret_cast <const char *> (p2 - 1));
+ if (n1 != n2)
+ return n1 - n2;
}
else
{
Oops, something went wrong.

0 comments on commit b885049

Please sign in to comment.