Esempio n. 1
0
        public void AddRegisterDirective(WebFormsPageInfo.RegisterDirective directive, TextEditor editor, bool preserveCaretPosition)
        {
            if (doc == null)
            {
                return;
            }

            var node = GetRegisterInsertionPointNode();

            if (node == null)
            {
                return;
            }

            doc.Info.RegisteredTags.Add(directive);

            var line = Math.Max(node.Region.EndLine, node.Region.BeginLine);
            var pos  = editor.LocationToOffset(line, editor.GetLine(line - 1).Length);

            if (pos < 0)
            {
                return;
            }

            using (var undo = editor.OpenUndoGroup()) {
                var oldCaret = editor.CaretOffset;
                var text     = editor.FormatString(pos, editor.EolMarker + directive);
                var inserted = text.Length;
                editor.InsertText(pos, text);
                if (preserveCaretPosition)
                {
                    editor.CaretOffset = (pos < oldCaret)? oldCaret + inserted : oldCaret;
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Gets a tag prefix, also returning the directive that would have to be added if necessary.
        /// </summary>
        public string GetTagPrefixWithNewDirective(INamedTypeSymbol control, string assemblyName, string desiredPrefix,
                                                   out WebFormsPageInfo.RegisterDirective directiveNeededToAdd)
        {
            directiveNeededToAdd = null;
            string existingPrefix = GetTagPrefix(control);

            if (existingPrefix != null)
            {
                return(existingPrefix);
            }

            //TODO: detect control name conflicts
            string prefix = desiredPrefix;

            if (desiredPrefix == null)
            {
                prefix = GetPrefix(control);
            }

            var an = SystemAssemblyService.ParseAssemblyName(assemblyName);

            directiveNeededToAdd = new WebFormsPageInfo.AssemblyRegisterDirective(prefix, control.ContainingNamespace.GetFullName(), an.Name);

            return(prefix);
        }