Giter VIP home page Giter VIP logo

ya_hidemaru_snippet's Introduction

秀丸エディタの動的スニペット (Yet Another Hidemaru Snippet)

GitHub release Maintenance License: MIT

これは何?

秀丸エディタ用の動的スニペットマクロです。

開発の経緯

秀丸エディタ用のスニペットマクロは色々と公開されていますが、それらは静的スニペットで固定的なテキストしか生成できません。

「可変個の引数・テキストを書いている状況」に応じてスニペットを生成したく、動的スニペットマクロ(Yet Another Hidemaru Snippet)を作成しました。

特徴

このマクロではスニペットに、

  • [動的なスニペット] 秀丸マクロ・Python・VBScript・JavaScript・WindowsBatch
  • [静的なスニペット] テキストファイル

の両方を使用できます。

従来の静的スニペットに加えて「可変個の入力・テキストを書いている状況」に応じた動的スニペットを利用できます。

論より証拠、

「動的スニペット・静的スニペット」の動作を以下スクリーンショットでご確認下さい。

スクリーンショット

スクリーンショット(C#)

cs main

スクリーンショット(C/C++ 基本)

cpp main

スクリーンショット(C/C++ class)

cpp class

スクリーンショット(C/C++ include guarder)

cpp once

スクリーンショット(Python class)

python snippet

スクリーンショット(MarkDown)

toc

markdown snippet

table

markdown snippet

image

markdown snippet

link

markdown snippet

コマンド 動作
toc 目次(Table Of Contents)の挿入
table テーブルの挿入
image imageのテンプレートを挿入
link linkのテンプレートを挿入

補足

imageとlinkは引数の並び順を覚えなくても使えるようにしました。(scrapboxの表記を参考にしました)

スクリーンショット(Hidemaru macro)

hidemaru snippet

スクリーンショット(Text)

Text snippet

コマンド 動作
date 日にちの挿入
time 時間の挿入
repeat 文字列の繰り返しを挿入

スクリーンショット(Command prompt)

Command prompt

コマンド 動作
@cmd コマンドプロンプトの実行

コマンドプロンプトを実行して、

  • カレントディレクトリのファイル一覧
  • フォルダ構造
  • 環境変数

などを取得できます。

スクリーンショット(スニペット挿入GUI)

空行でマクロを実行するとスニペット挿入GUIが起動します。

スニペット挿入GUI スニペットを選んでから引数を入力すると秀丸エディタへスニペットを挿入できます。

このマクロを使い始めたとき「どんなスニペットがあるのか分からず途方に暮れる」という問題を解決するために用意しました。

マクロの**

このマクロ(動的スニペット)は1つのテキストから100のテキストを一気に作るという**で作成しています。逆に、静的スニペットは100のテキストを少ないキー打鍵で作るという考えです。

それぞれに優劣は無く高い山を西から登るか東から登るかの違いです。なので、スニペットの選択肢が1つ増えたと思って下さい😘

対応言語

ディフォルトで以下のスニペット定義を用意しています。

  • BAT
  • C#
  • C/C++
  • Cuda
  • FX
  • Go
  • Hidemaru macro
  • Html
  • Markdown
  • Perl
  • PHP
  • Python
  • Text

もちろん、ユーザー独自のスニペットを追加することも出来ます! (追加方法は後述で)

C/C++/C#のスニペット定義について

VisualStudioのスニペット定義を可能な範囲で移植しています。

Textのスニペットについて

TextMate のスニペット定義を可能な範囲で移植しています。

マクロの導入方法

まずは、動作確認を行った安定バージョンをダウンロードして下さい。

https://github.com/ohtorii/ya_hidemaru_snippet/releases

masterブランチを取得しても多分動作しないです。(動作確認を行っていないため)

ディレクトリ構成

全ファイルとフォルダを秀丸エディタのスクリプトディレクトリにコピーしてください。

コピー後のディレクトリ構成

hidemaru_macrodir
  └─ya_hidemaru_snippet
     ├─ya_hidemaru_snippet.mac
     ├─ya_change_snippet_mode.mac
     ├─config.ini
     ├─doc
     ├─internal
     └─snippets

依存DLLのインストール

本マクロを動かすには以下のDLLが必要です、それぞれダウンロードして導入してください。

それぞれ、32bitと64bit版があります、適切なDLLを導入してください。

動作のカスタマイズ

あなたの環境に合わせてマクロの動作をカスタマイズするにはdoc/customize.mdを参照して下さい。

基本的な利用方法

まず、以下のマクロをショートカットキーに割り当てます。

ファイル名 説明
ya_hidemaru_snippet.mac スニペットマクロ本体
ya_change_snippet_mode.mac スニペットモード変更マクロ(オプション)

ショートカットキー割り当て(スニペットマクロ本体)

ya_hidemaru_snippet.mac をショートカットキーに割り当てて下さい。

割り当ての例

  • Ctrl-Enter
  • Alt-Enter

ちなみに、私はCtrl-Enterに割り当てています。(なんか、えいやー という感じなので)

ショートカットキー割り当て(スニペットモード変更マクロ)

ya_change_snippet_mode.mac をショートカットキーに割り当ててください。(必須ではありません好みに応じて)

スニペットマクロを常時利用していると、時々、スニペットモードを一時的に変更したくなるときがあります。 そんな時が来たらこのマクロを思い出してください。

スニペットモード変更マクロについて

スニペットのモード(text-mode/c-mode/cs-mode...)を一時的に変更するマクロです。

(用途の例)

  • 新規ファイル(text-mode)のスニペットをpython-modeへ変更する
  • markdownのファイル(markdown-mode)編集中に、C++のコードをスニペットで挿入する

スニペットモード変更マクロ

ユーザー定義のスニペット作成

ユーザー定義のスニペットを作成するにはdoc/snippet_spec.mdを参照して下さい。

動作環境

それぞれ最新版をご利用下さい。

動作確認を行った環境

ご参考までに。

  • Windows 10 64bit
  • 秀丸エディタ 64bit ver 8.90 β11
  • 田楽DLL 64bit ver Ver.3.22.1
  • ht_tools.dll 64bit ver 1.24.00β4

ダウンロード

こちらから動作確認済みのパッケージをダウンロードして下さい。

https://github.com/ohtorii/ya_hidemaru_snippet/releases

注意

masterブランチを取得しても多分動作しないです。

ブランチを作らずに気楽に開発してます。(仕事じゃないしね😉)

バージョン番号のルール

バージョン番号の表記方法

バージョン番号は version 1.2.3 のように表記され、それぞれ major.minor.revision を表します。

番号 説明
major 互換性が失われる大きな変更を表します
minor 機能追加のように互換性のある更新を表します
revision バグ修正のように機能そのものに変化が無い軽微な更新を表します

謝辞

作者に感謝

連絡先

寄付

もし気に入ってくれたらSteamからゲームを寄付してくれるとうれしいです😘

開発の励みになります。

ya_hidemaru_snippet's People

Contributors

ohtorii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

yuuichi-s

ya_hidemaru_snippet's Issues

スニペットディレクトリの整理

snippetsディレクトリ直下にある下記ファイルを internalディレクトリ へ移動する、

  • (*.mac)
  • config.ini

スニペットのディレクトリにあるのは間違い。

ファイル名として使えない文字をコマンドで使えるようにする

このようなコマンドを実装したいが、*:/?はファイル名として使えない。
【展開前】

  • x y
    【展開後】
    x=x*y;

(案1)
全角文字(*:/¥)でファイル名を付ける。
*.%.%.txt

コマンド中の「半角*」はファイル名を検索するときには「全角*」として扱うと何とかなりそう。

ディレクトリ階層の変更

ディレクトリ階層を以下のように変更する。
ユーザーにキーアサインして欲しいマクロは「秀丸マクロディレクトリ」以下へ配置し、ya_hidemaru_snippetディレクトリ以下に内部利用のマクロ、スニペットファイルを配置する。

├─ya_config_menu.mac
├─ya_hidemaru_snippet.mac
└─ya_hidemaru_snippet
    ├─doc
    ├─internal
    └─snippet
        └─text-mode
            ├─c-mode
            │  └─cpp-mode
            └─fx-mode

任意の位置でスニペット展開できるように

(問題)
現状の入力方法
Command Arg1 Arg2...

こういう場面で使えない
foo := Command Arg1 Arg2...

fooをコマンドとして認識するのでスニペットが誤発するか動作しない。

(課題)
コマンドより前に文字がある場合でも、スニペットが正常に発動するように。

(案1)
メニューからコマンドを選ぶと ダイアログが起動するようにして、そのダイアログで引数を入力する。
→ダイアログ中では単語補完と秀丸エディタのマクロが効かない。(引数も効率よく作りたい)

(案2)
カール位置付近からコマンド文字列を見つけてくる。
引数にコマンドと同じ文字列が含まれていると誤発動する恐れあり。
class name class arg2

スニペットの冒頭へコメントを記述できるようにする

(問題点)
コメントの記述方法はスニペットを処理する言語依存する。

(追加でやりたいこと)
コメントだけでなくヘルプも埋め込みたい。

(例)TXTの場合。(yasnippetまんま)

contributor : [email protected]

name : foo

--

スニペット本体はこの行から始まる。

-- この行はスニペットとして扱われる。

異なるモード間でのスニペットファイルの共有

C#のスニペットである cs-mode から c-mode の for.txt を参照したい。
現状で同じファイルのコピーを保持するしかない、保守に手間がかかるので何とかしたい。

スニペットファイルの構文を拡張して(例えばinclude命令)、外部ファイルを取り込めるようにするといった案が考えられる。

コマンドを除いた文字列をスニペットへ渡す

コマンドを除いた文字列をスニペットへ渡せるようにする、markdownのスニペットで必要となった。

下記例では、"引数1 引数2" がスニペットへ渡される。
コマンド 引数1 引数2

対応が必要なマクロ。
ya_hidemaru_snippet_bat.mac
ya_hidemaru_snippet_js.mac
ya_hidemaru_snippet_mac.mac
ya_hidemaru_snippet_py.mac
ya_hidemaru_snippet_txt.mac
ya_hidemaru_snippet_vbs.mac

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.