Branch: refs/heads/master
Author: Matthew Brush <mbrush(a)codebrainz.ca>
Committer: Frank Lanitz <frank(a)frank.uvena.de>
Date: Sun, 13 Nov 2016 17:23:12 UTC
Commit: 394a4647bf6a640edcb25464370b02c055865055
https://github.com/geany/geany-plugins/commit/394a4647bf6a640edcb25464370b0…
Log Message:
-----------
Markdown: Fix relative paths (#501)
Stop using a phony base URI and create one from the current filename,
with various fallbacks in case the file isn't saved yet or URI encoding
fails.
Closes #500
Modified Paths:
--------------
markdown/src/viewer.c
Modified: markdown/src/viewer.c
30 lines changed, 29 insertions(+), 1 deletions(-)
===================================================================
@@ -23,6 +23,7 @@
#include <string.h>
#include <gtk/gtk.h>
#include <webkit/webkitwebview.h>
+#include <geanyplugin.h>
#ifndef FULL_PRICE
# include <mkdio.h>
#else
@@ -356,7 +357,33 @@ markdown_viewer_update_view(MarkdownViewer *self)
push_scroll_pos(self);
if (html) {
- static const gchar *base_uri = "file://.";
+ gchar *base_path;
+ gchar *base_uri; /* A file URI not a path URI; last component is stripped */
+ GError *error = NULL;
+ GeanyDocument *doc = document_get_current();
+
+ /* If the current document has a known path (ie. is saved), use that,
+ * substituting the file's basename for `index.html`. */
+ if (DOC_VALID(doc) && doc->real_path != NULL) {
+ gchar *base_dir = g_path_get_dirname(doc->real_path);
+ base_path = g_build_filename(base_dir, "index.html", NULL);
+ g_free(base_dir);
+ }
+ /* Otherwise assume use a file `index.html` in the current working directory. */
+ else {
+ gchar *cwd = g_get_current_dir();
+ base_path = g_build_filename(cwd, "index.html", NULL);
+ g_free(cwd);
+ }
+
+ base_uri = g_filename_to_uri(base_path, NULL, &error);
+ if (base_uri == NULL) {
+ g_warning("failed to encode path '%s' as URI: %s", base_path, error->message);
+ g_error_free(error);
+ base_uri = g_strdup("file://./index.html");
+ g_debug("using phony base URI '%s', broken relative paths are likely", base_uri);
+ }
+ g_free(base_path);
/* Connect a signal handler (only needed once) to restore the scroll
* position once the webview is reloaded. */
@@ -369,6 +396,7 @@ markdown_viewer_update_view(MarkdownViewer *self)
webkit_web_view_load_string(WEBKIT_WEB_VIEW(self), html, "text/html",
self->priv->enc, base_uri);
+ g_free(base_uri);
g_free(html);
}
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
Branch: refs/heads/master
Author: Frank Lanitz <frank(a)frank.uvena.de>
Committer: Frank Lanitz <frank(a)frank.uvena.de>
Date: Sun, 13 Nov 2016 11:55:09 UTC
Commit: 838a5def5248fd82bcc625992c4af37292bdbe22
https://github.com/geany/geany-plugins/commit/838a5def5248fd82bcc625992c4af…
Log Message:
-----------
Remove wrong double # from NEWS
Modified Paths:
--------------
NEWS
Modified: NEWS
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -25,7 +25,7 @@ Geany Plugins 1.29 (2016-11-13)
Treebrowser:
* Fix a typo in configuration parsing causing option for
- "open new files" have not being save/restored correctly (Issue##469, PR#473)
+ "open new files" have not being save/restored correctly (Issue#469, PR#473)
Internationalization:
* Updated translations: de, es, fr, kk, pt
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).