Вы можете использовать методы jQuery $. Grep () , чтобы заменить Array.find()
Array.splice()
, вместо этого, кажется, поддерживается в IE 5.5
также хороший polyfill, который должен работать на IE9:
Array.prototype.find = Array.prototype.find || function(callback) {
if (this === null) {
throw new TypeError('Array.prototype.find called on null or undefined');
} else if (typeof callback !== 'function') {
throw new TypeError('callback must be a function');
}
var list = Object(this);
// Makes sures is always has an positive integer as length.
var length = list.length >>> 0;
var thisArg = arguments[1];
for (var i = 0; i < length; i++) {
var element = list[i];
if ( callback.call(thisArg, element, i, list) ) {
return element;
}
}
Ссылка: https://github.com/jsPolyfill/Array.prototype.find/blob/master/find.js
Можно использовать identexpr опцию указать отступ путем оценки выражения (т.е. записи функции сценария энергии). Эта функция должна принять строку - строку - и возвратить количество пробелов для расположения с отступом. Это дает Вам гибкость для возврата уровня отступа для этого шаблонного условия или нейтрализации для автоматического отступа, smartindent или cindent в нормальных, подобных C ситуациях.
Вот пример, который был создан для обработки расширения сигналов и слотов QT. Это демонстрирует нейтрализацию функции cindent.
Мое решение:
" Don't indent namespace and template function! CppNoNamespaceAndTemplateIndent() let l:cline_num = line('.') let l:cline = getline(l:cline_num) let l:pline_num = prevnonblank(l:cline_num - 1) let l:pline = getline(l:pline_num) while l:pline =~# '\(^\s*{\s*\|^\s*//\|^\s*/\*\|\*/\s*$\)' let l:pline_num = prevnonblank(l:pline_num - 1) let l:pline = getline(l:pline_num) endwhile let l:retv = cindent('.') let l:pindent = indent(l:pline_num) if l:pline =~# '^\s*template\s*\s*$' let l:retv = l:pindent elseif l:pline =~# '\s*typename\s*.*,\s*$' let l:retv = l:pindent elseif l:cline =~# '^\s*>\s*$' let l:retv = l:pindent - &shiftwidth elseif l:pline =~# '\s*typename\s*.*>\s*$' let l:retv = l:pindent - &shiftwidth elseif l:pline =~# '^\s*namespace.*' let l:retv = 0 endif return l:retv endfunction if has("autocmd") autocmd BufEnter *.{cc,cxx,cpp,h,hh,hpp,hxx} setlocal indentexpr=CppNoNamespaceAndTemplateIndent() endif