gregdetre / emacs-freex

Emacs Freex mode is a minor mode for organizing and editing a massively-hyperlinked database of your notes and ideas. It's a personal wiki on steroids.
GNU General Public License v2.0
77 stars 11 forks source link

You can not enter freex mode when not in the proper directory #7

Closed ychaouche closed 7 years ago

ychaouche commented 7 years ago

Hello !

When I M-x freex-mode I have this error message.

Steps to reproduce :

  1. M-x freex-meta-find RET new nugget
  2. I get this http://i.imgur.com/BajeFwK.png?1 and the C-x C-f command shows I'm in my freex directory.
  3. M-x freex-mode I get the error You can not enter freex mode when not in the proper directory : http://i.imgur.com/Qv5melI.png

Any help appreciated. Here's freex-conf.el :

(add-to-list 'load-path "~/.emacs.d/emacs-freex-master/")
(setq freex-mode-dir "/home/ychaouche/.emacs.d/freex") ; 
(setq freex-mode-ext "freex")
(setq freex-mode-dir-filter "^[^.#]+\\.freex$")
(setq auto-mode-alist
      (cons '("\\.freex\\'" . freex-mode)
            auto-mode-alist))
(setq freex-content-storage "mirror-files-to-db")
(load "~/.emacs.d/emacs-freex-master/freex-mode.el") ; xxx
(add-hook 'freex-embed-save-hook 'freex-meta-update-index)
(add-hook 'freex-embed-save-hook 'freex-fontify-update-implicit-link-regexp)
(add-hook 'freex-meta-add-nugget-hooks
          'freex-meta-parse-alias-into-tag-parents)
(define-key freex-mode-map [(control =)] 'freex-embed-all-tag-children)
(define-key freex-mode-map "\M-s" 'save-buffer)
(define-key freex-mode-map "\M-DEL" 'backward-kill-word)
(setq freex-embed-color-step 25)
(setq completion-ignore-case t)
(define-key minibuffer-local-isearch-map (quote [67108921])
   (lookup-key minibuffer-local-isearch-map "\C-s"))
(define-key freex-mode-map (kbd "RET") 'freex-hiert-newline-and-indent)
(define-key freex-mode-map [(shift return)] 'newline)
(define-key freex-mode-map [(meta return)]
  'freex-meta-define-new-or-insert-metadata)
(define-key freex-mode-map [(meta shift return)]
  'freex-meta-edit-tag-parents-in-minibuffer)
(define-key freex-mode-map "\M-." 'freex-hiert-in2)
(define-key freex-mode-map "\M-," 'freex-hiert-out2)
(define-key freex-mode-map
  (quote [201326641]) ;; [(control meta 1)]
  'freex-fontify-insert-sect-element-1)
(define-key freex-mode-map
  (quote [201326642]) ;; [(control meta 2)]
  'freex-fontify-insert-sect-element-2)
(define-key freex-mode-map
  (quote [201326643]) ;; [(control meta 3)]
  'freex-fontify-insert-sect-element-3)
(require 'freex)
(require 'freex-hiert)
ychaouche commented 7 years ago

After searching in the source code, I have found that these two lines were responsible for checking if we're in the good directory :

https://github.com/gregdetre/emacs-freex/blob/master/freex-mode.el#L56 (if (not filename)

where filename is defined a couple lines above in https://github.com/gregdetre/emacs-freex/blob/master/freex-mode.el#L54 (let ((filename (buffer-file-name)))

And

https://github.com/gregdetre/emacs-freex/blob/master/freex-mode.el#L62 (if (not (equal (file-name-directory filename) freex-mode-dir))

So the freex-mode-dir has to contain a trailing slash, otherwise this test won't pass and freex-mode can't be turned on.