예제 #1
0
        public void Invoke(object sender, ModuleEditorEventArgs e)
        {
            Log.Source.TraceInformation("Invoking {0} FileName='{1}'", ClassName, ((IEditor)sender).FileName);
            Invoking();

            ModuleEditor instance = (ModuleEditor)GetInstance();
            instance.Invoke(sender, e);
        }
예제 #2
0
        public void Invoke(IEditor editor, ModuleEditorEventArgs e)
        {
            Log.Source.TraceInformation("Invoking {0} FileName='{1}'", ClassName, editor.FileName);
            Invoking();

            ModuleEditor instance = (ModuleEditor)GetInstance();

            instance.Invoke(editor, e);
        }
예제 #3
0
파일: Config.cs 프로젝트: zertyuiop/FarNet
    // Called by the core when a file matching Mask is opened in the editor.
    public override void Invoke(IEditor editor, ModuleEditorEventArgs e)
    {
        // get the file name, it may be amended
        var fileName = editor.FileName;

        // ?NewFile?
        if (fileName.Contains("?"))
        {
            return;
        }

        // get the usual configurations
        var parser         = new EditorConfigParser();
        var configurations = parser.GetConfigurationFilesTillRoot(fileName);

        if (configurations.Count == 0)
        {
            // get the profile configurations to use with the amended file
            var defaults = GetProfileConfigurations(ref fileName);
            if (defaults == null)
            {
                return;
            }

            configurations = defaults;
        }

        // get the properties for the original or amended file
        var config     = parser.Parse(fileName, configurations);
        var properties = config.Properties;

        if (properties.TryGetValue(key_trim_trailing_whitespace, out var trim) && string.Equals(trim, "true", StringComparison.OrdinalIgnoreCase))
        {
            do_trim_trailing_whitespace = true;
        }

        if (properties.TryGetValue(key_insert_final_newline, out var eof) && string.Equals(eof, "true", StringComparison.OrdinalIgnoreCase))
        {
            do_insert_final_newline = true;
        }

        if (do_trim_trailing_whitespace || do_insert_final_newline)
        {
            editor.Saving += OnSaving;
        }

        if (properties.TryGetValue(key_indent_style, out var style))
        {
            switch (style)
            {
            case "tab":
                editor.ExpandTabs = ExpandTabsMode.None;
                break;

            case "space":
                editor.ExpandTabs = editor.DisableHistory ? ExpandTabsMode.New : ExpandTabsMode.All;
                break;
            }
        }

        if (properties.TryGetValue(key_indent_size, out var size))
        {
            if (int.TryParse(size, out var value) && value > 0)
            {
                editor.TabSize = value;
            }
        }

        if (properties.TryGetValue(key_charset, out var charset))
        {
            var codePage = editor.CodePage;
            switch (charset.ToLower())
            {
            case "utf-8":
                if (editor.CodePage != 65001)
                {
                    editor.CodePage = 65001;
                }
                if (editor.WriteByteOrderMark)
                {
                    editor.WriteByteOrderMark = false;
                }
                break;

            case "utf-8-bom":
                if (editor.CodePage != 65001)
                {
                    editor.CodePage = 65001;
                }
                if (!editor.WriteByteOrderMark)
                {
                    editor.WriteByteOrderMark = true;
                }
                break;

            case "utf-16le":
                if (editor.CodePage != 1200)
                {
                    editor.CodePage = 1200;
                }
                editor.WriteByteOrderMark = true;
                break;

            case "utf-16be":
                if (editor.CodePage != 1201)
                {
                    editor.CodePage = 1201;
                }
                editor.WriteByteOrderMark = true;
                break;
            }
        }
    }
예제 #4
0
파일: Module.cs 프로젝트: MoonDav/FarNet
 /// <summary>
 /// Editor <see cref="IEditorBase.Opened"/> handler.
 /// </summary>
 /// <param name="editor">The editor.</param>
 /// <param name="e">The arguments.</param>
 /// <remarks>
 /// This method is called once on opening an editor.
 /// Normally it adds editor event handlers, then they do the jobs.
 /// </remarks>
 /// <example>
 /// See the demo module <c>EditorKit</c> and its module editor classes.
 /// It is not just an example, it can be used for real.
 /// </example>
 public abstract void Invoke(IEditor editor, ModuleEditorEventArgs e);
예제 #5
0
 public override void Invoke(IEditor editor, ModuleEditorEventArgs e)
 {
     editor.ExpandTabs = editor.DisableHistory ? ExpandTabsMode.New : ExpandTabsMode.All;
     editor.TabSize    = 2;
 }
예제 #6
0
 // Called when a file is opened. It installs OnSaving().
 public override void Invoke(IEditor editor, ModuleEditorEventArgs e)
 {
     editor.Saving += OnSaving;
 }
예제 #7
0
파일: Module.cs 프로젝트: pezipink/FarNet
 /// <summary>
 /// Editor <see cref="IEditorBase.Opened"/> handler.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The arguments.</param>
 /// <remarks>
 /// This method is called once on opening an editor.
 /// Normally it adds editor event handlers, then they do the jobs.
 /// </remarks>
 /// <example>
 /// See the demo module <c>EditorKit</c> and its module editor classes.
 /// It is not just an example, it can be used for real.
 /// </example>
 public abstract void Invoke(object sender, ModuleEditorEventArgs e);
예제 #8
0
 // Called when a file is opened. It installs OnSaving().
 public override void Invoke(object sender, ModuleEditorEventArgs e)
 {
     ((IEditor)sender).Saving += OnSaving;
 }
예제 #9
0
 public override void Invoke(object sender, ModuleEditorEventArgs e)
 {
     ((IEditor)sender).ExpandTabs = ExpandTabsMode.All;
 }