Git Product home page Git Product logo

sakura-editor / sakura Goto Github PK

View Code? Open in Web Editor NEW
1.2K 49.0 158.0 97.32 MB

SAKURA Editor (Japanese text editor for MS Windows)

Home Page: https://sakura-editor.github.io/

License: Other

C++ 74.90% Python 0.24% Batchfile 0.77% HTML 20.01% CSS 0.10% JavaScript 0.04% Inno Setup 1.13% Ragel 0.02% C 1.83% Makefile 0.14% CMake 0.09% PowerShell 0.07% C# 0.63% VBScript 0.02% V 0.01% AutoHotkey 0.01% RPC 0.01%
editor text-editor windows windows-desktop macro bregonig cpp sakura-editor grep regex

sakura's People

Contributors

7-rate avatar berryzplus avatar beru avatar dau6jarl avatar dep5 avatar ds14050 avatar eldersjavas avatar eltociear avatar gentahgr avatar germanaizek avatar hiroki-oogakiuchi avatar k-takata avatar kageshiron avatar kenchjp avatar kengoide avatar kobake avatar m-tmatma avatar mpaladin avatar ocelot1210 avatar rukoto avatar sam8979 avatar sanomari avatar suconbu avatar takeyamajp avatar takke avatar tats-u avatar toduq avatar usagisita avatar yoshinrt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sakura's Issues

OSDN #81441 [要望] デフォルトで強調されるHTMLとCSSのキーワードを増やして欲しい。

OSDN側に要望リクエストありましたのでIssue展開します。
https://osdn.net/projects/sakura-editor/forums/34071/39646/

デフォルトのインストーラーに含む強調キーワードファイル他をどうインストーラ他にどうやって含めていくかって話があるのかなとは思いますが。

HTML 要素リファレンス - HTML | MDN
https://developer.mozilla.org/ja/docs/Web/HTML/Element

CSS リファレンス - CSS: カスケーディングスタイルシート | MDN
https://developer.mozilla.org/ja/docs/Web/CSS/Reference

JavaScript リファレンス - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference

このあたり方向性見えればキーワードファイルの追加は私でもできそうですが、
第三者提供物をどう受け取ってどうパッケージングしていくかってフローのイメージができてません。

cmake 対応

cmake の導入に関してどう思いますか?

cmake は、マルチプラットフォームのビルドツール(正確にはビルド用のプロジェクト生成ツール)です。
CMakeLists.txt というテキストファイルにビルド設定を記述します。

CMakeLists.txt が置かれているトップディレクトリを指定して実行することにより
各種ビルドツールで使用できるプロジェクトファイルを生成できます。
(Visual Studio, Ninja, Makefile など)

単体テストの GoogleTest も使用している他、XCode でのコンパイルに
使用されている clang/llvm でもビルドに使用されています。

cmake を使うことのメリットは、
複数のバージョンの Visual Studio に容易に対応できたり複数のコンパイラに対応できることです。GitHub 上で Sakura Editor のMinGW-W64 対応を行っている方がおられるようですが、
このようなニーズにも対応できると思います。

32bit バージョンと64bitバージョンのビルドをするときもメンテする労力も少ないです。

デメリットは
CMake の使い方を覚える学習コストがかかり、実運用できるまでに時間がかかることと
日本語の情報がすくないことです。

Appveyor で強制リビルドする方法

Appveyor で追加のコミットなしで強制的にリビルドする方法の紹介です。

↓ これは私が作った python スクリプトです。(python 2 系が対象です)
https://github.com/m-tmatma/AppVeyorBuild/blob/master/python/appveyorBuild.py

実行する前に以下を実行しておきます。
pip install --user appveyor-client

以下を実行すると、 でアクセスできるすべてのリポジトリ、
すべてのブランチに対して、ビルドをかけます。

appveyorBuild.py 


https://ci.appveyor.com/api-token
で確認できます。

sourceforge.netにあるパッチの適用方法

sourceforge.netに上がっているパッチを適用する方法について提案します。(関連: #45)

パッチというのはここにあるパッチのことです。
https://sourceforge.net/p/sakura-editor/patchunicode/

現状で100個くらいの未適用パッチが積まれています。
内容にもよりますが、大半はそのまま使えるパッチだと思っています。
使えるものは活用しないともったいないです。

今回、一般掲示板に「エアロスナップ対応」をなんとかしてほしいという書込みがあり、
ここのパッチを適用するとしたら具体的にどうしたらいいんだ?という疑問がわきました。

なんとなく、こうしたらいいんじゃね?と思ったことを書いてみますので、
疑問点・改善案などありましたらコメントいただけると幸いです。

作業の流れ

  1. 懸案のパッチファイルをticketsページからダウンロードする
  2. ダウンロードしたファイルからパッチのベースrevを確認する
  3. SVNで該当revを落としてくる
  4. SVNリポジトリにパッチを適用する
  5. GITリポジトリのログで該当revのコミットを探し、そのコミットで作業ブランチを作成する
  6. SVN→GITのフォルダ間でdiffをとって差分をGIT側に適用する
  7. GITリポジトリで変更をコミットする(掲示板のポスト日時、投稿者名で代理コミット)
  8. GITリポジトリのログで該当revの次~最新コミットを選択し、作業ブランチにマージする
  9. ローカルでビルドしてみて、問題があれば最小限の修正をする(修正は代理でなく自身のコミット)
  10. 作業ブランチをGitHub上の適当なリポジトリにPushする
  11. プルリクエストを送る
  12. ReviewとReview結果への対応は通常通り行う(修正は代理でなく自身のコミット)
  13. 問題が解決したらマージする

書き出してみると作業項目多いなぁ~~~。

プルリクエストの設定変更

プルリクエストの設定変更しませんか?
https://dev.classmethod.jp/tool/github/protect-branch/

以下のオプションを有効にするのがいいと思います。

  • "Require pull request reviews before merging"
  • "Dismiss stale pull request approvals when new commits are pushed"
  • "Require status checks to pass before merging"

コードレビューに関してこんな機能があるようです。
https://blog.github.com/2016-12-07-introducing-review-requests/

ビルド要件の精査と記述

Visual Studio Community 2017 インストール時に Windows SDK を入れておかないとビルド通らない(当然といえば当然だけど README に明記はしたほうが良い情報)。

他、諸々ビルド要件について精査して README に書いておく。

参考事例

https://twitter.com/arigayas/status/998445467418574848
この例では Windows SDK 8.1 で通っているけど、このあたりのバージョン挙動についても調べておきたい。

grep/grep 置換で除外ファイル、除外フォルダを指定できるようにする

grep/grep 置換で除外ファイル、除外フォルダを指定できるようにする

https://sakura-editor.github.io/help/HLP000067.html
(旧: http://sakura-editor.sourceforge.net/htmlhelp2/HLP000067.html)

には以下のように書いてある。

  • ファイルパターンの先頭に!を付ける(例: !*.obj)と,そのパターンに当たるファイルをGrep対象から外します。
  • ファイルパターンの先頭に#を付ける(例: #*.svn)と、そのパターンに当たるサブフォルダをGrep対象から外します。(sakura:2.1.0.0以降)
  • 指定位置にかかわらず除外指定は検索指定より優先されます.
  • 何も指定しない場合は、「.」を指定したことになります。

しかし、ほとんどの人はこの機能の存在を知らない。(私も含めて)

簡単に、除外指定できるようにする。

以下サンプル (位置はずれている部分がありますが、サンプルなのでご容赦ください)

grep-dialog

grep-dialog-en

以下 grep ダイアログのリソースのみ変えた差分

diff.txt

コンフィグ名の_unicodeについて

コミュニティでansi版サポートが要るか意見集めてる認識です。

標準はただのdebug/releaseにしませんか?

当面は32bitがメインで行くと思いますが、いつまでも64bitを非公式有志版のみにしとくのも変な気がしますので。

Funccode_define.h および Funccode_enum.h の生成処理が動作していない

Funccode_define.h および Funccode_enum.h の生成処理が動作していない

sakura_core\Funccode_x.hsrc には以下のコメントが記載されている。

//このファイルから、Funccode_define.h と Funccode_enum.h が生成されます。

sakura_core\Funccode_x.hsrc から Funccode_define.h と Funccode_enum.h を
生成する処理は、sakura\preBuild.bat にあるが、HeaderMake と MakefileMake のパス名が
間違っているため (本来は HeaderMake_vc2017 と MakefileMake_vc2017) 機能していない。

Funccode_define.h も Funccode_enum.h もバージョン管理化にあるのでビルドエラーには
ならないが、初期実装者の意図とは異なっていると思われる。

仕様変更要望:「常駐しない」をデフォルトにしたい。

最近はDevよりOps側の作業が多いのですが、サクラエディタはexe単品でCDに焼いて作業PCで動かして使うこともあり、毎度Iniファイルがない状態でスタートするので、すべてがデフォルトで動かしてます。

1点タイトルの通り常駐しちゃうので、毎度タスクトレイから落とすという些細なことなのですが、意外と常駐を嫌う担当者も多くて地味に手間なので「常駐しない」をデフォルトにしてはどうかと。

iniファイルごと持って行けばいい話といえばそれまでなのですが。。。

Organization, Team の管理者について

管理者を2人に増やします

  • Organization の Owner (sakura-editor の管理者)
  • Team の Maintainer (sakura-developers の管理者)

について、これまでは kobake が1人で受け持つ体制でやっていましたが、これらの管理者は常に2人程度いるのが好ましいかと思っています。管理者が1人だとその1人の連絡がとれなくなった場合にいろいろ困るので。

で、これは自分の独断で恐縮なのですが、 @KENCHjp さんを上記2か所の管理者として設定しました。サクラエディタとの付き合いが最も長く信頼できるというのが理由です。

Organization の Owner について

sakura-editor Organization の様々な設定ができます。実はあんまりいじりません。他の人を Owner に指名する権利も持ちます(Owner は複数人設定可能です)。

Team の Maintainer について

sakura-developers Team のチーム自体の設定(あまりいじらない)や、メンバー追加ができたりします。他の人を Maintainer に指名する権利も持ちます(Maintainer は複数人設定可能です)。

管理者としての心構え(?)

  • 常に2人以上の管理者がいる状態を維持するのが好ましいです。
  • 安全のため、2FA(二段階認証)を設定しておくのが好ましいです。

※というか 2FA は本当は管理者に限らず皆が設定しておくのが本当は好ましいですが今のところはスルーしてます。

@KENCHjp さん、責任を負担させるようですみませんが、支障なければよろしくお願い致します。
対応難しそうであれば今でも後でも辞退いただいて構いません。

今後の話

自分自身が割と飽きっぽいというか現実での環境をころころ変える性質なもので、たぶんどこかのタイミングで本業に忙殺されるなどの理由で疎遠になる可能性高いです。

あ、kobake 消えたな、って思ったら管理者もう1人増やしてください(すみません)。

バージョン情報で git の commit hash を表示する

バージョン情報で git の commit hash を表示すると便利だと思います。

SubWCRev と同様のプログラムで
GitWCRev というプログラムも存在するが、
TortoiseGit がインストールされていないと使えない。

Appveyor の Build environment には
TortoiseGit がリストにはない。

ただ通常の git コマンドだけでも以下のようなバッチファイルで、git の commit hash を
取り出せるので、svnrev.h のようなファイルを作ることも可能だと思う。

@echo off
for /f "usebackq" %%s in (`git show -s --format^=%%H`) do (
    set COMMITID=%%s
)

echo %COMMITID%

ユーザーがバグ報告するときに、OS 等の情報を簡単に取得できるようにする

ユーザーがバグ報告するときに、OS 等の情報を簡単に取得できるようにする

ヘルプ → バージョン情報 → 情報をコピー で
サクラエディタ のバージョン情報をクリップボードに取得できるが、
OS の情報も取得できるようにする。

従来 OS の情報を取得するには GetVersionEx が使われてきたが、
Windows 8.1 以降では manifest を正しく設定しないと偽装された値を返す。

manifest に指定する GUID のメンテが面倒なので WMI を使ってみる

Appveyor で sakura editor の organization 用のアカウントを作成してほしい

https://help.appveyor.com/discussions/questions/1154-appveyor-account-for-github-organizations

Posted by Feodor Fitsner on Jul 19, 2015 @ 04:12 AM のコメント参照

AppVeyor account is not bound to GitHub organization. Just sign up on https://ci.appveyor.com/signup page. If you mean the URL part https://ci.appveyor.com/project/<organization>/project then this could be updated on https://ci.appveyor.com/account page.

次回リリースのバージョン番号の決定

内容

次回リリースのバージョン番号を決めたいです。

参考

今のところリリースされている最新バージョンは 2.3.2.0 です。

https://sourceforge.net/projects/sakura-editor/files/sakura2/

  • 2.3.2.0 ... 2017-05-02
  • 2.3.1.0 ... 2016-08-14
  • 2.3.0.0 ... 2015-10-12

次バージョンのリリース時期・内容

パッケージングの仕組みがうまく動くようになった段階でリリースするくらいの感覚で考えています。時期としては6月末くらい……かな、と(個人的な感覚です)。

次バージョン番号の検討材料

  • 機能的に大きな変更は入らないと考えています。そういう意味では 2.3.3.0 くらいでも良いかも。
  • GitHub 移行を大きな変更と捉え、2.4.0.0 にするという選択もあります。

これまでのリリース時期とバージョン番号の決定ポリシーについて

これまでにバージョン番号やリリース時期はどのように決められていたのか、ポリシー等分かる方いらっしゃいましたら情報いただきたいです。

Appveyor の導入

Appveyor を導入しませんか?

(ご存知かもしれませんが)
Appveyor は Windows 上で動作するクラウドの CI ツールです。

オープンソース・ソフトウェアに対してはタダです。

.NET のアプリ以外にも C++ ベースの Windows アプリのビルドに使えます。
ビルドした成果物を Appveyor 経由で公開することもできます。

Appveyor を Github や bitbucket などと連携することによって

  • 新しいブランチが作成されたタイミング、
  • push されたタイミング、
  • プルリクエストが作成されたタイミング、
  • 手動
  • REST API 経由 経由

などで自動的にビルドを行うことができます。

プルリクエストが送られたタイミングで自動的にビルドチェックをしてくれるので
プルリクエストをレビューする前にビルドが通るか確認できます。

また googletest などで単体テストを実装して Appveyor で実行することにより
回帰テストを実行することも可能です。

開発コアメンバー募集

OSDNフォーラム側トピック

※OSDNフォーラム側で開発の話をするのは今後はやめようと思います。話が分散してしまうので。GitHub Issues 側に話を引き継いでいきます。

開発コアメンバー募集

現在、PR (Pull requests) のレビュー待ちが多く発生してしまっている感じです。

レビュー&マージ権限を運用いただける方が追加でもう少しいると助かるな、と思っているのですが、ご協力いただける方がいらっしゃいましたら手を挙げていただけると嬉しいです。(現時点でのコアメンバー@kobake, @ds14050, @KENCHjp の3名です)

特にこれまでの SourceForge 運営や外部活動に関わっていた方の再参入を歓迎致します。

名指ししちゃいます

  • novice123 さん、直近までの積極的な Subversion コミットありがとうございました。よろしければ OSDN, GitHub についてもご参加いただけると嬉しいです。お待ちしております。
  • kageshiron さん、Chocolateyパッケージ登録ありがとうございます。もしよろしければ OSDN, GitHub の管理にも関わっていただけると嬉しいです。
  • @m-tmatma さん、積極的な Pull requests やご提案ありがとうございます。開発コアメンバーとしての参入いかがでしょうか。

お手間でなければ、という前提ですが!

上記以外の方のご参入もお待ちしております

上記以外の方のご参入もお待ちしております。

ただ、まったくの名無しさんに管理権限を付与するのはちょっと怖いので、何かしらの活動記録を確認できるものをご提示いただけると助かります。

HeaderMakeのメッセージ出力も英語化する?

ログ全体をチェックしていて気付きました。
HeaderMakeのメッセージ出力も化けています。
https://ci.appveyor.com/project/sakuraeditor/sakura/build/1.0.84#L458

自動生成ファイルをリポジトリから外す対応により上書きが発生しなくなったため、
初回メッセージは消えていました。

  • #31 HeaderMake が生成するファイル (Funccode_define.h, Funccode_enum.h) をリポジトリから除外 86d411f

MakefileMakeについてはCMakeによる代替の可能性が出てきている認識です。
HeaderMakeについても代替案があるかも知れません。

  • enumとdefineの定義を共用できるようにdefineマクロで工夫する、みたいなのをWebで見かけたことがあります。

MakefileMake同様に対応する( #44 )か、
あえてこのままとするか判断が必要と思います。

Installer を作成してみる

Installer を作成してみる

Inno Setup は以下から入手できる。
http://www.jrsoftware.org/isdl.php

最終的には appveyor でビルドしたいが、その準備作業です。

2018/6/8 追記

appveyor には innosetup-5.5.9-unicode.exe がインストールされている。

→ なので innosetup-5.5.9-unicode.exe を使う

2018/6/16 追記

Inno Setup 5 のコマンドラインでのコンパイル方法
http://www.jrsoftware.org/ishelp/index.php?topic=compilercmdline

http://www.jrsoftware.org/isdl.php で innosetup-5.6.1-unicode.exe が公開されているが、
https://www.appveyor.com/docs/build-environment/#tools では更新されていない。

Windows 7 でタブバーを表示状態でリサイズしてタブを移動すると元のサイズに戻る

こちらのOSDN投稿

旧掲示板の[開発A]5629
https://osdn.net/projects/sakura-editor/forums/34071/39620/


[5629] Windows 7 でタブバーを表示状態でリサイズしてタブを移動すると元のサイズに戻る
http://sakura-editor.sourceforge.net/cgi-bin/cyclamen/cyclamen.cgi?log=dev&tree=r5629

にあるパッチの取り込み。
PatchUnicode#1009
https://sourceforge.net/p/sakura-editor/patchunicode/1009/

sakura.exe と sakura_lang_en_US.dll の生成フォルダをソリューションフォルダをもとに決める

sakura.exe と sakura_lang_en_US.dll の生成フォルダはプロジェクトのフォルダをもとに決められるが、
ソリューションフォルダをもとに決める。

プロジェクトのフォルダをもとに成果物が生成されるので、sakura_lang_en_US.dll が別のフォルダに
作成されるので英語リソースのテストをするのに手間がかかる。

Chocolateyパッケージの今後

現在ChocolateyというWindows向けのパッケージマネージャで、サクラエディタのパッケージを公開しています。今後の管理方針をご相談したいです。

https://chocolatey.org/packages/SakuraEditor/2.3.2.0

自動更新

現在CI(AppVeyor)を利用してパッケージを自動更新しています。SourceForgeのリリースページをスクレイピングしているところを、今後はGitHub Releaseを見るように変更予定です。

本体のリリース手順にChocolateyパッケージの更新を追加する方法もありますが、他のメンテナの方の負担を増やすばかりでメリットはあまりないと考えています。

パッケージソースの管理

現状私のリポジトリで管理しています。

https://github.com/KageShiron/chocolatey-packages/tree/master/sakuraeditor

  1. sakura-editorのorgに完全移行
  2. sakura-editorのorgにソースだけ移し、submoduleで私のリポジトリに取り込んで自動更新のCIを回す
  3. 現状維持

の3つが考えられます。ChocolateyのアカウントやCIの設定が面倒なことを考えると2.か3.が妥当かなとは思います。

Milestone の運用

チケットやプルリクエストで Milestone を設定できますが、
Milestone は運用されていないようですが、運用しませんか?

pre-build, post-build の Power Shell 対応

.bat だと処理が冗長になりがちなので Power Shell スクリプトで pre-build, post-build を書けるように対応できないか検討中です。

検証中

https://ci.appveyor.com/project/kobake/appveyor-test/build/1.0.9

....
....
aaaaa
(ここにGitハッシュが出て欲しかったけど AppVeyor ビルドだと出ない。手元の VS2017 だと出る)
bbbbb
....
....

[x64対応] C4477 の警告を修正する

[x64対応] C4477 の警告を修正する

https://msdn.microsoft.com/ja-jp/library/tcxf1dw6.aspx

size_t (つまり、32 ビット プラットフォーム上では unsigned __int32、64 ビット プラットフォーム上では unsigned __int64) → I

ptrdiff_t (つまり、32 ビット プラットフォーム上では __int32、64 ビット プラットフォーム上では __int64) → I

bregonig.dll に perl_license.txt と perl_license_jp.txt を同梱する

bregonig.dll のライセンスに関して以下を見ると
https://github.com/sakura-editor/sakura/wiki/PackageStructure

bsd_license.txt があったので BSD ライセンスなのかなと思ったのですが、

正規表現ライブラリ bregonig.dll の 9. ライセンス を見ると
bregonig.dll は、正規表現ライブラリとして Oniguruma (Onigmo) を使用しており、Oniguruma (Onigmo) は BSD ライセンスとなっています。 とあります。

これは、bregonig.dll が依存している Oniguruma (Onigmo) というモジュールが
BSD ライセンスなのであって、bregonig.dll 自体は Perl と同じライセンス、すなわち GPL と Artistic License のどちらか のように見えます。

なので perl_license.txt や perl_license_jp.txt を同梱する必要があるのではないですか?

@k-takata さんから回答いただいたので同梱します。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.