: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
})(function(CodeMirror) {
"From", "Sender", "Reply-To", "To", "Cc", "Bcc", "Message-ID",
"In-Reply-To", "References", "Resent-From", "Resent-Sender", "Resent-To",
"Resent-Cc", "Resent-Bcc", "Resent-Message-ID", "Return-Path", "Received"
"Date", "Subject", "Comments", "Keywords", "Resent-Date"
CodeMirror.registerHelper("hintWords", "mbox", rfc2822.concat(rfc2822NoEmail));
var whitespace = /^[ \t]/;
var separator = /^From /; // See RFC 4155
var rfc2822Header = new RegExp("^(" + rfc2822.join("|") + "): ");
var rfc2822HeaderNoEmail = new RegExp("^(" + rfc2822NoEmail.join("|") + "): ");
var header = /^[^:]+:/; // Optional fields defined in RFC 2822
var email = /^[^ ]+@[^ ]+/;
var untilEmail = /^.*?(?=[^ ]+?@[^ ]+)/;
var bracketedEmail = /^<.*?>/;
var untilBracketedEmail = /^.*?(?=<.*>)/;
function styleForHeader(header) {
if (header === "Subject") return "header";
function readToken(stream, state) {
state.inSeparator = false;
if (state.inHeader && stream.match(whitespace)) {
if (stream.match(separator)) {
state.inSeparator = true;
var emailPermitted = false;
if ((match = stream.match(rfc2822HeaderNoEmail)) ||
(emailPermitted = true) && (match = stream.match(rfc2822Header))) {
state.emailPermitted = emailPermitted;
// Use vim's heuristics: recognize custom headers only if the line is in a
// block of legitimate headers.
if (state.inHeaders && (match = stream.match(header))) {
state.emailPermitted = true;
if (stream.match(email)) return "link";
if (stream.match(untilEmail)) return "atom";
var style = styleForHeader(state.header);
if (state.emailPermitted) {
if (stream.match(bracketedEmail)) return style + " link";
if (stream.match(untilBracketedEmail)) return style;
CodeMirror.defineMode("mbox", function() {
// Is in a mbox separator
// If bracketed email is permitted. Only applicable when inHeader
// Name of current header
// Is in a region of mail headers
blankLine: function(state) {
state.inHeaders = state.inSeparator = state.inHeader = false;
CodeMirror.defineMIME("application/mbox", "mbox");