Led is building on stable rust! Woo hoo!

This commit is contained in:
Nathan Vegdahl 2015-07-06 19:20:25 -07:00
parent 6823706d69
commit ec16e8ac6e
6 changed files with 22 additions and 16 deletions

View File

@ -20,6 +20,8 @@ git = "https://github.com/cessen/ropey.git"
[dependencies] [dependencies]
time = "0.1.30" time = "0.1.30"
rustc-serialize = "0.3.0" rustc-serialize = "0.3.0"
unicode-segmentation = "0.1.*"
unicode-width = "0.1.*"
docopt = "0.6.*" docopt = "0.6.*"
encoding = "*" encoding = "*"
rustbox = "0.6.3" rustbox = "0.6.3"

View File

@ -105,7 +105,7 @@ impl Buffer {
let cpos = self.text.grapheme_index_to_char_index(pos); let cpos = self.text.grapheme_index_to_char_index(pos);
self._insert_text(text, cpos); self._insert_text(text, cpos);
self.undo_stack.push(InsertText(String::from_str(text), cpos)); self.undo_stack.push(InsertText(text.to_string(), cpos));
} }
fn _insert_text(&mut self, text: &str, pos: usize) { fn _insert_text(&mut self, text: &str, pos: usize) {

View File

@ -57,11 +57,11 @@ impl CursorSet {
} }
pub fn iter<'a>(&'a self) -> Iter<'a, Cursor> { pub fn iter<'a>(&'a self) -> Iter<'a, Cursor> {
self.cursors.as_slice().iter() (&self.cursors[..]).iter()
} }
pub fn iter_mut<'a>(&'a mut self) -> IterMut<'a, Cursor> { pub fn iter_mut<'a>(&'a mut self) -> IterMut<'a, Cursor> {
self.cursors.as_mut_slice().iter_mut() (&mut self.cursors[..]).iter_mut()
} }
pub fn make_consistent(&mut self) { pub fn make_consistent(&mut self) {

View File

@ -1,13 +1,15 @@
#![feature(core)] //#![feature(core)]
#![feature(collections)] //#![feature(collections)]
#![feature(test)] //#![feature(test)]
#![feature(std_misc)] //#![feature(std_misc)]
extern crate time; extern crate time;
extern crate test; //extern crate test;
extern crate rustbox; extern crate rustbox;
extern crate docopt; extern crate docopt;
extern crate rustc_serialize; extern crate rustc_serialize;
extern crate unicode_segmentation;
extern crate unicode_width;
extern crate encoding; extern crate encoding;
extern crate ropey; extern crate ropey;
//extern crate freetype; //extern crate freetype;

View File

@ -2,6 +2,7 @@
//! Misc helpful utility functions for TextBuffer related stuff. //! Misc helpful utility functions for TextBuffer related stuff.
use std::iter::repeat; use std::iter::repeat;
use unicode_segmentation::UnicodeSegmentation;
pub fn is_line_ending(text: &str) -> bool { pub fn is_line_ending(text: &str) -> bool {
@ -53,7 +54,7 @@ pub fn is_whitespace(text: &str) -> bool {
pub fn line_ending_count(text: &str) -> usize { pub fn line_ending_count(text: &str) -> usize {
let mut count = 0; let mut count = 0;
for g in text.graphemes(true) { for g in UnicodeSegmentation::graphemes(text, true) {
if is_line_ending(g) { if is_line_ending(g) {
count += 1; count += 1;
} }
@ -71,7 +72,7 @@ pub fn char_count(text: &str) -> usize {
pub fn grapheme_count(text: &str) -> usize { pub fn grapheme_count(text: &str) -> usize {
let mut count = 0; let mut count = 0;
for _ in text.graphemes(true) { for _ in UnicodeSegmentation::graphemes(text, true) {
count += 1; count += 1;
} }
return count; return count;
@ -79,7 +80,7 @@ pub fn grapheme_count(text: &str) -> usize {
pub fn grapheme_count_is_less_than(text: &str, n: usize) -> bool { pub fn grapheme_count_is_less_than(text: &str, n: usize) -> bool {
let mut count = 0; let mut count = 0;
for _ in text.graphemes(true) { for _ in UnicodeSegmentation::graphemes(text, true) {
count += 1; count += 1;
if count >= n { if count >= n {
return false; return false;
@ -93,7 +94,7 @@ pub fn grapheme_and_line_ending_count(text: &str) -> (usize, usize) {
let mut grapheme_count = 0; let mut grapheme_count = 0;
let mut line_ending_count = 0; let mut line_ending_count = 0;
for g in text.graphemes(true) { for g in UnicodeSegmentation::graphemes(text, true) {
grapheme_count += 1; grapheme_count += 1;
if is_line_ending(g) { if is_line_ending(g) {
line_ending_count += 1; line_ending_count += 1;
@ -123,7 +124,7 @@ pub fn char_pos_to_byte_pos(text: &str, pos: usize) -> usize {
pub fn grapheme_pos_to_byte_pos(text: &str, pos: usize) -> usize { pub fn grapheme_pos_to_byte_pos(text: &str, pos: usize) -> usize {
let mut i: usize = 0; let mut i: usize = 0;
for (offset, _) in text.grapheme_indices(true) { for (offset, _) in UnicodeSegmentation::grapheme_indices(text, true) {
if i == pos { if i == pos {
return offset; return offset;
} }
@ -162,7 +163,7 @@ pub fn insert_text_at_grapheme_index(s: &mut String, text: &str, pos: usize) {
// Copy new bytes in // Copy new bytes in
// TODO: use copy_memory() // TODO: use copy_memory()
let mut i = byte_pos; let mut i = byte_pos;
for g in text.graphemes(true) { for g in UnicodeSegmentation::graphemes(text, true) {
for b in g.bytes() { for b in g.bytes() {
byte_vec[i] = b; byte_vec[i] = b;
@ -216,7 +217,7 @@ pub fn split_string_at_grapheme_index(s1: &mut String, pos: usize) -> String {
let byte_vec_1 = unsafe { s1.as_mut_vec() }; let byte_vec_1 = unsafe { s1.as_mut_vec() };
let byte_vec_2 = unsafe { s2.as_mut_vec() }; let byte_vec_2 = unsafe { s2.as_mut_vec() };
byte_vec_2.push_all(&byte_vec_1[byte_pos..]); byte_vec_2.extend((&byte_vec_1[byte_pos..]).iter().cloned());
byte_vec_1.truncate(byte_pos); byte_vec_1.truncate(byte_pos);
} }

View File

@ -1,5 +1,6 @@
use std::cmp::max; use std::cmp::max;
use unicode_width::UnicodeWidthStr;
use string_utils::{is_line_ending, is_whitespace}; use string_utils::{is_line_ending, is_whitespace};
use formatter::{LineFormatter, RoundingBehavior}; use formatter::{LineFormatter, RoundingBehavior};
@ -290,7 +291,7 @@ fn grapheme_vis_width_at_vis_pos(g: &str, pos: usize, tab_width: usize) -> usize
return 1; return 1;
} }
else { else {
return g.width(true); return UnicodeWidthStr::width(g);
} }
} }
} }