summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Karapetsas <[email protected]>2013-12-31 08:19:27 -0800
committerStefano Karapetsas <[email protected]>2013-12-31 08:19:27 -0800
commitdfc74c8749852e4054d3c784f9adbec3de310a79 (patch)
tree6d812f8cc448394352e1a509475d6f022e3d2919
parentb7a57e21e92add2087d0b6ee5f4d93e2b3b468cd (diff)
parent92b8ddf6a4b42d818b5ba2095e2d8f084f777170 (diff)
downloadpluma-dfc74c8749852e4054d3c784f9adbec3de310a79.tar.bz2
pluma-dfc74c8749852e4054d3c784f9adbec3de310a79.tar.xz
Merge pull request #51 from infirit/1.6
Cherrypick usefull commits from master
-rw-r--r--README19
-rw-r--r--configure.ac6
-rw-r--r--help/C/pluma.xml16
-rw-r--r--plugins/checkupdate/Makefile.am6
-rw-r--r--plugins/filebrowser/pluma-file-browser-plugin.c1
-rw-r--r--plugins/filebrowser/pluma-file-browser-store.c2
-rw-r--r--plugins/filebrowser/pluma-file-browser-widget.c2
-rwxr-xr-xpluma/dialogs/pluma-search-dialog.c20
-rwxr-xr-xpluma/dialogs/pluma-search-dialog.h5
-rwxr-xr-xpluma/dialogs/pluma-search-dialog.ui18
-rw-r--r--pluma/pluma-commands-search.c99
-rw-r--r--pluma/pluma-document.h7
-rw-r--r--pluma/pluma-tab.c18
-rw-r--r--pluma/pluma-view.c18
-rw-r--r--po/POTFILES.in3
15 files changed, 205 insertions, 35 deletions
diff --git a/README b/README
index 89bed45a..1c23d4bf 100644
--- a/README
+++ b/README
@@ -66,19 +66,28 @@ enable python plugins support.
Simple install procedure:
- % gzip -cd mate-file-manager.tar.gz | tar xvf - # unpack the sources
- % cd mate-file-manager # change to the toplevel directory
- % ./autogen.sh # run the `configure' script
+ % gzip -cd mate-text-editor.tar.gz | tar xvf - # unpack the sources
+ % cd mate-text-editor # change to the toplevel directory
+ % ./autogen.sh # run the `configure' script
% make # build pluma
[ Become root if necessary ]
% make install # install pluma
+Running Tests
+==================
+Pluma has several test that can be run after compilation. Run them by issueing "make check". However there are a couple of requirements that need to be satified before they will pass.
+
+* You need the gsettings schemas installed for some tests to be able to run.
+* You need to mount sftp://localhost/ with gvfs-mount for one test to pass.
+
+If test fail and you have setup the above correctly then please file a bug report as described below.
+
How to report bugs
==================
Bugs should be reported to the MATE bug tracking system.
-(http://bugzilla.gnome.org, product pluma). You will need to create an
+(https://github.com/mate-desktop/pluma/issues). You will need to create an
account for yourself.
You can also report bugs using the MATE program bug-buddy.
@@ -108,7 +117,7 @@ In the bug report please include:
Patches
=======
-Patches should also be submitted to bugzilla.gnome.org. If the patch
+Patches should also be submitted to github.com/mate-desktop/pluma. If the patch
fixes an existing bug, add the patch as an attachment to that bug
report.
diff --git a/configure.ac b/configure.ac
index e9cecfad..c236de83 100644
--- a/configure.ac
+++ b/configure.ac
@@ -370,9 +370,9 @@ if test "x$have_python" != "xno"; then
PYTHON_EXTRA_LIBS=
else
PY_PREFIX=`$PYTHON -c 'import sys ; print sys.prefix'`
- PYTHON_LIB_LOC="-L$PY_EXEC_PREFIX/lib/python$PYTHON_VERSION/config"
+ PYTHON_LIB_LOC="-L$libdir/python$PYTHON_VERSION/config"
PYTHON_CFLAGS="-I$PY_PREFIX/include/python$PYTHON_VERSION"
- PYTHON_MAKEFILE="$PY_EXEC_PREFIX/lib/python$PYTHON_VERSION/config/Makefile"
+ PYTHON_MAKEFILE="$libdir/python$PYTHON_VERSION/config/Makefile"
PYTHON_BASEMODLIBS=`sed -n -e 's/^BASEMODLIBS=\(.*\)/\1/p' $PYTHON_MAKEFILE`
PYTHON_OTHER_LIBS=`sed -n -e 's/^LIBS=\(.*\)/\1/p' $PYTHON_MAKEFILE`
PYTHON_EXTRA_LIBS="$PYTHON_BASEMODLIBS $PYTHON_OTHER_LIBS"
@@ -588,7 +588,7 @@ it from:
http://pub.mate-desktop.org/release/1.${stable_version}/
-Or checkout the mate-${stable_version} branch of the pluma module from:
+Or checkout the 1.${stable_version} branch of the pluma module from:
git://github.com/mate-desktop/mate-text-editor.git
diff --git a/help/C/pluma.xml b/help/C/pluma.xml
index be9e063b..8cf61bb3 100644
--- a/help/C/pluma.xml
+++ b/help/C/pluma.xml
@@ -124,7 +124,7 @@
<revnumber>pluma Manual V2.0</revnumber>
<date>March 2002</date>
<revdescription>
- <para role="author">Sun MATE Documentation Team</para>
+ <para role="author">Sun GNOME Documentation Team</para>
<para role="publisher">MATE Documentation Project</para>
</revdescription>
</revision>
@@ -132,7 +132,7 @@
<revnumber>pluma Manual V2.1</revnumber>
<date>June 2002</date>
<revdescription>
- <para role="author">Sun MATE Documentation Team</para>
+ <para role="author">Sun GNOME Documentation Team</para>
<para role="publisher">MATE Documentation Project</para>
</revdescription>
</revision>
@@ -140,7 +140,7 @@
<revnumber>pluma Manual V2.2</revnumber>
<date>August 2002</date>
<revdescription>
- <para role="author">Sun MATE Documentation Team</para>
+ <para role="author">Sun GNOME Documentation Team</para>
<para role="publisher">MATE Documentation Project</para>
</revdescription>
</revision>
@@ -148,7 +148,7 @@
<revnumber>pluma Manual V2.3</revnumber>
<date>September 2002</date>
<revdescription>
- <para role="author">Sun MATE Documentation Team</para>
+ <para role="author">Sun GNOME Documentation Team</para>
<para role="publisher">MATE Documentation Project</para>
</revdescription>
</revision>
@@ -156,7 +156,7 @@
<revnumber>pluma Manual V2.4</revnumber>
<date>January 2003</date>
<revdescription>
- <para role="author">Sun MATE Documentation Team</para>
+ <para role="author">Sun GNOME Documentation Team</para>
<para role="publisher">MATE Documentation Project</para>
</revdescription>
</revision>
@@ -164,7 +164,7 @@
<revnumber>pluma Manual V2.5</revnumber>
<date>March 2003</date>
<revdescription>
- <para role="author">Sun MATE Documentation Team</para>
+ <para role="author">Sun GNOME Documentation Team</para>
<para role="publisher">MATE Documentation Project</para>
</revdescription>
</revision>
@@ -172,7 +172,7 @@
<revnumber>pluma Manual V2.6</revnumber>
<date>September 2003</date>
<revdescription>
- <para role="author">Sun MATE Documentation Team</para>
+ <para role="author">Sun GNOME Documentation Team</para>
<para role="publisher">MATE Documentation Project</para>
</revdescription>
</revision>
@@ -180,7 +180,7 @@
<revnumber>pluma Manual V2.7</revnumber>
<date>March 2004</date>
<revdescription>
- <para role="author">Sun MATE Documentation Team</para>
+ <para role="author">Sun GNOME Documentation Team</para>
<para role="publisher">MATE Documentation Project</para>
</revdescription>
</revision>
diff --git a/plugins/checkupdate/Makefile.am b/plugins/checkupdate/Makefile.am
index fe565398..38fd5bbc 100644
--- a/plugins/checkupdate/Makefile.am
+++ b/plugins/checkupdate/Makefile.am
@@ -31,10 +31,10 @@ gsettings_SCHEMAS = org.mate.pluma.plugins.checkupdate.gschema.xml
%.gschema.xml.in: %.gschema.xml.in.in Makefile
$(AM_V_GEN) $(SED) -e 's^\@GETTEXT_PACKAGE\@^$(GETTEXT_PACKAGE)^g' < $< > $@
-EXTRA_DIST = $(plugin_in_files) $(gsettings_SCHEMAS_in_in)
+EXTRA_DIST = $(plugin_in_files) $(gsettings_SCHEMAS).in.in
-CLEANFILES = $(plugin_DATA) $(gsettings_SCHEMAS_in) $(gsettings_SCHEMAS)
+CLEANFILES = $(plugin_DATA) $(gsettings_SCHEMAS).in $(gsettings_SCHEMAS)
-DISTCLEANFILES = $(plugin_DATA) $(gsettings_SCHEMAS_in) $(gsettings_SCHEMAS)
+DISTCLEANFILES = $(plugin_DATA) $(gsettings_SCHEMAS).in $(gsettings_SCHEMAS)
-include $(top_srcdir)/git.mk
diff --git a/plugins/filebrowser/pluma-file-browser-plugin.c b/plugins/filebrowser/pluma-file-browser-plugin.c
index bce64c69..69b1e185 100644
--- a/plugins/filebrowser/pluma-file-browser-plugin.c
+++ b/plugins/filebrowser/pluma-file-browser-plugin.c
@@ -306,6 +306,7 @@ on_confirm_trash_changed (GSettings *settings,
PlumaFileBrowserPluginData *data;
gboolean enable = FALSE;
+ data = (PlumaFileBrowserPluginData *)(user_data);
enable = g_settings_get_boolean (settings, key);
data->confirm_trash = enable;
diff --git a/plugins/filebrowser/pluma-file-browser-store.c b/plugins/filebrowser/pluma-file-browser-store.c
index 6f611105..ba45feff 100644
--- a/plugins/filebrowser/pluma-file-browser-store.c
+++ b/plugins/filebrowser/pluma-file-browser-store.c
@@ -2480,6 +2480,8 @@ set_virtual_root_from_node (PlumaFileBrowserStore * model,
GSList *copy;
GtkTreePath *empty = NULL;
+ g_assert (node != NULL);
+
prev = node;
next = prev->parent;
diff --git a/plugins/filebrowser/pluma-file-browser-widget.c b/plugins/filebrowser/pluma-file-browser-widget.c
index f2c54fe9..22c3c3b0 100644
--- a/plugins/filebrowser/pluma-file-browser-widget.c
+++ b/plugins/filebrowser/pluma-file-browser-widget.c
@@ -1640,6 +1640,8 @@ jump_to_location (PlumaFileBrowserWidget * obj, GList * item,
obj->priv->changing_location = TRUE;
+ g_assert (obj->priv->current_location != NULL);
+
loc = (Location *) (obj->priv->current_location->data);
/* Set the new root + virtual root */
diff --git a/pluma/dialogs/pluma-search-dialog.c b/pluma/dialogs/pluma-search-dialog.c
index 7db2a2bc..7e199225 100755
--- a/pluma/dialogs/pluma-search-dialog.c
+++ b/pluma/dialogs/pluma-search-dialog.c
@@ -70,6 +70,7 @@ struct _PlumaSearchDialogPrivate
GtkWidget *entire_word_checkbutton;
GtkWidget *backwards_checkbutton;
GtkWidget *wrap_around_checkbutton;
+ GtkWidget *parse_escapes_checkbutton;
GtkWidget *find_button;
GtkWidget *replace_button;
GtkWidget *replace_all_button;
@@ -357,6 +358,7 @@ pluma_search_dialog_init (PlumaSearchDialog *dlg)
"entire_word_checkbutton", &dlg->priv->entire_word_checkbutton,
"search_backwards_checkbutton", &dlg->priv->backwards_checkbutton,
"wrap_around_checkbutton", &dlg->priv->wrap_around_checkbutton,
+ "parse_escapes_checkbutton", &dlg->priv->parse_escapes_checkbutton,
NULL);
g_free (file);
@@ -632,3 +634,21 @@ pluma_search_dialog_get_wrap_around (PlumaSearchDialog *dialog)
return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->priv->wrap_around_checkbutton));
}
+
+void
+pluma_search_dialog_set_parse_escapes (PlumaSearchDialog *dialog,
+ gboolean parse_escapes)
+{
+ g_return_if_fail (PLUMA_IS_SEARCH_DIALOG (dialog));
+
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->priv->parse_escapes_checkbutton),
+ parse_escapes);
+}
+
+gboolean
+pluma_search_dialog_get_parse_escapes (PlumaSearchDialog *dialog)
+{
+ g_return_val_if_fail (PLUMA_IS_SEARCH_DIALOG (dialog), FALSE);
+
+ return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->priv->parse_escapes_checkbutton));
+}
diff --git a/pluma/dialogs/pluma-search-dialog.h b/pluma/dialogs/pluma-search-dialog.h
index 967f6a9f..fb92efba 100755
--- a/pluma/dialogs/pluma-search-dialog.h
+++ b/pluma/dialogs/pluma-search-dialog.h
@@ -123,6 +123,11 @@ void pluma_search_dialog_set_wrap_around (PlumaSearchDialog *dialog,
gboolean wrap_around);
gboolean pluma_search_dialog_get_wrap_around (PlumaSearchDialog *dialog);
+
+void pluma_search_dialog_set_parse_escapes (PlumaSearchDialog *dialog,
+ gboolean parse_escapes);
+gboolean pluma_search_dialog_get_parse_escapes (PlumaSearchDialog *dialog);
+
G_END_DECLS
#endif /* __PLUMA_SEARCH_DIALOG_H__ */
diff --git a/pluma/dialogs/pluma-search-dialog.ui b/pluma/dialogs/pluma-search-dialog.ui
index 35b6c390..4f137b19 100755
--- a/pluma/dialogs/pluma-search-dialog.ui
+++ b/pluma/dialogs/pluma-search-dialog.ui
@@ -229,6 +229,24 @@
<property name="fill">False</property>
</packing>
</child>
+ <child>
+ <object class="GtkCheckButton" id="parse_escapes_checkbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Parse escape sequences (e.g. \n)</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">True</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="padding">0</property>
diff --git a/pluma/pluma-commands-search.c b/pluma/pluma-commands-search.c
index ee1b5129..d6a75ef2 100644
--- a/pluma/pluma-commands-search.c
+++ b/pluma/pluma-commands-search.c
@@ -229,6 +229,7 @@ do_find (PlumaSearchDialog *dialog,
gboolean entire_word;
gboolean wrap_around;
gboolean search_backwards;
+ gboolean parse_escapes;
guint flags = 0;
guint old_flags = 0;
gboolean found;
@@ -241,12 +242,17 @@ do_find (PlumaSearchDialog *dialog,
doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (active_view)));
- entry_text = pluma_search_dialog_get_search_text (dialog);
-
match_case = pluma_search_dialog_get_match_case (dialog);
entire_word = pluma_search_dialog_get_entire_word (dialog);
search_backwards = pluma_search_dialog_get_backwards (dialog);
wrap_around = pluma_search_dialog_get_wrap_around (dialog);
+ parse_escapes = pluma_search_dialog_get_parse_escapes (dialog);
+
+ if (!parse_escapes) {
+ entry_text = pluma_utils_escape_search_text (pluma_search_dialog_get_search_text (dialog));
+ } else {
+ entry_text = pluma_search_dialog_get_search_text (dialog);
+ }
PLUMA_SEARCH_SET_CASE_SENSITIVE (flags, match_case);
PLUMA_SEARCH_SET_ENTIRE_WORD (flags, entire_word);
@@ -268,8 +274,13 @@ do_find (PlumaSearchDialog *dialog,
if (found)
text_found (window, 0);
- else
- text_not_found (window, entry_text);
+ else {
+ if (!parse_escapes) {
+ text_not_found (window, pluma_utils_unescape_search_text (entry_text));
+ } else {
+ text_not_found (window, entry_text);
+ }
+ }
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
PLUMA_SEARCH_DIALOG_REPLACE_RESPONSE,
@@ -330,17 +341,27 @@ do_replace (PlumaSearchDialog *dialog,
gchar *unescaped_replace_text;
gchar *selected_text = NULL;
gboolean match_case;
+ gboolean parse_escapes;
doc = pluma_window_get_active_document (window);
if (doc == NULL)
return;
- search_entry_text = pluma_search_dialog_get_search_text (dialog);
+ parse_escapes = pluma_search_dialog_get_parse_escapes (dialog);
+ if (!parse_escapes) {
+ search_entry_text = pluma_utils_escape_search_text (pluma_search_dialog_get_search_text (dialog));
+ } else {
+ search_entry_text = pluma_search_dialog_get_search_text (dialog);
+ }
g_return_if_fail ((search_entry_text) != NULL);
g_return_if_fail ((*search_entry_text) != '\0');
/* replace text may be "", we just delete */
- replace_entry_text = pluma_search_dialog_get_replace_text (dialog);
+ if (!parse_escapes) {
+ replace_entry_text = pluma_utils_escape_search_text (pluma_search_dialog_get_replace_text (dialog));
+ } else {
+ replace_entry_text = pluma_search_dialog_get_replace_text (dialog);
+ }
g_return_if_fail ((replace_entry_text) != NULL);
unescaped_search_text = pluma_utils_unescape_search_text (search_entry_text);
@@ -385,6 +406,7 @@ do_replace_all (PlumaSearchDialog *dialog,
const gchar *replace_entry_text;
gboolean match_case;
gboolean entire_word;
+ gboolean parse_escapes;
guint flags = 0;
gint count;
@@ -394,12 +416,21 @@ do_replace_all (PlumaSearchDialog *dialog,
doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (active_view)));
- search_entry_text = pluma_search_dialog_get_search_text (dialog);
+ parse_escapes = pluma_search_dialog_get_parse_escapes (dialog);
+ if (!parse_escapes) {
+ search_entry_text = pluma_utils_escape_search_text(pluma_search_dialog_get_search_text (dialog));
+ } else {
+ search_entry_text = pluma_search_dialog_get_search_text (dialog);
+ }
g_return_if_fail ((search_entry_text) != NULL);
g_return_if_fail ((*search_entry_text) != '\0');
/* replace text may be "", we just delete all occurrencies */
- replace_entry_text = pluma_search_dialog_get_replace_text (dialog);
+ if (!parse_escapes) {
+ replace_entry_text = pluma_utils_escape_search_text (pluma_search_dialog_get_replace_text (dialog));
+ } else {
+ replace_entry_text = pluma_search_dialog_get_replace_text (dialog);
+ }
g_return_if_fail ((replace_entry_text) != NULL);
match_case = pluma_search_dialog_get_match_case (dialog);
@@ -419,7 +450,11 @@ do_replace_all (PlumaSearchDialog *dialog,
}
else
{
- text_not_found (window, search_entry_text);
+ if (!parse_escapes) {
+ text_not_found (window, pluma_utils_unescape_search_text (search_entry_text));
+ } else {
+ text_not_found (window, search_entry_text);
+ }
}
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
@@ -511,7 +546,9 @@ _pluma_cmd_search_find (GtkAction *action,
GtkWidget *search_dialog;
PlumaDocument *doc;
gboolean selection_exists;
+ gboolean parse_escapes;
gchar *find_text = NULL;
+ const gchar *search_text = NULL;
gint sel_len;
pluma_debug (DEBUG_COMMANDS);
@@ -543,8 +580,25 @@ _pluma_cmd_search_find (GtkAction *action,
if (selection_exists && find_text != NULL && sel_len < 80)
{
- pluma_search_dialog_set_search_text (PLUMA_SEARCH_DIALOG (search_dialog),
- find_text);
+ /*
+ * Special case: if the currently selected text
+ * is the same as the unescaped search text and
+ * escape sequence parsing is activated, use the
+ * same old search text. (Without this, if you e.g.
+ * search for '\n' in escaped mode and then open
+ * the search dialog again, you'll get an unprintable
+ * single-character literal '\n' in the "search for"
+ * box).
+ */
+ parse_escapes = pluma_search_dialog_get_parse_escapes (PLUMA_SEARCH_DIALOG (search_dialog));
+ search_text = pluma_search_dialog_get_search_text (PLUMA_SEARCH_DIALOG (search_dialog));
+ if (!(search_text != NULL
+ && !strcmp(pluma_utils_unescape_search_text(search_text), find_text)
+ && parse_escapes)) {
+ /* General case */
+ pluma_search_dialog_set_search_text (PLUMA_SEARCH_DIALOG (search_dialog),
+ find_text);
+ }
g_free (find_text);
}
else
@@ -566,7 +620,9 @@ _pluma_cmd_search_replace (GtkAction *action,
GtkWidget *replace_dialog;
PlumaDocument *doc;
gboolean selection_exists;
+ gboolean parse_escapes;
gchar *find_text = NULL;
+ const gchar *search_text = NULL;
gint sel_len;
pluma_debug (DEBUG_COMMANDS);
@@ -598,8 +654,25 @@ _pluma_cmd_search_replace (GtkAction *action,
if (selection_exists && find_text != NULL && sel_len < 80)
{
- pluma_search_dialog_set_search_text (PLUMA_SEARCH_DIALOG (replace_dialog),
- find_text);
+ /*
+ * Special case: if the currently selected text
+ * is the same as the unescaped search text and
+ * escape sequence parsing is activated, use the
+ * same old search text. (Without this, if you e.g.
+ * search for '\n' in escaped mode and then open
+ * the search dialog again, you'll get an unprintable
+ * single-character literal '\n' in the "search for"
+ * box).
+ */
+ parse_escapes = pluma_search_dialog_get_parse_escapes (PLUMA_SEARCH_DIALOG (replace_dialog));
+ search_text = pluma_search_dialog_get_search_text (PLUMA_SEARCH_DIALOG (replace_dialog));
+ if (!(search_text != NULL
+ && !strcmp(pluma_utils_unescape_search_text(search_text), find_text)
+ && parse_escapes)) {
+ /* General case */
+ pluma_search_dialog_set_search_text (PLUMA_SEARCH_DIALOG (replace_dialog),
+ find_text);
+ }
g_free (find_text);
}
else
diff --git a/pluma/pluma-document.h b/pluma/pluma-document.h
index a8cf5020..099aaae1 100644
--- a/pluma/pluma-document.h
+++ b/pluma/pluma-document.h
@@ -78,7 +78,8 @@ typedef enum
{
PLUMA_SEARCH_DONT_SET_FLAGS = 1 << 0,
PLUMA_SEARCH_ENTIRE_WORD = 1 << 1,
- PLUMA_SEARCH_CASE_SENSITIVE = 1 << 2
+ PLUMA_SEARCH_CASE_SENSITIVE = 1 << 2,
+ PLUMA_SEARCH_PARSE_ESCAPES = 1 << 3
} PlumaSearchFlags;
@@ -322,6 +323,10 @@ void _pluma_document_search_region (PlumaDocument *doc,
#define PLUMA_SEARCH_SET_CASE_SENSITIVE(sflags,state) ((state == TRUE) ? \
(sflags |= PLUMA_SEARCH_CASE_SENSITIVE) : (sflags &= ~PLUMA_SEARCH_CASE_SENSITIVE))
+#define PLUMA_SEARCH_IS_PARSE_ESCAPES(sflags) ((sflags & PLUMA_SEARCH_PARSE_ESCAPES) != 0)
+#define PLUMA_SEARCH_SET_PARSE_ESCAPES(sflags,state) ((state == TRUE) ? \
+(sflags |= PLUMA_SEARCH_PARSE_ESCAPES) : (sflags &= ~PLUMA_SEARCH_PARSE_ESCAPES))
+
typedef GMountOperation *(*PlumaMountOperationFactory)(PlumaDocument *doc,
gpointer userdata);
diff --git a/pluma/pluma-tab.c b/pluma/pluma-tab.c
index e795b83a..46d9681b 100644
--- a/pluma/pluma-tab.c
+++ b/pluma/pluma-tab.c
@@ -2238,6 +2238,8 @@ get_print_settings (PlumaTab *tab)
{
gpointer data;
PlumaDocument *doc;
+ GtkPrintSettings *settings;
+ gchar *uri, *name;
doc = pluma_tab_get_document (tab);
@@ -2246,12 +2248,24 @@ get_print_settings (PlumaTab *tab)
if (data == NULL)
{
- return _pluma_app_get_default_print_settings (pluma_app_get_default());
+ settings = _pluma_app_get_default_print_settings (pluma_app_get_default());
}
else
{
- return gtk_print_settings_copy (GTK_PRINT_SETTINGS (data));
+ settings = gtk_print_settings_copy (GTK_PRINT_SETTINGS (data));
}
+
+ name = pluma_document_get_short_name_for_display (doc);
+ uri = g_strconcat ("file://",
+ g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS),
+ "/", name, ".pdf", NULL);
+
+ gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_OUTPUT_URI, uri);
+
+ g_free (uri);
+ g_free (name);
+
+ return settings;
}
/* FIXME: show the message area only if the operation will be "long" */
diff --git a/pluma/pluma-view.c b/pluma/pluma-view.c
index cbd2299c..63191279 100644
--- a/pluma/pluma-view.c
+++ b/pluma/pluma-view.c
@@ -1165,6 +1165,14 @@ match_case_menu_item_toggled (GtkCheckMenuItem *checkmenuitem,
gtk_check_menu_item_get_active (checkmenuitem));
}
+static void
+parse_escapes_menu_item_toggled (GtkCheckMenuItem *checkmenuitem,
+ PlumaView *view)
+{
+ PLUMA_SEARCH_SET_PARSE_ESCAPES (view->priv->search_flags,
+ gtk_check_menu_item_get_active (checkmenuitem));
+}
+
static gboolean
real_search_enable_popdown (gpointer data)
{
@@ -1243,6 +1251,16 @@ search_entry_populate_popup (GtkEntry *entry,
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
PLUMA_SEARCH_IS_CASE_SENSITIVE (view->priv->search_flags));
gtk_widget_show (menu_item);
+
+ /* create "Parse escapes" menu item. */
+ menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Parse escape sequences (e.g. \n)"));
+ g_signal_connect (G_OBJECT (menu_item), "toggled",
+ G_CALLBACK (parse_escapes_menu_item_toggled),
+ view);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
+ PLUMA_SEARCH_IS_PARSE_ESCAPES (view->priv->search_flags));
+ gtk_widget_show (menu_item);
}
static void
diff --git a/po/POTFILES.in b/po/POTFILES.in
index b9cb1c07..1e50b4b4 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -48,6 +48,7 @@ plugins/changecase/changecase.pluma-plugin.desktop.in
plugins/changecase/pluma-changecase-plugin.c
plugins/checkupdate/checkupdate.pluma-plugin.desktop.in
plugins/checkupdate/pluma-check-update-plugin.c
+plugins/checkupdate/org.mate.pluma.plugins.checkupdate.gschema.xml.in.in
plugins/docinfo/docinfo.pluma-plugin.desktop.in
[type: gettext/glade]plugins/docinfo/docinfo.ui
plugins/docinfo/pluma-docinfo-plugin.c
@@ -63,6 +64,8 @@ plugins/externaltools/data/build.desktop.in
plugins/externaltools/data/open-terminal-here.desktop.in
plugins/externaltools/data/remove-trailing-spaces.desktop.in
plugins/externaltools/data/run-command.desktop.in
+plugins/externaltools/data/search-recursive.desktop.in
+plugins/externaltools/data/switch-c.desktop.in
plugins/filebrowser/filebrowser.pluma-plugin.desktop.in
plugins/filebrowser/org.mate.pluma.plugins.filebrowser.gschema.xml.in.in
plugins/filebrowser/pluma-file-bookmarks-store.c