Merge branch 'main' into main

macos-click-through
multisn8 2 years ago committed by GitHub
commit 9a40efbf1d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -29,7 +29,7 @@ If applicable, add screenshots to help explain your problem.
- Neovide Version [e.g. 0.6.0]
- Neovim Version [e.g. 0.5.0]
**Please run `neovide --log` and paste the contents of the `.log` file here:**
**Please run `neovide --log` and paste the contents of the `.log` file created in the current directory here:**
**Additional context**
Add any other context about the problem here.

812
Cargo.lock generated

File diff suppressed because it is too large Load Diff

@ -1,6 +1,6 @@
[package]
name = "neovide"
version = "0.8.0"
version = "0.9.0"
authors = ["keith <keith@the-simmons.net>"]
edition = "2018"
build = "build.rs"
@ -16,53 +16,53 @@ default = []
embed-fonts = []
[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
async-trait = "0.1.53"
cfg-if = "1.0.0"
clap = { version = "3.1.9", features = ["cargo"] }
clipboard = "0.5.0"
derive-new = "0.5.9"
dirs = "4.0.0"
euclid = "0.22.7"
flexi_logger = { version = "0.22.3", default-features = false }
futures = "0.3.21"
gl = "0.14.0"
glutin = { git = "https://github.com/neovide/glutin", branch = "new-keyboard-all", features = ["serde"] }
image = { version = "0.24.1", default-features = false, features = ["ico"] }
lazy_static = "1.4.0"
log = "0.4.16"
lru = "0.7.5"
neovide-derive = { path = "neovide-derive" }
euclid = "0.20.7"
lru = "0.4.3"
derive-new = "0.5"
rmpv = "1.0.0"
image = { version = "0.22.3", default-features = false, features = ["ico"] }
nvim-rs = { git = "https://github.com/KillTheMule/nvim-rs", branch = "master", features = ["use_tokio"] }
tokio = { version = "1.1.1", features = ["full"] }
tokio-util = "0.6.7"
async-trait = "0.1.18"
lazy_static = "1.4.0"
unicode-segmentation = "1.6.0"
log = "0.4.8"
flexi_logger = { version = "0.17.1", default-features = false }
parking_lot = "0.10.0"
cfg-if = "0.1.10"
which = "4"
dirs = "2"
rand = "0.7"
pin-project = "0.4.27"
futures = "0.3.12"
glutin = { git = "https://github.com/neovide/glutin", branch = "new-keyboard-all", features=["serde"] }
winit = { git = "https://github.com/neovide/winit", branch = "new-keyboard-all" }
gl = "0.14.0"
parking_lot = "0.12.0"
pin-project = "1.0.10"
rand = "0.8.5"
rmpv = "1.0.0"
serde = { version = "1.0.136", features = ["derive"] }
serde_json = "1.0.79"
swash = "0.1.4"
clap="2.33.3"
xdg="2.4.0"
clipboard="0.5.0"
tokio = { version = "1.17.0", features = ["full"] }
tokio-util = { version = "0.7.1", features = ["compat"] }
unicode-segmentation = "1.9.0"
which = "4.2.5"
winit = { git = "https://github.com/neovide/winit", branch = "new-keyboard-all" }
xdg = "2.4.1"
[dev-dependencies]
mockall = "0.7.0"
mockall = "0.11.0"
[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3.9", features = ["winuser"] }
[target.'cfg(windows)'.build-dependencies]
winres = "0.1.11"
winres = "0.1.12"
[target.'cfg(linux)'.dependencies.skia-safe]
features = ["gl", "egl"]
version = "^0.42.1"
version = "0.49.1"
[target.'cfg(not(linux))'.dependencies.skia-safe]
features = ["gl"]
version = "^0.42.1"
version = "0.49.1"
[profile.release]
debug = true
@ -73,7 +73,7 @@ incremental = true
name = "Neovide"
identifier = "com.neovide.neovide"
icon = ["assets/neovide.ico"]
version = "0.8.0"
version = "0.9.0"
resources = []
copyright = "Copyright (c) Keith 2021. All rights reserved."
category = "Productivity"

@ -116,7 +116,7 @@ Configuration is done almost completely via global neovide variables in your vim
**Note**: Building instructions are somewhat limited at the moment. All the libraries I use are cross platform and should have
support for Windows, Mac, and Linux. On Windows this should be enabled by default if you have a relatively recent system.
**Note**: Neovide requires neovim version 0.6 or greater if built from main, or 0.4 if downloaded from releases.
**Note**: Neovide requires neovim version 0.6 or greater. See previous releases such as `0.5.0` if your distro is too slow with updating.
### From binary

@ -1,6 +1,6 @@
name: neovide # you probably want to 'snapcraft register <name>'
base: core20 # the base snap is the execution environment for this snap
version: "0.8.0+git"
version: "0.9.0+git"
summary: The snappiest vim editor you are likely to find.
description: |
This is a simple graphical user interface for Neovim. Where possible there are some graphical improvements,

@ -1,6 +1,6 @@
use crate::{dimensions::Dimensions, frame::Frame, settings::*};
use clap::{App, Arg};
use clap::{Arg, Command};
#[derive(Clone, Debug)]
pub struct CmdLineSettings {
@ -54,99 +54,99 @@ impl Default for CmdLineSettings {
}
pub fn handle_command_line_arguments(args: Vec<String>) -> Result<(), String> {
let clapp = App::new("Neovide")
let clapp = Command::new("Neovide")
.version(crate_version!())
.author(crate_authors!())
.about(crate_description!())
// Pass through arguments
.arg(
Arg::with_name("files_to_open")
.multiple(true)
Arg::new("files_to_open")
.multiple_values(true)
.takes_value(true)
.help("Files to open"),
)
.arg(
Arg::with_name("neovim_args")
.multiple(true)
Arg::new("neovim_args")
.multiple_values(true)
.takes_value(true)
.last(true)
.help("Specify Arguments to pass down to neovim"),
)
// Command-line arguments only
.arg(
Arg::with_name("geometry")
Arg::new("geometry")
.long("geometry")
.takes_value(true)
.help("Specify the Geometry of the window"),
)
.arg(
Arg::with_name("log_to_file")
Arg::new("log_to_file")
.long("log")
.help("Log to a file"),
)
.arg(
Arg::with_name("nofork")
Arg::new("nofork")
.long("nofork")
.help("Do not detach process from terminal"),
)
.arg(
Arg::with_name("no_tabs")
Arg::new("no_tabs")
.long("notabs")
.help("Disable open multiple files as tabs"),
)
.arg(
Arg::with_name("remote_tcp")
Arg::new("remote_tcp")
.long("remote-tcp")
.takes_value(true)
.help("Connect to Remote TCP"),
)
.arg(
Arg::with_name("wsl")
Arg::new("wsl")
.long("wsl")
.help("Run in WSL")
)
// Command-line flags with environment variable fallback
.arg(
Arg::with_name("frame")
Arg::new("frame")
.long("frame")
.takes_value(true)
.help("Configure the window frame. NOTE: Window might not be resizable if setting is None.")
)
.arg(
Arg::with_name("maximized")
Arg::new("maximized")
.long("maximized")
.help("Maximize the window"),
)
.arg(
Arg::with_name("multi_grid")
Arg::new("multi_grid")
.long("multigrid")
.help("Enable Multigrid"),
)
.arg(
Arg::with_name("noidle")
Arg::new("noidle")
.long("noidle")
.help("Render every frame. Takes more power and cpu time but possibly fixes animation issues"),
)
.arg(
Arg::with_name("nosrgb")
Arg::new("nosrgb")
.long("nosrgb")
.help("Do not use standard color space to initialize the window. Swapping this variable sometimes fixes issues on startup"),
)
// Command-line arguments with environment variable fallback
.arg(
Arg::with_name("neovim_bin")
Arg::new("neovim_bin")
.long("neovim-bin")
.takes_value(true)
.help("Specify path to neovim"),
)
.arg(
Arg::with_name("wayland_app_id")
Arg::new("wayland_app_id")
.long("wayland-app-id")
.takes_value(true)
.help("Specify an App ID for Wayland"),
)
.arg(
Arg::with_name("x11_wm_class")
Arg::new("x11_wm_class")
.long("x11-wm-class")
.takes_value(true)
.help("Specify an X11 WM class"),
@ -329,7 +329,7 @@ mod tests {
let _accessing_settings = ACCESSING_SETTINGS.lock().unwrap();
handle_command_line_arguments(args).expect("Could not parse arguments");
assert_eq!(SETTINGS.get::<CmdLineSettings>().log_to_file, true);
assert!(SETTINGS.get::<CmdLineSettings>().log_to_file);
}
#[test]

@ -84,7 +84,7 @@ impl Cursor {
return self
.style
.as_ref()
.map(|s| (255 as f32 * ((100 - s.blend) as f32 / (100.0 as f32))) as u8)
.map(|s| (255_f32 * ((100 - s.blend) as f32 / 100.0_f32)) as u8)
.unwrap_or(255);
}
@ -160,7 +160,7 @@ mod tests {
cursor.foreground(&DEFAULT_COLORS),
DEFAULT_COLORS.background.unwrap()
);
cursor.style = style.clone();
cursor.style = style;
assert_eq!(
cursor.foreground(&DEFAULT_COLORS),
COLORS.foreground.unwrap()
@ -182,7 +182,7 @@ mod tests {
cursor.background(&DEFAULT_COLORS),
DEFAULT_COLORS.foreground.unwrap()
);
cursor.style = style.clone();
cursor.style = style;
assert_eq!(
cursor.background(&DEFAULT_COLORS),
COLORS.background.unwrap()

@ -199,10 +199,7 @@ mod tests {
// RUN FUNCTION
character_grid.set_all_characters(grid_cell.clone());
assert_eq!(
character_grid.characters,
vec![grid_cell.clone(); context.area]
);
assert_eq!(character_grid.characters, vec![grid_cell; context.area]);
}
#[test]
@ -214,7 +211,7 @@ mod tests {
"foo".to_string(),
Some(Arc::new(Style::new(context.none_colors))),
);
character_grid.characters = vec![grid_cell.clone(); context.area];
character_grid.characters = vec![grid_cell; context.area];
// RUN FUNCTION
character_grid.clear();

@ -83,7 +83,7 @@ impl Editor {
}
RedrawEvent::ModeInfoSet { cursor_modes } => {
self.mode_list = cursor_modes;
if let Some(current_mode_i) = self.current_mode_index.clone() {
if let Some(current_mode_i) = self.current_mode_index {
if let Some(current_mode) = self.mode_list.get(current_mode_i as usize) {
self.cursor.change_mode(current_mode, &self.defined_styles)
}

@ -367,6 +367,6 @@ mod tests {
let sent_commands = draw_command_receiver
.try_recv()
.expect("Could not receive commands");
assert!(sent_commands.len() != 0);
assert!(!sent_commands.is_empty());
}
}

@ -1,8 +1,7 @@
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
// Test naming occasionally uses camelCase with underscores to separate sections of
// the test name.
#[cfg_attr(test, allow(non_snake_case))]
#![cfg_attr(test, allow(non_snake_case))]
#[macro_use]
extern crate neovide_derive;
@ -34,7 +33,7 @@ extern crate lazy_static;
use std::env::args;
#[cfg(not(test))]
use flexi_logger::{Cleanup, Criterion, Duplicate, Logger, Naming};
use flexi_logger::{Cleanup, Criterion, Duplicate, FileSpec, Logger, Naming};
use log::trace;
use bridge::start_bridge;
@ -150,8 +149,9 @@ pub fn init_logger() {
let settings = SETTINGS.get::<CmdLineSettings>();
let logger = if settings.log_to_file {
Logger::with_env_or_str("neovide")
.log_to_file()
Logger::try_with_env_or_str("neovide")
.expect("Could not init logger")
.log_to_file(FileSpec::default())
.rotate(
Criterion::Size(10_000_000),
Naming::Timestamps,
@ -159,7 +159,7 @@ pub fn init_logger() {
)
.duplicate_to_stderr(Duplicate::Error)
} else {
Logger::with_env_or_str("neovide = error")
Logger::try_with_env_or_str("neovide = error").expect("Cloud not init logger")
};
logger.start().expect("Could not start logger");

@ -204,12 +204,12 @@ impl CursorRenderer {
}
pub fn handle_event(&mut self, event: &Event<()>) {
match event {
Event::WindowEvent {
if let Event::WindowEvent {
event: WindowEvent::Focused(is_focused),
..
} => self.window_has_focus = *is_focused,
_ => {}
} = event
{
self.window_has_focus = *is_focused
}
}
@ -424,7 +424,7 @@ impl CursorRenderer {
path.line_to(self.corners[3].current_position);
path.close();
canvas.draw_path(&path, &paint);
canvas.draw_path(&path, paint);
path
}
@ -459,7 +459,7 @@ impl CursorRenderer {
// from the larger one. This can fail in which case we return a full "rectangle".
let path = op(&rectangle, &subtract, skia_safe::PathOp::Difference).unwrap_or(rectangle);
canvas.draw_path(&path, &paint);
canvas.draw_path(&path, paint);
path
}
}

@ -69,9 +69,6 @@ impl Settings {
pub fn set<T: Clone + Send + Sync + 'static>(&self, t: &T) {
let type_id: TypeId = TypeId::of::<T>();
let t: T = (*t).clone();
unsafe {
self.settings.force_unlock_write();
}
let mut write_lock = self.settings.write();
write_lock.insert(type_id, Box::new(t));
}
@ -143,7 +140,6 @@ impl Settings {
mod tests {
use async_trait::async_trait;
use nvim_rs::{Handler, Neovim};
use tokio;
use super::*;
use crate::{
@ -224,8 +220,8 @@ mod tests {
let vt2 = TypeId::of::<f32>();
let mut values = settings.settings.write();
values.insert(vt1, Box::new(v1.clone()));
values.insert(vt2, Box::new(v2.clone()));
values.insert(vt1, Box::new(v1));
values.insert(vt2, Box::new(v2));
unsafe {
settings.settings.force_unlock_write();

@ -199,10 +199,26 @@ impl GlutinWindowWrapper {
}
let new_size = window.inner_size();
// The size needs to be scaled, otherwise any flag or setting related
// to the geometry or window size will be ignored because of the boolean
// value of `resized_at_startup`
let scale_factor = window.scale_factor() as u32;
let new_size_scaled = PhysicalSize {
width: new_size.width / scale_factor,
height: new_size.height / scale_factor,
};
let settings = SETTINGS.get::<CmdLineSettings>();
// Resize at startup happens when window is maximized or when using tiling WM
// which already resized window.
let resized_at_startup = settings.maximized || is_already_resized(new_size);
let resized_at_startup = settings.maximized || is_already_resized(new_size_scaled);
log::trace!(
"Settings geometry {:?}",
PhysicalSize::from(settings.geometry)
);
log::trace!("Inner size: {:?}", new_size);
log::trace!("Inner size scaled: {:?}", new_size_scaled);
if self.saved_grid_size.is_none() && !resized_at_startup {
window.set_inner_size(
@ -418,5 +434,6 @@ pub fn create_window() {
}
fn is_already_resized(size: PhysicalSize<u32>) -> bool {
// TODO: Use a constant instead.
size != PhysicalSize::from((800, 600))
}

Loading…
Cancel
Save