@@ -786,24 +786,27 @@ fn replace(cx: &mut Context) {
787fn switch_case(cx: &mut Context) {
787fn switch_case(cx: &mut Context) {
788 let (view, doc) = current!(cx.editor);
788 let (view, doc) = current!(cx.editor);
789− let transaction =
789+ let selection = doc
792+ .min_width_1(doc.text().slice(..));
790− Transaction::change_by_selection(doc.text(), doc.selection(view.id), |range| {
793+ let transaction = Transaction::change_by_selection(doc.text(), &selection, |range| {
791− let text: Tendril = range
794+ let text: Tendril = range
792− .fragment(doc.text().slice(..))
795+ .fragment(doc.text().slice(..))
793− .chars()
796+ .chars()
794− .flat_map(|ch| {
797+ .flat_map(|ch| {
795− if ch.is_lowercase() {
798+ if ch.is_lowercase() {
796− ch.to_uppercase().collect()
799+ ch.to_uppercase().collect()
797− } else if ch.is_uppercase() {
800+ } else if ch.is_uppercase() {
798− ch.to_lowercase().collect()
801+ ch.to_lowercase().collect()
799− } else {
802+ } else {
800− vec![ch]
803+ vec![ch]
803− .collect();
806+ .collect();
805− (range.from(), range.to() + 1, Some(text))
808+ (range.from(), range.to(), Some(text))
808 doc.apply(&transaction, view.id);
811 doc.apply(&transaction, view.id);
809 doc.append_changes_to_history(view.id);
812 doc.append_changes_to_history(view.id);
@@ -811,12 +814,15 @@ fn switch_case(cx: &mut Context) {
812fn switch_to_uppercase(cx: &mut Context) {
815fn switch_to_uppercase(cx: &mut Context) {
813 let (view, doc) = current!(cx.editor);
816 let (view, doc) = current!(cx.editor);
814− let transaction =
817+ let selection = doc
820+ .min_width_1(doc.text().slice(..));
815− Transaction::change_by_selection(doc.text(), doc.selection(view.id), |range| {
821+ let transaction = Transaction::change_by_selection(doc.text(), &selection, |range| {
816− let text: Tendril = range.fragment(doc.text().slice(..)).to_uppercase().into();
822+ let text: Tendril = range.fragment(doc.text().slice(..)).to_uppercase().into();
818− (range.from(), range.to() + 1, Some(text))
824+ (range.from(), range.to(), Some(text))
821 doc.apply(&transaction, view.id);
827 doc.apply(&transaction, view.id);
822 doc.append_changes_to_history(view.id);
828 doc.append_changes_to_history(view.id);
@@ -824,12 +830,15 @@ fn switch_to_uppercase(cx: &mut Context) {
825fn switch_to_lowercase(cx: &mut Context) {
831fn switch_to_lowercase(cx: &mut Context) {
826 let (view, doc) = current!(cx.editor);
832 let (view, doc) = current!(cx.editor);
827− let transaction =
833+ let selection = doc
836+ .min_width_1(doc.text().slice(..));
828− Transaction::change_by_selection(doc.text(), doc.selection(view.id), |range| {
837+ let transaction = Transaction::change_by_selection(doc.text(), &selection, |range| {
829− let text: Tendril = range.fragment(doc.text().slice(..)).to_lowercase().into();
838+ let text: Tendril = range.fragment(doc.text().slice(..)).to_lowercase().into();
831− (range.from(), range.to() + 1, Some(text))
840+ (range.from(), range.to(), Some(text))
834 doc.apply(&transaction, view.id);
843 doc.apply(&transaction, view.id);
835 doc.append_changes_to_history(view.id);
844 doc.append_changes_to_history(view.id);