@ -389,8 +389,13 @@ Gsv::DrawSpacesFlags Source::View::parse_show_whitespace_characters(const std::s
bool Source : : View : : save ( ) {
bool Source : : View : : save ( ) {
if ( file_path . empty ( ) | | ! get_buffer ( ) - > get_modified ( ) )
if ( file_path . empty ( ) | | ! get_buffer ( ) - > get_modified ( ) )
return false ;
return false ;
if ( Config : : get ( ) . source . cleanup_whitespace_characters )
cleanup_whitespace_characters ( ) ;
get_buffer ( ) - > begin_user_action ( ) ;
if ( Config : : get ( ) . source . remove_trailing_whitespace_characters_on_save )
remove_trailing_whitespace_characters ( ) ;
if ( Config : : get ( ) . source . add_missing_newline_at_end_of_file_on_save )
add_missing_newline_at_end_of_file ( ) ;
if ( format_style & & file_path . filename ( ) ! = " package.json " ) {
if ( format_style & & file_path . filename ( ) ! = " package.json " ) {
if ( Config : : get ( ) . source . format_style_on_save )
if ( Config : : get ( ) . source . format_style_on_save )
@ -400,6 +405,8 @@ bool Source::View::save() {
hide_tooltips ( ) ;
hide_tooltips ( ) ;
}
}
get_buffer ( ) - > end_user_action ( ) ;
try {
try {
auto io_channel = Glib : : IOChannel : : create_from_file ( file_path . string ( ) , " w " ) ;
auto io_channel = Glib : : IOChannel : : create_from_file ( file_path . string ( ) , " w " ) ;
auto start_iter = get_buffer ( ) - > begin ( ) ;
auto start_iter = get_buffer ( ) - > begin ( ) ;
@ -2677,7 +2684,7 @@ bool Source::View::on_key_press_event_basic(GdkEventKey *event) {
// Indent as in current or next line
// Indent as in current or next line
if ( ( event - > keyval = = GDK_KEY_Return | | event - > keyval = = GDK_KEY_KP_Enter ) & & ! get_buffer ( ) - > get_has_selection ( ) & & ! iter . starts_line ( ) ) {
if ( ( event - > keyval = = GDK_KEY_Return | | event - > keyval = = GDK_KEY_KP_Enter ) & & ! get_buffer ( ) - > get_has_selection ( ) & & ! iter . starts_line ( ) ) {
cleanup _whitespace_characters( iter ) ;
remove _whitespace_characters( iter ) ;
iter = get_buffer ( ) - > get_insert ( ) - > get_iter ( ) ;
iter = get_buffer ( ) - > get_insert ( ) - > get_iter ( ) ;
auto condition_iter = iter ;
auto condition_iter = iter ;
@ -2882,7 +2889,7 @@ bool Source::View::on_key_press_event_bracket_language(GdkEventKey *event) {
// Add * at start of line in comment blocks
// Add * at start of line in comment blocks
if ( event - > keyval = = GDK_KEY_Return | | event - > keyval = = GDK_KEY_KP_Enter ) {
if ( event - > keyval = = GDK_KEY_Return | | event - > keyval = = GDK_KEY_KP_Enter ) {
if ( ! iter . starts_line ( ) & & ( ! string_tag | | ( ! iter . has_tag ( string_tag ) & & ! iter . ends_tag ( string_tag ) ) ) ) {
if ( ! iter . starts_line ( ) & & ( ! string_tag | | ( ! iter . has_tag ( string_tag ) & & ! iter . ends_tag ( string_tag ) ) ) ) {
cleanup _whitespace_characters( iter ) ;
remove _whitespace_characters( iter ) ;
iter = get_buffer ( ) - > get_insert ( ) - > get_iter ( ) ;
iter = get_buffer ( ) - > get_insert ( ) - > get_iter ( ) ;
auto start_iter = get_tabs_end_iter ( iter . get_line ( ) ) ;
auto start_iter = get_tabs_end_iter ( iter . get_line ( ) ) ;
@ -2911,7 +2918,7 @@ bool Source::View::on_key_press_event_bracket_language(GdkEventKey *event) {
// Indent depending on if/else/etc and brackets
// Indent depending on if/else/etc and brackets
if ( ( event - > keyval = = GDK_KEY_Return | | event - > keyval = = GDK_KEY_KP_Enter ) & & ! iter . starts_line ( ) ) {
if ( ( event - > keyval = = GDK_KEY_Return | | event - > keyval = = GDK_KEY_KP_Enter ) & & ! iter . starts_line ( ) ) {
cleanup _whitespace_characters( iter ) ;
remove _whitespace_characters( iter ) ;
iter = get_buffer ( ) - > get_insert ( ) - > get_iter ( ) ;
iter = get_buffer ( ) - > get_insert ( ) - > get_iter ( ) ;
auto previous_iter = iter ;
auto previous_iter = iter ;