Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4090750
ext-hardwrap.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
ext-hardwrap.js
View Options
ace
.
define
(
"ace/ext/hardwrap"
,[
"require"
,
"exports"
,
"module"
,
"ace/range"
,
"ace/editor"
,
"ace/config"
],
function
(
require
,
exports
,
module
){
"use strict"
;
var
Range
=
require
(
"../range"
).
Range
;
function
hardWrap
(
editor
,
options
)
{
var
max
=
options
.
column
||
editor
.
getOption
(
"printMarginColumn"
);
var
allowMerge
=
options
.
allowMerge
!=
false
;
var
row
=
Math
.
min
(
options
.
startRow
,
options
.
endRow
);
var
endRow
=
Math
.
max
(
options
.
startRow
,
options
.
endRow
);
var
session
=
editor
.
session
;
while
(
row
<=
endRow
)
{
var
line
=
session
.
getLine
(
row
);
if
(
line
.
length
>
max
)
{
var
space
=
findSpace
(
line
,
max
,
5
);
if
(
space
)
{
var
indentation
=
/^\s*/
.
exec
(
line
)[
0
];
session
.
replace
(
new
Range
(
row
,
space
.
start
,
row
,
space
.
end
),
"\n"
+
indentation
);
}
endRow
++
;
}
else
if
(
allowMerge
&&
/\S/
.
test
(
line
)
&&
row
!=
endRow
)
{
var
nextLine
=
session
.
getLine
(
row
+
1
);
if
(
nextLine
&&
/\S/
.
test
(
nextLine
))
{
var
trimmedLine
=
line
.
replace
(
/\s+$/
,
""
);
var
trimmedNextLine
=
nextLine
.
replace
(
/^\s+/
,
""
);
var
mergedLine
=
trimmedLine
+
" "
+
trimmedNextLine
;
var
space
=
findSpace
(
mergedLine
,
max
,
5
);
if
(
space
&&
space
.
start
>
trimmedLine
.
length
||
mergedLine
.
length
<
max
)
{
var
replaceRange
=
new
Range
(
row
,
trimmedLine
.
length
,
row
+
1
,
nextLine
.
length
-
trimmedNextLine
.
length
);
session
.
replace
(
replaceRange
,
" "
);
row
--
;
endRow
--
;
}
else
if
(
trimmedLine
.
length
<
line
.
length
)
{
session
.
remove
(
new
Range
(
row
,
trimmedLine
.
length
,
row
,
line
.
length
));
}
}
}
row
++
;
}
function
findSpace
(
line
,
max
,
min
)
{
if
(
line
.
length
<
max
)
return
;
var
before
=
line
.
slice
(
0
,
max
);
var
after
=
line
.
slice
(
max
);
var
spaceAfter
=
/^(?:(\s+)|(\S+)(\s+))/
.
exec
(
after
);
var
spaceBefore
=
/(?:(\s+)|(\s+)(\S+))$/
.
exec
(
before
);
var
start
=
0
;
var
end
=
0
;
if
(
spaceBefore
&&
!
spaceBefore
[
2
])
{
start
=
max
-
spaceBefore
[
1
].
length
;
end
=
max
;
}
if
(
spaceAfter
&&
!
spaceAfter
[
2
])
{
if
(
!
start
)
start
=
max
;
end
=
max
+
spaceAfter
[
1
].
length
;
}
if
(
start
)
{
return
{
start
:
start
,
end
:
end
};
}
if
(
spaceBefore
&&
spaceBefore
[
2
]
&&
spaceBefore
.
index
>
min
)
{
return
{
start
:
spaceBefore
.
index
,
end
:
spaceBefore
.
index
+
spaceBefore
[
2
].
length
};
}
if
(
spaceAfter
&&
spaceAfter
[
2
])
{
start
=
max
+
spaceAfter
[
2
].
length
;
return
{
start
:
start
,
end
:
start
+
spaceAfter
[
3
].
length
};
}
}
}
function
wrapAfterInput
(
e
)
{
if
(
e
.
command
.
name
==
"insertstring"
&&
/\S/
.
test
(
e
.
args
))
{
var
editor
=
e
.
editor
;
var
cursor
=
editor
.
selection
.
cursor
;
if
(
cursor
.
column
<=
editor
.
renderer
.
$printMarginColumn
)
return
;
var
lastDelta
=
editor
.
session
.
$undoManager
.
$lastDelta
;
hardWrap
(
editor
,
{
startRow
:
cursor
.
row
,
endRow
:
cursor
.
row
,
allowMerge
:
false
});
if
(
lastDelta
!=
editor
.
session
.
$undoManager
.
$lastDelta
)
editor
.
session
.
markUndoGroup
();
}
}
var
Editor
=
require
(
"../editor"
).
Editor
;
require
(
"../config"
).
defineOptions
(
Editor
.
prototype
,
"editor"
,
{
hardWrap
:
{
set
:
function
(
val
)
{
if
(
val
)
{
this
.
commands
.
on
(
"afterExec"
,
wrapAfterInput
);
}
else
{
this
.
commands
.
off
(
"afterExec"
,
wrapAfterInput
);
}
},
value
:
false
}
});
exports
.
hardWrap
=
hardWrap
;
});
(
function
()
{
ace
.
require
([
"ace/ext/hardwrap"
],
function
(
m
)
{
if
(
typeof
module
==
"object"
&&
typeof
exports
==
"object"
&&
module
)
{
module
.
exports
=
m
;
}
});
})();
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Aug 18 2026, 11:17 (5 w, 4 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
65/2f/39116812bc0c93718200913d79ab
Default Alt Text
ext-hardwrap.js (4 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment