diff --git a/packages/ckeditor5-alignment/src/alignmentui.ts b/packages/ckeditor5-alignment/src/alignmentui.ts
index 7b89689f77d..cacc06d5f84 100644
--- a/packages/ckeditor5-alignment/src/alignmentui.ts
+++ b/packages/ckeditor5-alignment/src/alignmentui.ts
@@ -189,7 +189,8 @@ export class AlignmentUI extends Plugin {
dropdownView.bind( 'isEnabled' ).to( command, 'isEnabled' );
// Focus the editable after executing the command.
- // Overrides a default behaviour where the focus is moved to the dropdown button (#12125).
+ // Overrides a default behaviour where the focus is moved to the dropdown button.
+ // See https://github.com/ckeditor/ckeditor5/issues/12125.
this.listenTo( dropdownView, 'execute', () => {
editor.editing.view.focus();
} );
diff --git a/packages/ckeditor5-autoformat/src/blockautoformatediting.ts b/packages/ckeditor5-autoformat/src/blockautoformatediting.ts
index 04431678a54..c8c7e4e419e 100644
--- a/packages/ckeditor5-autoformat/src/blockautoformatediting.ts
+++ b/packages/ckeditor5-autoformat/src/blockautoformatediting.ts
@@ -115,7 +115,7 @@ export function blockAutoformatEditing(
const blockToFormat = entry.position.parent;
- // Block formatting should be disabled in codeBlocks (#5800).
+ // Block formatting should be disabled in codeBlocks (https://github.com/ckeditor/ckeditor5/issues/5800).
if ( blockToFormat.is( 'element', 'codeBlock' ) ) {
return;
}
diff --git a/packages/ckeditor5-block-quote/theme/blockquote.css b/packages/ckeditor5-block-quote/theme/blockquote.css
index d6b4adb0039..45d97c24af2 100644
--- a/packages/ckeditor5-block-quote/theme/blockquote.css
+++ b/packages/ckeditor5-block-quote/theme/blockquote.css
@@ -4,7 +4,7 @@
*/
.ck-content blockquote {
- /* See #12 */
+ /* See https://github.com/ckeditor/ckeditor5-block-quote/issues/12 */
overflow: hidden;
/* https://github.com/ckeditor/ckeditor5-block-quote/issues/15 */
diff --git a/packages/ckeditor5-bookmark/src/bookmarkui.ts b/packages/ckeditor5-bookmark/src/bookmarkui.ts
index 41798157dbd..00bd9c3278b 100644
--- a/packages/ckeditor5-bookmark/src/bookmarkui.ts
+++ b/packages/ckeditor5-bookmark/src/bookmarkui.ts
@@ -162,7 +162,7 @@ export class BookmarkUI extends Plugin {
public override destroy(): void {
super.destroy();
- // Destroy created UI components as they are not automatically destroyed (see ckeditor5#1341).
+ // Destroy created UI components as they are not automatically destroyed (see https://github.com/ckeditor/ckeditor5/issues/1341).
if ( this.formView ) {
this.formView.destroy();
}
diff --git a/packages/ckeditor5-bookmark/tests/bookmarkui.js b/packages/ckeditor5-bookmark/tests/bookmarkui.js
index e7d50cbdd16..f8aab80d810 100644
--- a/packages/ckeditor5-bookmark/tests/bookmarkui.js
+++ b/packages/ckeditor5-bookmark/tests/bookmarkui.js
@@ -777,7 +777,7 @@ describe( 'BookmarkUI', () => {
} );
it( 'should add #formView to the balloon and attach the balloon to the marker element when selection is collapsed', () => {
- // (#7926)
+ // (https://github.com/ckeditor/ckeditor5/issues/7926)
_setModelData( editor.model, 'f[]oo' );
bookmarkUIFeature._showFormView();
formView = bookmarkUIFeature.formView;
diff --git a/packages/ckeditor5-clipboard/src/utils/viewtoplaintext.ts b/packages/ckeditor5-clipboard/src/utils/viewtoplaintext.ts
index f5a7e5d25fd..2c401dd6978 100644
--- a/packages/ckeditor5-clipboard/src/utils/viewtoplaintext.ts
+++ b/packages/ckeditor5-clipboard/src/utils/viewtoplaintext.ts
@@ -36,7 +36,7 @@ export function viewToPlainText(
}
if ( viewItem.is( 'element', 'br' ) ) {
- return '\n'; // Convert soft breaks to single line break (#8045).
+ return '\n'; // Convert soft breaks to single line break (https://github.com/ckeditor/ckeditor5/issues/8045).
}
/**
diff --git a/packages/ckeditor5-clipboard/tests/pasteplaintext.js b/packages/ckeditor5-clipboard/tests/pasteplaintext.js
index 17608f5aa52..a74c182a307 100644
--- a/packages/ckeditor5-clipboard/tests/pasteplaintext.js
+++ b/packages/ckeditor5-clipboard/tests/pasteplaintext.js
@@ -208,7 +208,7 @@ describe( 'PastePlainText', () => {
} );
it( 'should work if the insertContent event is cancelled', () => {
- // (#7887).
+ // (https://github.com/ckeditor/ckeditor5/issues/7887).
_setModelData( model, '<$text bold="true">Bolded []text.$text>' );
const dataTransferMock = createDataTransfer( {
diff --git a/packages/ckeditor5-code-block/src/codeblockcommand.ts b/packages/ckeditor5-code-block/src/codeblockcommand.ts
index 1a2af4ddef6..c8724d03a2d 100644
--- a/packages/ckeditor5-code-block/src/codeblockcommand.ts
+++ b/packages/ckeditor5-code-block/src/codeblockcommand.ts
@@ -129,7 +129,7 @@ export class CodeBlockCommand extends Command {
writer.setAttribute( 'language', language, block );
schema.removeDisallowedAttributes( [ block ], writer );
- // Remove children of the `codeBlock` element that are not allowed. See #9567.
+ // Remove children of the `codeBlock` element that are not allowed. See https://github.com/ckeditor/ckeditor5/issues/9567.
Array.from( block.getChildren() )
.filter( child => !schema.checkChild( block, child ) )
.forEach( child => writer.remove( child ) );
diff --git a/packages/ckeditor5-code-block/tests/codeblockediting.js b/packages/ckeditor5-code-block/tests/codeblockediting.js
index 67b3dc4cdef..bdd4a3c48bb 100644
--- a/packages/ckeditor5-code-block/tests/codeblockediting.js
+++ b/packages/ckeditor5-code-block/tests/codeblockediting.js
@@ -857,7 +857,7 @@ describe( 'CodeBlockEditing', () => {
} );
} );
- // See #5910.
+ // See https://github.com/ckeditor/ckeditor5/issues/5910.
it( 'should allow to indent an entire code block with at least two lines', () => {
const element = document.createElement( 'div' );
document.body.appendChild( element );
diff --git a/packages/ckeditor5-core/tests/editor/editor.js b/packages/ckeditor5-core/tests/editor/editor.js
index e64655b0cfa..5a144857192 100644
--- a/packages/ckeditor5-core/tests/editor/editor.js
+++ b/packages/ckeditor5-core/tests/editor/editor.js
@@ -1422,7 +1422,7 @@ describe( 'Editor', () => {
editor.model.document.createRoot( '$root', 'main' );
editor.model.document.createRoot( '$root', 'secondRoot' );
editor.model.schema.extend( '$text', { allowIn: '$root' } );
- editor.fire( 'ready' ); // (#6139)
+ editor.fire( 'ready' ); // (https://github.com/ckeditor/ckeditor5/issues/6139)
} );
afterEach( async () => {
diff --git a/packages/ckeditor5-core/tests/editor/utils/elementapimixin.js b/packages/ckeditor5-core/tests/editor/utils/elementapimixin.js
index 674ab619e96..b56910714d0 100644
--- a/packages/ckeditor5-core/tests/editor/utils/elementapimixin.js
+++ b/packages/ckeditor5-core/tests/editor/utils/elementapimixin.js
@@ -18,7 +18,7 @@ describe( 'ElementApiMixin', () => {
editor = new CustomEditor();
editor.model.document.createRoot();
editor.model.schema.extend( '$text', { allowIn: '$root' } );
- editor.fire( 'ready' ); // (#6139)
+ editor.fire( 'ready' ); // (https://github.com/ckeditor/ckeditor5/issues/6139)
} );
afterEach( async () => {
diff --git a/packages/ckeditor5-emoji/src/emojimention.ts b/packages/ckeditor5-emoji/src/emojimention.ts
index ea65ade0a6a..450d215d1be 100644
--- a/packages/ckeditor5-emoji/src/emojimention.ts
+++ b/packages/ckeditor5-emoji/src/emojimention.ts
@@ -251,7 +251,8 @@ export class EmojiMention extends Plugin {
return [];
}
- // If the repository plugin is not available, return an empty feed to avoid confusion. See: #17842.
+ // If the repository plugin is not available, return an empty feed to avoid confusion.
+ // See: https://github.com/ckeditor/ckeditor5/issues/17842.
if ( !this._isEmojiRepositoryAvailable ) {
return [];
}
diff --git a/packages/ckeditor5-emoji/src/emojipicker.ts b/packages/ckeditor5-emoji/src/emojipicker.ts
index 354ed535624..7f68b19a439 100644
--- a/packages/ckeditor5-emoji/src/emojipicker.ts
+++ b/packages/ckeditor5-emoji/src/emojipicker.ts
@@ -138,7 +138,7 @@ export class EmojiPicker extends Plugin {
*/
public showUI( searchValue: string = '' ): void {
// Show visual selection on a text when the contextual balloon is displayed.
- // See #17654.
+ // See https://github.com/ckeditor/ckeditor5/issues/17654.
this._showFakeVisualSelection();
if ( !this.emojiPickerView ) {
diff --git a/packages/ckeditor5-emoji/tests/emojipicker.js b/packages/ckeditor5-emoji/tests/emojipicker.js
index f667e0b8d30..2fc4dacf646 100644
--- a/packages/ckeditor5-emoji/tests/emojipicker.js
+++ b/packages/ckeditor5-emoji/tests/emojipicker.js
@@ -433,7 +433,7 @@ describe( 'EmojiPicker', () => {
} ).to.not.throw();
} );
- // See #17819.
+ // See https://github.com/ckeditor/ckeditor5/issues/17819.
it( 'should not change the selection after opening the UI', async () => {
_setModelData(
editor.model,
@@ -447,7 +447,7 @@ describe( 'EmojiPicker', () => {
);
} );
- // See #17964
+ // See https://github.com/ckeditor/ckeditor5/issues/17964
it( 'should have the ck-emoji-picker-balloon class to make sure z-index does not conflict with the dialog system', () => {
emojiPicker.showUI();
diff --git a/packages/ckeditor5-engine/src/conversion/downcasthelpers.ts b/packages/ckeditor5-engine/src/conversion/downcasthelpers.ts
index f1df5b1fc8f..bad9b107357 100644
--- a/packages/ckeditor5-engine/src/conversion/downcasthelpers.ts
+++ b/packages/ckeditor5-engine/src/conversion/downcasthelpers.ts
@@ -1657,7 +1657,8 @@ function changeAttribute( attributeCreator: DowncastAttributeCreatorFunction ) {
const viewWriter = conversionApi.writer;
// If model item cannot be mapped to a view element, it means item is not an `Element` instance but a `ModelTextProxy` node.
- // Only elements can have attributes in a view so do not proceed for anything else (#1587).
+ // Only elements can have attributes in a view so do not proceed for anything else.
+ // See https://github.com/ckeditor/ckeditor5-engine/issues/1587.
if ( !viewElement ) {
/**
* This error occurs when a {@link module:engine/model/textproxy~ModelTextProxy text node's} attribute is to be downcasted
diff --git a/packages/ckeditor5-engine/src/conversion/upcasthelpers.ts b/packages/ckeditor5-engine/src/conversion/upcasthelpers.ts
index 3e5a55927a3..970f1dd90b4 100644
--- a/packages/ckeditor5-engine/src/conversion/upcasthelpers.ts
+++ b/packages/ckeditor5-engine/src/conversion/upcasthelpers.ts
@@ -1159,7 +1159,7 @@ function setAttributeOn(
}
// Mark the node as consumed even if the attribute will not be updated because it's in a valid context (schema)
- // and would be converted if the attribute wouldn't be present. See #8921.
+ // and would be converted if the attribute wouldn't be present. See https://github.com/ckeditor/ckeditor5/issues/8921.
result = true;
// Do not override the attribute if it's already present.
diff --git a/packages/ckeditor5-engine/src/model/element.ts b/packages/ckeditor5-engine/src/model/element.ts
index c4a006d1a62..7120950679a 100644
--- a/packages/ckeditor5-engine/src/model/element.ts
+++ b/packages/ckeditor5-engine/src/model/element.ts
@@ -397,7 +397,7 @@ export class ModelElement extends ModelNode {
ModelElement.prototype.is = function( this: ModelElement, type: string, name?: string ): boolean {
if ( !name ) {
return type === 'element' || type === 'model:element' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'node' || type === 'model:node';
}
diff --git a/packages/ckeditor5-engine/src/model/liveposition.ts b/packages/ckeditor5-engine/src/model/liveposition.ts
index 0af80712518..8fd5c4e0b86 100644
--- a/packages/ckeditor5-engine/src/model/liveposition.ts
+++ b/packages/ckeditor5-engine/src/model/liveposition.ts
@@ -112,7 +112,7 @@ export class ModelLivePosition extends /* #__PURE__ */ EmitterMixin( ModelPositi
// Proper overload would interfere with that.
ModelLivePosition.prototype.is = function( type: string ): boolean {
return type === 'livePosition' || type === 'model:livePosition' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type == 'position' || type === 'model:position';
} as any;
diff --git a/packages/ckeditor5-engine/src/model/liverange.ts b/packages/ckeditor5-engine/src/model/liverange.ts
index ea443a92ead..6b4d80f9902 100644
--- a/packages/ckeditor5-engine/src/model/liverange.ts
+++ b/packages/ckeditor5-engine/src/model/liverange.ts
@@ -90,7 +90,7 @@ export class ModelLiveRange extends /* #__PURE__ */ EmitterMixin( ModelRange ) {
// Proper overload would interfere with that.
ModelLiveRange.prototype.is = function( type: string ): boolean {
return type === 'liveRange' || type === 'model:liveRange' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type == 'range' || type === 'model:range';
} as any;
diff --git a/packages/ckeditor5-engine/src/model/position.ts b/packages/ckeditor5-engine/src/model/position.ts
index 59b9da19fe7..55a02e7b2e9 100644
--- a/packages/ckeditor5-engine/src/model/position.ts
+++ b/packages/ckeditor5-engine/src/model/position.ts
@@ -228,7 +228,8 @@ export class ModelPosition extends ModelTypeCheckable {
* Node directly after this position. Returns `null` if this position is at the end of its parent, or if it is in a text node.
*/
public get nodeAfter(): ModelNode | null {
- // Cache the parent and reuse for performance reasons. See #6579 and #6582.
+ // Cache the parent and reuse for performance reasons.
+ // See https://github.com/ckeditor/ckeditor5/issues/6579 and https://github.com/ckeditor/ckeditor5/issues/6582.
const parent = this.parent;
return getNodeAfterPosition( this, parent, getTextNodeAtPosition( this, parent ) );
@@ -238,7 +239,8 @@ export class ModelPosition extends ModelTypeCheckable {
* Node directly before this position. Returns `null` if this position is at the start of its parent, or if it is in a text node.
*/
public get nodeBefore(): ModelNode | null {
- // Cache the parent and reuse for performance reasons. See #6579 and #6582.
+ // Cache the parent and reuse for performance reasons.
+ // See https://github.com/ckeditor/ckeditor5/issues/6579 and https://github.com/ckeditor/ckeditor5/issues/6582.
const parent = this.parent;
return getNodeBeforePosition( this, parent, getTextNodeAtPosition( this, parent ) );
diff --git a/packages/ckeditor5-engine/src/model/rootelement.ts b/packages/ckeditor5-engine/src/model/rootelement.ts
index 06ea8356c0b..06cb00f5ec1 100644
--- a/packages/ckeditor5-engine/src/model/rootelement.ts
+++ b/packages/ckeditor5-engine/src/model/rootelement.ts
@@ -94,14 +94,14 @@ export class ModelRootElement extends ModelElement {
ModelRootElement.prototype.is = function( this: ModelRootElement, type: string, name?: string ): boolean {
if ( !name ) {
return type === 'rootElement' || type === 'model:rootElement' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'element' || type === 'model:element' ||
type === 'node' || type === 'model:node';
}
return name === this.name && (
type === 'rootElement' || type === 'model:rootElement' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'element' || type === 'model:element'
);
} as any;
diff --git a/packages/ckeditor5-engine/src/model/text.ts b/packages/ckeditor5-engine/src/model/text.ts
index ac56816ae7d..5209563fc9f 100644
--- a/packages/ckeditor5-engine/src/model/text.ts
+++ b/packages/ckeditor5-engine/src/model/text.ts
@@ -112,6 +112,6 @@ ModelText.prototype.is = function( type: string ): boolean {
return type === '$text' || type === 'model:$text' ||
// This are legacy values kept for backward compatibility.
type === 'text' || type === 'model:text' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'node' || type === 'model:node';
} as any;
diff --git a/packages/ckeditor5-engine/src/model/treewalker.ts b/packages/ckeditor5-engine/src/model/treewalker.ts
index 01c13233dce..7c636a3539a 100644
--- a/packages/ckeditor5-engine/src/model/treewalker.ts
+++ b/packages/ckeditor5-engine/src/model/treewalker.ts
@@ -239,7 +239,8 @@ export class ModelTreeWalker implements Iterable {
}
// Get node just after the current position.
- // Use a highly optimized version instead of checking the text node first and then getting the node after. See #6582.
+ // Use a highly optimized version instead of checking the text node first and then getting the node after.
+ // See https://github.com/ckeditor/ckeditor5/issues/6582.
const textNodeAtPosition = getTextNodeAtPosition( position, parent );
const node = textNodeAtPosition || getNodeAfterPosition( position, parent, textNodeAtPosition );
@@ -318,7 +319,8 @@ export class ModelTreeWalker implements Iterable {
}
// Get node just before the current position.
- // Use a highly optimized version instead of checking the text node first and then getting the node before. See #6582.
+ // Use a highly optimized version instead of checking the text node first and then getting the node before.
+ // See https://github.com/ckeditor/ckeditor5/issues/6582.
const positionParent = position.parent;
const textNodeAtPosition = getTextNodeAtPosition( position, positionParent );
const node = textNodeAtPosition || getNodeBeforePosition( position, positionParent, textNodeAtPosition );
diff --git a/packages/ckeditor5-engine/src/view/attributeelement.ts b/packages/ckeditor5-engine/src/view/attributeelement.ts
index fc55224b3fb..5b942b16beb 100644
--- a/packages/ckeditor5-engine/src/view/attributeelement.ts
+++ b/packages/ckeditor5-engine/src/view/attributeelement.ts
@@ -217,13 +217,13 @@ export class ViewAttributeElement extends ViewElement {
ViewAttributeElement.prototype.is = function( this: ViewAttributeElement, type: string, name?: string ): boolean {
if ( !name ) {
return type === 'attributeElement' || type === 'view:attributeElement' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'element' || type === 'view:element' ||
type === 'node' || type === 'view:node';
} else {
return name === this.name && (
type === 'attributeElement' || type === 'view:attributeElement' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'element' || type === 'view:element'
);
}
diff --git a/packages/ckeditor5-engine/src/view/containerelement.ts b/packages/ckeditor5-engine/src/view/containerelement.ts
index 6a3fee724cd..d7890b88b33 100644
--- a/packages/ckeditor5-engine/src/view/containerelement.ts
+++ b/packages/ckeditor5-engine/src/view/containerelement.ts
@@ -73,13 +73,13 @@ export class ViewContainerElement extends ViewElement {
ViewContainerElement.prototype.is = function( this: ViewContainerElement, type: string, name?: string ): boolean {
if ( !name ) {
return type === 'containerElement' || type === 'view:containerElement' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'element' || type === 'view:element' ||
type === 'node' || type === 'view:node';
} else {
return name === this.name && (
type === 'containerElement' || type === 'view:containerElement' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'element' || type === 'view:element'
);
}
@@ -94,7 +94,8 @@ export function getViewFillerOffset( this: ViewContainerElement ): number | null
const children = [ ...this.getChildren() ];
let lastChild: ViewNode | undefined = children[ this.childCount - 1 ];
- // Block filler is required after a ` ` if it's the last element in its container. See #1422.
+ // Block filler is required after a ` ` if it's the last element in its container.
+ // See https://github.com/ckeditor/ckeditor5-engine/issues/1422.
if ( lastChild && lastChild.is( 'element', 'br' ) ) {
return this.childCount;
}
diff --git a/packages/ckeditor5-engine/src/view/domconverter.ts b/packages/ckeditor5-engine/src/view/domconverter.ts
index a09174645e4..a5fc5874ce0 100644
--- a/packages/ckeditor5-engine/src/view/domconverter.ts
+++ b/packages/ckeditor5-engine/src/view/domconverter.ts
@@ -418,7 +418,7 @@ export class ViewDomConverter {
if ( viewElementOrFragment.name === '$comment' ) {
domElement = this._domDocument.createComment( viewElementOrFragment.getCustomProperty( '$rawContent' ) as string );
} else {
- // UIElement has its own render() method (see #799).
+ // UIElement has its own render() method (see https://github.com/ckeditor/ckeditor5/issues/799).
domElement = viewElementOrFragment.render( this._domDocument, this );
}
@@ -1566,7 +1566,8 @@ export class ViewDomConverter {
// Change all consecutive whitespace characters (from the [ \n\t\r] set –
// see https://github.com/ckeditor/ckeditor5-engine/issues/822#issuecomment-311670249) to a single space character.
// That's how multiple whitespaces are treated when rendered, so we normalize those whitespaces.
- // We're replacing 1+ (and not 2+) to also normalize singular \n\t\r characters (#822).
+ // We're replacing 1+ (and not 2+) to also normalize singular \n\t\r characters.
+ // See https://github.com/ckeditor/ckeditor5/issues/822.
data = node.data.replace( /[ \n\t\r]{1,}/g, ' ' );
nodeEndsWithSpace = /[^\S\u00A0]/.test( data.charAt( data.length - 1 ) );
@@ -1593,7 +1594,8 @@ export class ViewDomConverter {
// At the beginning and end of a block element, Firefox inserts normal space + instead of non-breaking space.
// This means that the text node starts/end with normal space instead of non-breaking space.
// This causes a problem because the normal space would be removed in `.replace` calls above. To prevent that,
- // the inline filler is removed only after the data is initially processed (by the `.replace` above). See ckeditor5#692.
+ // the inline filler is removed only after the data is initially processed (by the `.replace` above).
+ // See https://github.com/ckeditor/ckeditor5/issues/692.
data = getDataWithoutFiller( data );
// Block filler handling.
diff --git a/packages/ckeditor5-engine/src/view/editableelement.ts b/packages/ckeditor5-engine/src/view/editableelement.ts
index a35536b7d42..8c195c423ce 100644
--- a/packages/ckeditor5-engine/src/view/editableelement.ts
+++ b/packages/ckeditor5-engine/src/view/editableelement.ts
@@ -114,14 +114,14 @@ export class ViewEditableElement extends /* #__PURE__ */ ObservableMixin( ViewCo
ViewEditableElement.prototype.is = function( this: ViewEditableElement, type: string, name?: string ): boolean {
if ( !name ) {
return type === 'editableElement' || type === 'view:editableElement' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'containerElement' || type === 'view:containerElement' ||
type === 'element' || type === 'view:element' ||
type === 'node' || type === 'view:node';
} else {
return name === this.name && (
type === 'editableElement' || type === 'view:editableElement' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'containerElement' || type === 'view:containerElement' ||
type === 'element' || type === 'view:element'
);
diff --git a/packages/ckeditor5-engine/src/view/element.ts b/packages/ckeditor5-engine/src/view/element.ts
index 2588c0cbee1..2b1dd54c725 100644
--- a/packages/ckeditor5-engine/src/view/element.ts
+++ b/packages/ckeditor5-engine/src/view/element.ts
@@ -1217,7 +1217,7 @@ export class ViewElement extends ViewNode {
ViewElement.prototype.is = function( this: ViewElement, type: string, name?: string ): boolean {
if ( !name ) {
return type === 'element' || type === 'view:element' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'node' || type === 'view:node';
} else {
return name === this.name && ( type === 'element' || type === 'view:element' );
diff --git a/packages/ckeditor5-engine/src/view/emptyelement.ts b/packages/ckeditor5-engine/src/view/emptyelement.ts
index 3e729964fc9..3de06e8c3bb 100644
--- a/packages/ckeditor5-engine/src/view/emptyelement.ts
+++ b/packages/ckeditor5-engine/src/view/emptyelement.ts
@@ -87,7 +87,7 @@ export class ViewEmptyElement extends ViewElement {
ViewEmptyElement.prototype.is = function( this: ViewEmptyElement, type: string, name?: string ): boolean {
if ( !name ) {
return type === 'emptyElement' || type === 'view:emptyElement' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'element' || type === 'view:element' ||
type === 'node' || type === 'view:node';
} else {
diff --git a/packages/ckeditor5-engine/src/view/observer/mutationobserver.ts b/packages/ckeditor5-engine/src/view/observer/mutationobserver.ts
index 15f1d08f084..b3ccf7e138f 100644
--- a/packages/ckeditor5-engine/src/view/observer/mutationobserver.ts
+++ b/packages/ckeditor5-engine/src/view/observer/mutationobserver.ts
@@ -217,7 +217,8 @@ export class MutationObserver extends Observer {
}
}
- // In case only non-relevant mutations were recorded it skips the event and force render (#5600).
+ // In case only non-relevant mutations were recorded it skips the event and force render.
+ // See https://github.com/ckeditor/ckeditor5/issues/5600.
if ( mutations.length ) {
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
// @if CK_DEBUG_TYPING // _debouncedLine();
diff --git a/packages/ckeditor5-engine/src/view/observer/selectionobserver.ts b/packages/ckeditor5-engine/src/view/observer/selectionobserver.ts
index 467d1d0ba2a..b7e1dd0f907 100644
--- a/packages/ckeditor5-engine/src/view/observer/selectionobserver.ts
+++ b/packages/ckeditor5-engine/src/view/observer/selectionobserver.ts
@@ -323,7 +323,7 @@ export class SelectionObserver extends Observer {
return;
}
- // Ensure we are not in the infinite loop (#400).
+ // Ensure we are not in the infinite loop (https://github.com/ckeditor/ckeditor5-engine/issues/400).
// This counter is reset each second. 60 selection changes in 1 second is enough high number
// to be very difficult (impossible) to achieve using just keyboard keys (during normal editor use).
if ( ++this._loopbackCounter > 60 ) {
diff --git a/packages/ckeditor5-engine/src/view/rawelement.ts b/packages/ckeditor5-engine/src/view/rawelement.ts
index 66917d59ea4..a1604f69aae 100644
--- a/packages/ckeditor5-engine/src/view/rawelement.ts
+++ b/packages/ckeditor5-engine/src/view/rawelement.ts
@@ -123,7 +123,7 @@ export class ViewRawElement extends ViewElement {
ViewRawElement.prototype.is = function( this: ViewRawElement, type: string, name?: string ): boolean {
if ( !name ) {
return type === 'rawElement' || type === 'view:rawElement' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === this.name || type === 'view:' + this.name ||
type === 'element' || type === 'view:element' ||
type === 'node' || type === 'view:node';
diff --git a/packages/ckeditor5-engine/src/view/renderer.ts b/packages/ckeditor5-engine/src/view/renderer.ts
index 2bc5eb182c3..915dfef310d 100644
--- a/packages/ckeditor5-engine/src/view/renderer.ts
+++ b/packages/ckeditor5-engine/src/view/renderer.ts
@@ -374,7 +374,8 @@ export class ViewRenderer extends /* #__PURE__ */ ObservableMixin() {
const deleteIndex = counter.equal + counter.delete;
const viewChild = viewElement.getChild( insertIndex );
- // UIElement and RawElement are special cases. Their children are not stored in a view (#799)
+ // UIElement and RawElement are special cases. Their children are not stored in a view.
+ // See https://github.com/ckeditor/ckeditor5/issues/799.
// so we cannot use them with replacing flow (since they use view children during rendering
// which will always result in rendering empty elements).
if ( viewChild && !viewChild.is( 'uiElement' ) && !viewChild.is( 'rawElement' ) ) {
@@ -407,12 +408,13 @@ export class ViewRenderer extends /* #__PURE__ */ ObservableMixin() {
// Because we replace new view element mapping with the existing one, the corresponding DOM element
// will not be rerendered. The new view element may have different attributes than the previous one.
// Since its corresponding DOM element will not be rerendered, new attributes will not be added
- // to the DOM, so we need to mark it here to make sure its attributes gets updated. See #1427 for more
- // detailed case study.
+ // to the DOM, so we need to mark it here to make sure its attributes gets updated.
+ // See https://github.com/ckeditor/ckeditor5-engine/issues/1427 for more detailed case study.
// Also there are cases where replaced element is removed from the view structure and then has
// its attributes changed or removed. In such cases the element will not be present in `markedAttributes`
// and also may be the same (`element.isSimilar()`) as the reused element not having its attributes updated.
- // To prevent such situations we always mark reused element to have its attributes rerenderd (#1560).
+ // To prevent such situations we always mark reused element to have its attributes rerenderd.
+ // See https://github.com/ckeditor/ckeditor5-engine/issues/1560.
this.markedAttributes.add( viewElement );
}
@@ -760,7 +762,8 @@ export class ViewRenderer extends /* #__PURE__ */ ObservableMixin() {
this._updateTextNode( actualDomChildren[ i ] as DomText, ( expectedDomChildren[ i ] as DomText ).data );
i++;
} else if ( action === 'equal' ) {
- // Force updating text nodes inside elements which did not change and do not need to be re-rendered (#1125).
+ // Force updating text nodes inside elements which did not change and do not need to be re-rendered.
+ // See https://github.com/ckeditor/ckeditor5-engine/issues/1125.
// Do it here (not in the loop above) because only after insertions the `i` index is correct.
this._markDescendantTextToSync( this.domConverter.domToView( expectedDomChildren[ i ] ) as any );
i++;
diff --git a/packages/ckeditor5-engine/src/view/rooteditableelement.ts b/packages/ckeditor5-engine/src/view/rooteditableelement.ts
index aa62503fc7a..d30a3535bd3 100644
--- a/packages/ckeditor5-engine/src/view/rooteditableelement.ts
+++ b/packages/ckeditor5-engine/src/view/rooteditableelement.ts
@@ -77,7 +77,7 @@ export class ViewRootEditableElement extends ViewEditableElement {
ViewRootEditableElement.prototype.is = function( this: ViewRootEditableElement, type: string, name?: string ): boolean {
if ( !name ) {
return type === 'rootElement' || type === 'view:rootElement' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'editableElement' || type === 'view:editableElement' ||
type === 'containerElement' || type === 'view:containerElement' ||
type === 'element' || type === 'view:element' ||
@@ -85,7 +85,7 @@ ViewRootEditableElement.prototype.is = function( this: ViewRootEditableElement,
} else {
return name === this.name && (
type === 'rootElement' || type === 'view:rootElement' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'editableElement' || type === 'view:editableElement' ||
type === 'containerElement' || type === 'view:containerElement' ||
type === 'element' || type === 'view:element'
diff --git a/packages/ckeditor5-engine/src/view/text.ts b/packages/ckeditor5-engine/src/view/text.ts
index 8e0ee9b2cff..34ba207a1cc 100644
--- a/packages/ckeditor5-engine/src/view/text.ts
+++ b/packages/ckeditor5-engine/src/view/text.ts
@@ -135,6 +135,6 @@ ViewText.prototype.is = function( type: string ): boolean {
return type === '$text' || type === 'view:$text' ||
// This are legacy values kept for backward compatibility.
type === 'text' || type === 'view:text' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'node' || type === 'view:node';
} as any;
diff --git a/packages/ckeditor5-engine/src/view/uielement.ts b/packages/ckeditor5-engine/src/view/uielement.ts
index 58f47144eb6..c4a5cd7b5f7 100644
--- a/packages/ckeditor5-engine/src/view/uielement.ts
+++ b/packages/ckeditor5-engine/src/view/uielement.ts
@@ -147,7 +147,7 @@ export class ViewUIElement extends ViewElement {
ViewUIElement.prototype.is = function( this: ViewUIElement, type: string, name?: string ): boolean {
if ( !name ) {
return type === 'uiElement' || type === 'view:uiElement' ||
- // From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+ // From super.is(). This is highly utilised method and cannot call super. See https://github.com/ckeditor/ckeditor5/issues/6529.
type === 'element' || type === 'view:element' ||
type === 'node' || type === 'view:node';
} else {
diff --git a/packages/ckeditor5-engine/tests/controller/datacontroller.js b/packages/ckeditor5-engine/tests/controller/datacontroller.js
index 8703b30f3c3..18ea2035640 100644
--- a/packages/ckeditor5-engine/tests/controller/datacontroller.js
+++ b/packages/ckeditor5-engine/tests/controller/datacontroller.js
@@ -1151,7 +1151,7 @@ describe( 'DataController', () => {
const downcastDispatcher = data.downcastDispatcher;
const dataProcessor = data.processor;
- // Test whether list modelViewSplitOnInsert is not breaking conversion (see #11490).
+ // Test whether list modelViewSplitOnInsert is not breaking conversion (see https://github.com/ckeditor/ckeditor5/issues/11490).
downcastDispatcher.on( 'insert', ( evt, data, conversionApi ) => {
if ( conversionApi.consumable.test( data.item, evt.name ) ) {
conversionApi.mapper.toViewPosition( data.range.start );
diff --git a/packages/ckeditor5-engine/tests/model/differ.js b/packages/ckeditor5-engine/tests/model/differ.js
index 7b312ca5b29..3afa6864fab 100644
--- a/packages/ckeditor5-engine/tests/model/differ.js
+++ b/packages/ckeditor5-engine/tests/model/differ.js
@@ -2834,7 +2834,7 @@ describe( 'Differ', () => {
// See https://github.com/ckeditor/ckeditor5/issues/733.
it( 'proper filtering of changes in removed elements', () => {
- // Before fix there was a buggy scenario described in ckeditor5#733.
+ // Before fix there was a buggy scenario described in https://github.com/ckeditor/ckeditor5/issues/733.
// There was this structure: `foo[
te]xt
`
// On delete of above selection `image` and `paragraph` inside `blockQuote` are removed (it gets merged).
// However, since `image` was removed first, when checking if `paragraph` is in a removed element,
diff --git a/packages/ckeditor5-engine/tests/model/documentselection.js b/packages/ckeditor5-engine/tests/model/documentselection.js
index 6c6563c9925..f1820e8df37 100644
--- a/packages/ckeditor5-engine/tests/model/documentselection.js
+++ b/packages/ckeditor5-engine/tests/model/documentselection.js
@@ -1019,7 +1019,7 @@ describe( 'DocumentSelection', () => {
expect( spy.called ).to.be.true;
} );
- // See #630.
+ // See https://github.com/ckeditor/ckeditor5-engine/issues/630.
it( 'should refresh attributes – integration test for #630', () => {
model.schema.extend( '$text', { allowIn: '$root' } );
diff --git a/packages/ckeditor5-engine/tests/model/utils/insertcontent.js b/packages/ckeditor5-engine/tests/model/utils/insertcontent.js
index a626419e778..951a338a022 100644
--- a/packages/ckeditor5-engine/tests/model/utils/insertcontent.js
+++ b/packages/ckeditor5-engine/tests/model/utils/insertcontent.js
@@ -785,7 +785,7 @@ describe( 'DataController utils', () => {
);
} );
- // See ckeditor5#2010.
+ // See https://github.com/ckeditor/ckeditor5/issues/2010.
it( 'should handle bQ+p over bQ+p insertion', () => {
model.schema.register( 'blockQuote', {
allowWhere: '$block',
diff --git a/packages/ckeditor5-engine/tests/view/containerelement.js b/packages/ckeditor5-engine/tests/view/containerelement.js
index 83df2595ab7..8d6a0952da1 100644
--- a/packages/ckeditor5-engine/tests/view/containerelement.js
+++ b/packages/ckeditor5-engine/tests/view/containerelement.js
@@ -77,7 +77,8 @@ describe( 'ContainerElement', () => {
expect( _parseView( 'foo' ).getFillerOffset() ).to.be.null;
} );
- // Block filler is required after the ` ` element if the element is the last child in the container. See #1422.
+ // Block filler is required after the ` ` element if the element is the last child in the container.
+ // See https://github.com/ckeditor/ckeditor5-engine/issues/1422.
describe( 'for elements in container', () => {
it( 'should return null for a container with text content only', () => {
expect( _parseView( 'Foo.' ).getFillerOffset() ).to.equals( null );
diff --git a/packages/ckeditor5-engine/tests/view/domconverter/domconverter.js b/packages/ckeditor5-engine/tests/view/domconverter/domconverter.js
index 30f6ee412cd..5d91ecde878 100644
--- a/packages/ckeditor5-engine/tests/view/domconverter/domconverter.js
+++ b/packages/ckeditor5-engine/tests/view/domconverter/domconverter.js
@@ -360,7 +360,7 @@ describe( 'ViewDomConverter', () => {
expect( converter.isBlockFiller( context.childNodes[ 1 ] ) ).to.be.false;
} );
- // SPECIAL CASE (see ckeditor5#5564).
+ // SPECIAL CASE (see https://github.com/ckeditor/ckeditor5/issues/5564).
it( 'should return true for a element which is the only child of its block parent', () => {
const context = document.createElement( elementName );
context.innerHTML = ' ';
diff --git a/packages/ckeditor5-engine/tests/view/range.js b/packages/ckeditor5-engine/tests/view/range.js
index b45d57b4c31..c05692b35f9 100644
--- a/packages/ckeditor5-engine/tests/view/range.js
+++ b/packages/ckeditor5-engine/tests/view/range.js
@@ -211,7 +211,7 @@ describe( 'Range', () => {
// Other results may theoretically be correct too. It is not decided whether the trimmed range should
// be collapsed in attribute element, at its start or its end. This is one of possible correct results
- // and we won't know for sure unless we have more cases. See #1058.
+ // and we won't know for sure unless we have more cases. See https://github.com/ckeditor/ckeditor5-engine/issues/1058.
it( 'case 8', () => {
expect( trim( '