Merge remote-tracking branch 'lenormf/drop-travis'
This commit is contained in:
commit
9ea1d82135
41
.travis.yml
41
.travis.yml
|
@ -1,41 +0,0 @@
|
||||||
language: cpp
|
|
||||||
|
|
||||||
sudo: false
|
|
||||||
|
|
||||||
os:
|
|
||||||
- linux
|
|
||||||
- osx
|
|
||||||
|
|
||||||
osx_image: xcode10.1
|
|
||||||
|
|
||||||
compiler:
|
|
||||||
- clang
|
|
||||||
- gcc
|
|
||||||
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- secure: "R+NxqtytOslIcQ/eCbLoZhImsgYdJnljfjANdieFQGune9ACPPQL0YanXkF49c9SWGBSxrAcute0egQzv2CU2+ivSQIX/xnMebKHiOmSPYBoxX+VgxLT3U1itUYlpYwixo9rF8UnGdlgXid6oENSiCvfWtNKoM2qOL0Ttw31J9E="
|
|
||||||
|
|
||||||
before_install: if [ "$CXX" = "g++" ]; then export CXX=g++-7; fi
|
|
||||||
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- libstdc++-7-dev
|
|
||||||
- g++-7
|
|
||||||
- libncursesw5-dev
|
|
||||||
homebrew:
|
|
||||||
update: true
|
|
||||||
packages: gcc@7
|
|
||||||
coverity_scan:
|
|
||||||
project:
|
|
||||||
name: "mawww/kakoune"
|
|
||||||
description: "Build submitted via Travis CI"
|
|
||||||
notification_email: frrrwww@gmail.com
|
|
||||||
build_command_prepend: "cd src && make clean"
|
|
||||||
build_command: "make -j4"
|
|
||||||
branch_pattern: coverity-scan
|
|
||||||
|
|
||||||
script: cd src && make && make test
|
|
|
@ -1,9 +1,7 @@
|
||||||
= image:{logo}[K,30,30,link="{website}",title="Kakoune logo by p0nce"] Kakoune image:{travis-img}[link="{travis-url}"] image:{cirrus-img}[link="{cirrus-url}"] image:{irc-img}[link="{irc-url}"]
|
= image:{logo}[K,30,30,link="{website}",title="Kakoune logo by p0nce"] Kakoune image:{cirrus-img}[link="{cirrus-url}"] image:{irc-img}[link="{irc-url}"]
|
||||||
ifdef::env-github,env-browser[:outfilesuffix: .asciidoc]
|
ifdef::env-github,env-browser[:outfilesuffix: .asciidoc]
|
||||||
:logo: https://rawgit.com/mawww/kakoune/master/doc/kakoune_logo.svg
|
:logo: https://rawgit.com/mawww/kakoune/master/doc/kakoune_logo.svg
|
||||||
:website: https://kakoune.org
|
:website: https://kakoune.org
|
||||||
:travis-img: https://travis-ci.org/mawww/kakoune.svg?branch=master
|
|
||||||
:travis-url: https://travis-ci.org/mawww/kakoune
|
|
||||||
:cirrus-img: https://api.cirrus-ci.com/github/mawww/kakoune.svg
|
:cirrus-img: https://api.cirrus-ci.com/github/mawww/kakoune.svg
|
||||||
:cirrus-url: https://cirrus-ci.com/github/mawww/kakoune
|
:cirrus-url: https://cirrus-ci.com/github/mawww/kakoune
|
||||||
:irc-img: https://img.shields.io/badge/IRC-%23kakoune-blue.svg
|
:irc-img: https://img.shields.io/badge/IRC-%23kakoune-blue.svg
|
||||||
|
|
|
@ -286,7 +286,7 @@ void TerminalUI::Screen::output(bool force, bool synchronized, Writer& writer)
|
||||||
|
|
||||||
// iTerm2 "begin synchronized update" sequence
|
// iTerm2 "begin synchronized update" sequence
|
||||||
if (synchronized)
|
if (synchronized)
|
||||||
writer.write("\033P=1s\033\\");
|
writer.write("\033[?2026h");
|
||||||
|
|
||||||
if (force)
|
if (force)
|
||||||
{
|
{
|
||||||
|
@ -299,77 +299,41 @@ void TerminalUI::Screen::output(bool force, bool synchronized, Writer& writer)
|
||||||
return (hash_value(line.atoms) << 1) | 1; // ensure non-zero
|
return (hash_value(line.atoms) << 1) | 1; // ensure non-zero
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Change { int keep; int add; int del; };
|
for (int line = 0; line < (int)size.line; ++line)
|
||||||
Vector<Change> changes{Change{}};
|
|
||||||
auto new_hashes = ArrayView{lines.get(), (size_t)size.line} | transform(hash_line);
|
|
||||||
for_each_diff(hashes.get(), (int)size.line,
|
|
||||||
new_hashes.begin(), (int)size.line,
|
|
||||||
[&changes](DiffOp op, int len) mutable {
|
|
||||||
switch (op)
|
|
||||||
{
|
|
||||||
case DiffOp::Keep:
|
|
||||||
changes.push_back({len, 0, 0});
|
|
||||||
break;
|
|
||||||
case DiffOp::Add:
|
|
||||||
changes.back().add += len;
|
|
||||||
break;
|
|
||||||
case DiffOp::Remove:
|
|
||||||
changes.back().del += len;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
std::copy(new_hashes.begin(), new_hashes.end(), hashes.get());
|
|
||||||
|
|
||||||
int line = 0;
|
|
||||||
for (auto& change : changes)
|
|
||||||
{
|
{
|
||||||
line += change.keep;
|
auto hash = hash_line(lines[line]);
|
||||||
if (int del = change.del - change.add; del > 0)
|
if (hash == hashes[line])
|
||||||
{
|
continue;
|
||||||
format_with(writer, "\033[{}H\033[{}M", line + 1, del);
|
hashes[line] = hash;
|
||||||
line -= del;
|
|
||||||
}
|
|
||||||
line += change.del;
|
|
||||||
}
|
|
||||||
|
|
||||||
line = 0;
|
format_with(writer, "\033[{}H", line + 1);
|
||||||
for (auto& change : changes)
|
|
||||||
{
|
|
||||||
line += change.keep;
|
|
||||||
for (int i = 0; i < change.add; ++i)
|
|
||||||
{
|
|
||||||
if (int add = change.add - change.del; i == 0 and add > 0)
|
|
||||||
format_with(writer, "\033[{}H\033[{}L", line + 1, add);
|
|
||||||
else
|
|
||||||
format_with(writer, "\033[{}H", line + 1);
|
|
||||||
|
|
||||||
ColumnCount pending_move = 0;
|
ColumnCount pending_move = 0;
|
||||||
for (auto& [text, skip, face] : lines[line++].atoms)
|
for (auto& [text, skip, face] : lines[line].atoms)
|
||||||
|
{
|
||||||
|
if (text.empty() and skip == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (pending_move != 0)
|
||||||
{
|
{
|
||||||
if (text.empty() and skip == 0)
|
format_with(writer, "\033[{}C", (int)pending_move);
|
||||||
continue;
|
pending_move = 0;
|
||||||
|
|
||||||
if (pending_move != 0)
|
|
||||||
{
|
|
||||||
format_with(writer, "\033[{}C", (int)pending_move);
|
|
||||||
pending_move = 0;
|
|
||||||
}
|
|
||||||
set_face(face, writer);
|
|
||||||
writer.write(text);
|
|
||||||
if (skip > 3 and face.attributes == Attribute{})
|
|
||||||
{
|
|
||||||
writer.write("\033[K");
|
|
||||||
pending_move = skip;
|
|
||||||
}
|
|
||||||
else if (skip > 0)
|
|
||||||
writer.write(String{' ', skip});
|
|
||||||
}
|
}
|
||||||
|
set_face(face, writer);
|
||||||
|
writer.write(text);
|
||||||
|
if (skip > 3 and face.attributes == Attribute{})
|
||||||
|
{
|
||||||
|
writer.write("\033[K");
|
||||||
|
pending_move = skip;
|
||||||
|
}
|
||||||
|
else if (skip > 0)
|
||||||
|
writer.write(String{' ', skip});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// iTerm2 "end synchronized update" sequence
|
// iTerm2 "end synchronized update" sequence
|
||||||
if (synchronized)
|
if (synchronized)
|
||||||
writer.write("\033P=2s\033\\");
|
writer.write("\033[?2026l");
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr int TerminalUI::default_shift_function_key;
|
constexpr int TerminalUI::default_shift_function_key;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user