Skip to content

Instantly share code, notes, and snippets.

@anchan828
Last active December 13, 2015 20:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anchan828/3b4691d224adae0ad965 to your computer and use it in GitHub Desktop.
Save anchan828/3b4691d224adae0ad965 to your computer and use it in GitHub Desktop.
UnityC#.sublime-completionsを作って保存する。
using UnityEngine;
using UnityEditor;
using System.Reflection;
public class CreateCSharpSublimeCompletions
{
private static System.Text.StringBuilder sb = new System.Text.StringBuilder ();
[MenuItem("File/Create UnityC#.sublime-completions/All")]
static void WriteAll ()
{
WriteFirstHalf ();
AppendPublicMembersOfUnityEngine ();
AppendPublicMembersOfUnityEditor ();
WriteSecondHalf ();
}
[MenuItem("File/Create UnityC#.sublime-completions/UnityEngine")]
static void WriteEngine ()
{
WriteFirstHalf ();
AppendPublicMembersOfUnityEngine ();
WriteSecondHalf ();
}
[MenuItem("File/Create UnityC#.sublime-completions/UnityEditor")]
static void WriteEditor ()
{
WriteFirstHalf ();
AppendPublicMembersOfUnityEditor ();
WriteSecondHalf ();
}
//=======================================
static void AppendPublicMembersOfUnityEngine ()
{
AppendPublicMembers (Assembly.Load ("UnityEngine.dll"));
}
static void AppendPublicMembersOfUnityEditor ()
{
AppendPublicMembers (Assembly.Load ("UnityEditor.dll"));
}
static void WriteFirstHalf ()
{
sb = new System.Text.StringBuilder ();
sb.AppendLine ("{");
sb.AppendLine (@" ""scope"": ""source.cs"",");
sb.AppendLine (@" ""completions"":");
sb.AppendLine (@" [");
}
static void WriteSecondHalf ()
{
sb = sb.Remove (sb.ToString ().LastIndexOf (','), 1);
sb.AppendLine (@" ]");
sb.AppendLine ("}");
string path = "";
if (Application.platform == RuntimePlatform.OSXEditor)
path = "/Users/{0}/Library/Application Support/Sublime Text 2/Packages/Unity3D/UnityC#.sublime-completions";
else
path = System.Environment.GetFolderPath (System.Environment.SpecialFolder.ApplicationData) + "\\Sublime Text 2\\Packages\\Unity3D\\UnityC#.sublime-completions";
System.IO.File.WriteAllText (string.Format (path, System.Environment.UserName), sb.ToString ());
}
static void AppendPublicMembers (Assembly assembly)
{
foreach (System.Type type in assembly.GetTypes()) {
if (type.IsPublic) {
string result = type.ToString ();
result = result.Split ('.') [result.Split ('.').Length - 1];
AppendLine (sb, type.Namespace);
AppendLine (sb, result);
}
}
}
static void AppendLine (System.Text.StringBuilder sb, string text)
{
text = "\t\t{ \"trigger\": \"{0}\" , \"contents\": \"{0}\"},".Replace ("{0}", text);
if (!sb.ToString ().Contains (text))
sb.AppendLine (text);
}
}
@anchan828
Copy link
Author

保存先

Mac

~/Library/Application Support/Sublime Text 2/Packages/Unity3D/UnityC#.sublime-completions

Windows

C:\Users%USERNAME%\AppData\Roaming\Sublime Text 2\Packages\Unity3D\UnityC#.sublime-completions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment