From c8b33df81101a321209a6037ebd6a0a0e502b0a4 Mon Sep 17 00:00:00 2001
From: "M. Tong" <demon386@gmail.com>
Date: Fri, 17 Apr 2015 17:08:21 +0800
Subject: [PATCH 1/5] Don't disabling which-function-mode in Python

---
 modules/prelude-python.el | 1 -
 1 file changed, 1 deletion(-)

diff --git a/modules/prelude-python.el b/modules/prelude-python.el
index 5c28374..7def5fd 100644
--- a/modules/prelude-python.el
+++ b/modules/prelude-python.el
@@ -89,7 +89,6 @@
   (subword-mode +1)
   (anaconda-mode 1)
   (eldoc-mode 1)
-  (which-function-mode -1)
   (setq-local electric-layout-rules
               '((?: . (lambda ()
                         (and (zerop (first (syntax-ppss)))

From b4717ca5b30c80c40b0a17b356a5addb46b4d6d3 Mon Sep 17 00:00:00 2001
From: Geoff Shannon <geoffpshannon@gmail.com>
Date: Fri, 15 May 2015 16:53:39 -0500
Subject: [PATCH 2/5] Make it possible to stop prelude loading any theme at all

Fixes #844.
---
 README.md          | 7 +++++++
 core/prelude-ui.el | 3 ++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index f7e5b76..99daeca 100644
--- a/README.md
+++ b/README.md
@@ -499,6 +499,13 @@ Or you can use another theme altogether by adding something in `personal/preload
   install it from MELPA first (`M-x package-install RET
   solarized-theme`).
 
+Finally, if you don't want any theme at all, you can add this to your
+`personal/preload`:
+
+```lisp
+(setq prelude-theme nil)
+```
+
 ### Personalizing
 
 Fork the official Prelude repo and add your own touch to it. You're advised to avoid changing stuff outside of the
diff --git a/core/prelude-ui.el b/core/prelude-ui.el
index 3544051..bf59f57 100644
--- a/core/prelude-ui.el
+++ b/core/prelude-ui.el
@@ -68,7 +68,8 @@
                                           "%b"))))
 
 ;; use zenburn as the default theme
-(load-theme prelude-theme t)
+(when prelude-theme
+  (load-theme prelude-theme t))
 
 (provide 'prelude-ui)
 ;;; prelude-ui.el ends here

From 61d45f8e6e6fa63416db1cbf9a9f034d54a15d66 Mon Sep 17 00:00:00 2001
From: Geoff Shannon <geoffpshannon@gmail.com>
Date: Sat, 16 May 2015 11:43:14 -0500
Subject: [PATCH 3/5] Extract a function for reopening a file as root

---
 core/prelude-core.el | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/core/prelude-core.el b/core/prelude-core.el
index 353dbfa..94e685a 100644
--- a/core/prelude-core.el
+++ b/core/prelude-core.el
@@ -285,6 +285,10 @@ there's a region, all lines that region covers will be duplicated."
   (interactive)
   (byte-recompile-directory prelude-dir 0))
 
+(defun prelude-find-alternate-file-as-root (filename)
+  "Wraps `find-alternate-file' with opening a file as root."
+  (find-alternate-file (concat "/sudo:root@localhost:" filename)))
+
 (require 'ido)
 (defun prelude-sudo-edit (&optional arg)
   "Edit currently visited file as root.
@@ -296,7 +300,7 @@ buffer is not visiting a file."
   (if (or arg (not buffer-file-name))
       (find-file (concat "/sudo:root@localhost:"
                          (ido-read-file-name "Find file(as root): ")))
-    (find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))
+    (prelude-find-alternate-file-as-root buffer-file-name)))
 
 (defadvice ido-find-file (after find-file-sudo activate)
   "Find file as root if necessary."
@@ -304,7 +308,7 @@ buffer is not visiting a file."
               (equal major-mode 'dired-mode)
               (not (file-exists-p (file-name-directory buffer-file-name)))
               (file-writable-p buffer-file-name))
-    (find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))
+    (prelude-find-alternate-file-as-root buffer-file-name)))
 
 (defun prelude-start-or-switch-to (function buffer-name)
   "Invoke FUNCTION if there is no buffer with BUFFER-NAME.

From cd9ea1edee66de2e356b01dae659d26263eddccf Mon Sep 17 00:00:00 2001
From: Geoff Shannon <geoffpshannon@gmail.com>
Date: Sat, 16 May 2015 11:43:47 -0500
Subject: [PATCH 4/5] Change how the "re-open file as root" functionality works

Fixes #850

Use find-file-hook instead of advising ido-find-file.
---
 core/prelude-core.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/core/prelude-core.el b/core/prelude-core.el
index 94e685a..5243eb8 100644
--- a/core/prelude-core.el
+++ b/core/prelude-core.el
@@ -302,13 +302,14 @@ buffer is not visiting a file."
                          (ido-read-file-name "Find file(as root): ")))
     (prelude-find-alternate-file-as-root buffer-file-name)))
 
-(defadvice ido-find-file (after find-file-sudo activate)
+(defun prelude-reopen-as-root ()
   "Find file as root if necessary."
   (unless (or (tramp-tramp-file-p buffer-file-name)
               (equal major-mode 'dired-mode)
               (not (file-exists-p (file-name-directory buffer-file-name)))
               (file-writable-p buffer-file-name))
     (prelude-find-alternate-file-as-root buffer-file-name)))
+(add-hook 'find-file-hook 'prelude-reopen-as-root)
 
 (defun prelude-start-or-switch-to (function buffer-name)
   "Invoke FUNCTION if there is no buffer with BUFFER-NAME.

From 67cf26cbbd998ad9ebc85e7fe47c875f7d226f38 Mon Sep 17 00:00:00 2001
From: Geoff Shannon <geoffpshannon@gmail.com>
Date: Sat, 16 May 2015 12:39:31 -0500
Subject: [PATCH 5/5] Don't open a file as root if it is owned by the current
 user

Fixes #839.

The reasoning behind this is that if we own a file, we can change it's
permissions with `chmod` so there's probably a good reason it's not
writable.
---
 core/prelude-core.el | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/core/prelude-core.el b/core/prelude-core.el
index 5243eb8..30db174 100644
--- a/core/prelude-core.el
+++ b/core/prelude-core.el
@@ -285,6 +285,17 @@ there's a region, all lines that region covers will be duplicated."
   (interactive)
   (byte-recompile-directory prelude-dir 0))
 
+(defun prelude-file-owner-uid (filename)
+  "Return the UID of the FILENAME as an integer.
+
+See `file-attributes' for more info."
+  (nth 2 (file-attributes filename 'integer)))
+
+(defun prelude-file-owned-by-user-p (filename)
+  "Return t if file FILENAME is owned by the currently logged in user."
+  (equal (prelude-file-owner-uid filename)
+         (user-uid)))
+
 (defun prelude-find-alternate-file-as-root (filename)
   "Wraps `find-alternate-file' with opening a file as root."
   (find-alternate-file (concat "/sudo:root@localhost:" filename)))
@@ -307,7 +318,8 @@ buffer is not visiting a file."
   (unless (or (tramp-tramp-file-p buffer-file-name)
               (equal major-mode 'dired-mode)
               (not (file-exists-p (file-name-directory buffer-file-name)))
-              (file-writable-p buffer-file-name))
+              (file-writable-p buffer-file-name)
+              (prelude-file-owned-by-user-p buffer-file-name))
     (prelude-find-alternate-file-as-root buffer-file-name)))
 (add-hook 'find-file-hook 'prelude-reopen-as-root)