/
n-dimens
/
pascalabcnet
Обзор
Документация
Войти
/
n-dimens
/
pascalabcnet
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
ICSharpCode.TextEditorLinux/Src/Document/HighlightingStrategy/SyntaxModes/FileSyntaxModeProvider.cs
84 строки
2 KB
Mikhalkovich Stanislav
Для Linux-версии исправлен DockContent, редактор (показ всплывающего окна)
30 июн 2022, 09:47
30 июн 2022, 09:47
3072383
Код
Авторство
О чём код?
// <file> // <copyright see="prj:///doc/copyright.txt"/> // <license see="prj:///doc/license.txt"/> // <owner name="Mike Krüger" email="mike@icsharpcode.net"/> // <version>$Revision: 2533 $</version> // </file> using System; using System.Collections.Generic; using System.IO; using System.Windows.Forms; using System.Xml; namespace ICSharpCode.TextEditor.Document { public class FileSyntaxModeProvider : ISyntaxModeFileProvider { string directory; List<SyntaxMode> syntaxModes = null; public ICollection<SyntaxMode> SyntaxModes { get { return syntaxModes; } } public FileSyntaxModeProvider(string directory) { this.directory = directory; UpdateSyntaxModeList(); } public void UpdateSyntaxModeList() { string syntaxModeFile = Path.Combine(directory, "SyntaxModes.xml"); if (File.Exists(syntaxModeFile)) { Stream s = File.OpenRead(syntaxModeFile); syntaxModes = SyntaxMode.GetSyntaxModes(s); s.Close(); } else { syntaxModes = ScanDirectory(directory); } } public XmlTextReader GetSyntaxModeFile(SyntaxMode syntaxMode) { string syntaxModeFile = Path.Combine(directory, syntaxMode.FileName); if (!File.Exists(syntaxModeFile)) { throw new HighlightingDefinitionInvalidException("Can't load highlighting definition " + syntaxModeFile + " (file not found)!"); } return new XmlTextReader(File.OpenRead(syntaxModeFile)); } List<SyntaxMode> ScanDirectory(string directory) { string[] files = Directory.GetFiles(directory); List<SyntaxMode> modes = new List<SyntaxMode>(); foreach (string file in files) { if (Path.GetExtension(file).Equals(".XSHD", StringComparison.OrdinalIgnoreCase)) { XmlTextReader reader = new XmlTextReader(file); while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "SyntaxDefinition": string name = reader.GetAttribute("name"); string extensions = reader.GetAttribute("extensions"); modes.Add(new SyntaxMode(Path.GetFileName(file), name, extensions)); goto bailout; default: throw new HighlightingDefinitionInvalidException("Unknown root node in syntax highlighting file :" + reader.Name); } } } bailout: reader.Close(); } } return modes; } } }