Git Product home page Git Product logo

org-brain's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

org-brain's Issues

Bug: Creating children in file with title

When using org-brain-add-child and choosing a file which have a title, and org-brain-file-entries-use-title is t, the child will not be added to the existing file, but to a new file named to the title instead.

Empty org-brain-path gives error

Maybe I was doing something wrong, but it appears if there are no org files in org-brain-path (empty directory in my case), then it prompts for "Entry" and no matter what, you get:

"Wrong type argument: stringp, nil"

Visualize entry at point

What do you think about having org-brain-visualize go to the entry at point, if it's an org-brain entry or file? If it's not an org-brain entry or file, then it can open up the menu to pick an entry to visualize. I often want to see who the parents and friends are for an entry that I am reading, so it would be nice to be able to jump to the visualization for it right from the entry. This behavior could be the default behavior or another configuration setting.

Visualization can't show `info:` links

Hi!

I have some links in an org file managed by org-brain, these links points to an info page and Emacs help(like C-h f functions pages).

When I try to visualize with org-brain-visualize it doesn't work. However, I can see some children nodes when trying to enter through its parent.

The message returned by Emacs when trying to display the diagram and summary:

org-brain-insert-resource-button: Wrong type argument: char-or-string-p, (link (:type "info" :path "emacs#Directory" :format plain :raw-link "info:emacs#Directory" :application nil ...))

This is de diagram:

PINNED:  main


               / emacs
   informática / lenguajes
	|
	Vemacs

wanderlust  org-mode  

-----------------------------------------------

- 

This is some of the file contents:

* Variables Por Archivo o Directorio

- Por directorio :: [[info:emacs#Directory%20Variables][info:emacs#Directory Variables]]
- Por archivo :: [[info:emacs#Specifying%20File%20Variables][info:emacs#Specifying File Variables]]
[...]
- Arriba
  - [[help::add-file-local-variable-prop-line]]
    Sino le indicás cuál es el valor, agrega el actual.
  - [[help::delete-file-local-variable-prop-line]]
[...]
* Brainchildren    :brainchildren:
- [[brain:wanderlust][wanderlust]]
- [[brain:org-mode][org-mode]]

Feature: represent the map using symbolic links

Hi! First of all, thank you for such an amazing package. I really appreciate the idea behind it in that it's future proof: plain text files, no database, it's easy to both integrate and remove the package from one's note taking workflow.

Concept maps are a great compromise between hierarchy and tags: they are more flexible than hierarchical structures and less verbose than tags (which are also hard to maintain). However, current filesystems are hierarchical by nature and any attempts to fit complex data to it fall apart inevitably. This is especially true for note taking (e.g. "should I put Cryptocurrencies to Finances folder or to Software Engineering one?"). I believe that this problem is solvable with your package. How hard would it be to generate folder structure based on org-brain concept map and put notes' symlinks to it? Imagine I have a flat folder with a bunch of interlinked notes. We can create a topmost folder for a given parent node, create a symlink to the node's file inside it (e.g. index.org), put all child nodes in there as well (or create a similar subfolder in case the child has its own childs). Jump thoughts can be put into a separate directory near child files and folders. This way it would be easy to explore the notes database using any file manager of choice and perform bulk changes on the files (or just copy them with cp -Lr).

This is just an idea, nothing that I consider "must have". The only thing I'm missing now is some kind of review process for my notes, but I guess it's out of scope of the project.

Customization - files extension and links

Nice concept. Works well and interesting.

Would be interesting to allow customization of :

  • file extension (for instance, allow to use .txt files instead of .org files)
  • links (for instance, be able to use wiki: instead of brain: )

Handling spaces in titles when adding nodes

I'm really happy that org-brain can handle spaces in titles, but there is a small issue in commands like org-brain-add-child etc., where if I add a new child "Computer Games", then the tag "#+BRAIN_CHILDREN: Computer Games" (with space) is added. This means that two nodes are shown "Computer" and "Games" although only one file is created "Computer Games.org" (which is correct).

Manually changing "#+BRAIN_CHILDREN: Computer Games" to "#+BRAIN_CHILDREN: Computer%20 Games" fixes the display issue.

Could we have all org-brain-add-* commands automatically replace spaces in all nodes so that the tags are correct?

Thank you very much!

[question] Why the design decision to spread concepts across files?

I am quite excited about org-brain.

Why choose to spread a concept per file? I would want a concept per top-level headline, all in one file.

For three reasons:

  • I really want to use sentences as concepts. Trying org-brain out, I got to "Quotes" and wanted to enter a quote. It broke, because the filename tried to have spaces and quote marks in it.
  • I've been maintaining a brain.org.gpg (plain org-mode) file for the last 5 years, annotating the entries over time with parents/children/friends would be awesome.
  • My brain.org.gpg file is encrypted, versioned and backed up as a single file and I trust that.

Feature: Export Relationship to CSV/TSV

Will it be possible to export all node/relationship into one/several tab-delimited file like:
Node.txt: {NodeID, NodeTitle, NodeResources(optional)}
Relationship.txt: {NodeID, ParentID, ChildID, FriendID}
The schema can change as long as structure and title information is preserved.
If that's possible, maybe I can explore to write a web-page based visualizer using D3.js (http://bl.ocks.org/robschmuecker/7880033).

Resources links include line breaks

It seems that org-brain is able to detect automatically the links inside the of the notes (which is a super cool feature). However, I like to use auto-fill mode to wrap the lines at 79 characters, so sometimes I have line breaks in those links. For example, in this note:

screen shot 2017-06-26 at 23 26 35

I get this result when using org-brain-visualize:

screen shot 2017-06-26 at 23 26 59

I'm not sure if this is the desired behavior for the resources, but I think it looks a bit off. Is this a problem my configuration or it is actually an org-brain bug/feature?

Child/parent completion

It seems I can only get Friends to do auto-complete... nothing is ever allowed for Children/parents.

Am I doing something wrong, or does that not work?

Thanks!

[Feature] Batch input of children/parents

When adding a new child or parent, the query could parse the input on say ";" to create more than one nodes in one go. E.g. activating adding new child and typing "Cat ; Dog ; Mouse" would add all three child nodes.

Lock files show up in HELM of Brain Visualize

I am using org-brain through spacemacs, so I hope this is not spacemacs specific. 🙂

If I use org-brain-visualize while editing a file, that is part of the "org-brain", the HELM-dialog shows me also emacs lock file (e.g. .#ideas). Is there a way to prevent this? 😃

org-brain-visualize doesn't autoload

Hi,

Since changes for version 0.4, the org-brain-visualize doesn't autoload anymore. Can we fix that?
It's resulting in spacemacs fail to call org-brain-visualize via keyboard binding for the first time in a new session. I have to explicitly load org-brain.

Also, thanks for this neat package.

[Feature] Jump/related links

The Brain has one more type of links beyond child, parent - jump links. These link nodes that are related but not in a child/parent relation. E.g.: "hot" and "cold" are related in this way, or "Barack Obama" and "Michelle Obama".

It would be great to have this type too. (I think it could be done simly copying the "child" infrastructure and renaming it to e.g. "related", having :brainrelade: tags and headers. Nicer way would be to generalized the child functions to have a child/related switch)

Thanks!

Update org-brain-create-relationships-from-links

It is now possible to use org-insert-link (bound to C-c C-l by default) in an org-brain entry, in order to link to children (brain-child:), parents (brain-parent:), and friends (brain-friend:).

org-brain-create-relationships-from-links should maybe be updated to take into account the new possible links

About readme

In readme,

  (eval-after-load 'evil
    (evil-set-initial-state 'org-brain-visualize-mode 'emacs))

But eval-after-load is a function, its second argument will be run when we called.

Use with-eval-after-load to instead which is a macro or change the second args into string, symbol or lambda expression.

At least, on my mac is it.

Handle multi-part extensions such as .org.gpg

I've been trying to figure this out, but my lisp-fu is weak.

I use org-crypt to encrypt my org files with GPG. This results in a file extension of .org.gpg.

I have org-brain-files-extension set to "org.gpg".

If I create a new file via org-brain-open then emacs does the right thing when I save the new file, and encrypts it. E.g., if I create a new brain file called 'index' then it is saved as 'index.org.gpg', and encrypted.

org-brain uses file-name-sans-extension in org-brain-parth-entry-name to remove filename extensions when listing them for org-brain-open (and other places), but that function only removes the ".gpg" part of the path.

So when I use org-brain-open after creating and saving some files, the file list looks like:

index.org
somethingelse.org

And so on. If I try to open one of those files than a filename of, for example, "index.org.org.gpg" is assigned to a new, empty, buffer.

org-brain-visualize misaligned

I am having trouble getting the pointers in org-brain-visualize to align properly. I have tried this with several versions of Emacs (macports binaries 25.2.1 as well as savannah emacs compiled from scratch). But same issue. Here are a couple of screenshots:

org-brain-align

org-brain-align-2

This one looks okay though:

org-brain-align-3

and here is the init.el file I'm using:

;;;----- Startup --------------------------------;

;;; Add src directories to path
(add-to-list 'load-path "~/.emacs.d/lisp")

;;; Add the melpa package archives
(require 'package)
(setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
                         ("marmalade" . "https://marmalade-repo.org/packages/")
                         ("melpa" . "https://melpa.org/packages/")))

;;; Add packages to load-path
(package-initialize)

;;;----- Org-mode -------------------------------;

;;; Add upgraded org-mode to load path
(add-to-list 'load-path "~/.emacs.d/lisp/org-9.0.6/lisp")
(add-to-list 'load-path "~/.emacs.d/lisp/org-9.0.6/contrib/lisp" t)

;;; Set default org-directory
(setq org-directory "~/org")

;;; Activate org-mode
(require 'org)

;;;----- Org-Brain ----------------------;

(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(package-selected-packages (quote (org-brain))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

Refile to brain

I must first say that I think org-brain is potentially just what I need. I have a little bash script that captures the text I highlight to a file called capture.org . My plan was then to refile the captured stuff into org-brain but it isn't obvious how it should be done. I found somewhere that it could be done with some elisp but that it would be slow. My question is: is there a way to refile headlines into org-brain using the org-brain interface?

Show headers without an id in "Text" field

Due to the fact that the system can become quite slow with an high nuber of nodes I usually do not give an ID to every header in an org file. Anyway It would be usefull to be able to see these headers in the "text" field of their parent (which has got an Id) in org brain visualize.

Rename Org-Brain File

it would be great to have a function for renaming an org-brain file which renames the file and changes all Brainchildrens accordingly.

Feature: exporting org-brain relationships as links

It would be great to be able to export org-brain relationship properties as links in HTML, PDF, or ODT exports. Maybe the related links could be listed under subheadings like "related" or "see also," depending on the kind of relationship.

Another option for exporting that could be specified is to convert them to #+INCLUDE links before exporting, which would include the body of the entry being linked instead of just a link.

loading data file loop

Hi :)
thanks for the great package 👍

In my *Messages* buffer I see:

Mark set [4 times]
Loading /Users/me/Dropbox/org-brain/.org-brain-data.el (source)...done
Mark set [4 times]
Loading /Users/me/Dropbox/org-brain/.org-brain-data.el (source)...done
Mark set [4 times]
Loading /Users/me/Dropbox/org-brain/.org-brain-data.el (source)...done
Mark set [4 times]
Loading /Users/me/Dropbox/org-brain/.org-brain-data.el (source)...done
Mark set [4 times]
Loading /Users/me/Dropbox/org-brain/.org-brain-data.el (source)...done
Mark set [4 times]
Loading /Users/me/Dropbox/org-brain/.org-brain-data.el (source)...done
Mark set [4 times]
Loading /Users/me/Dropbox/org-brain/.org-brain-data.el (source)...done
Mark set [4 times]
Loading /Users/me/Dropbox/org-brain/.org-brain-data.el (source)...done
Mark set [4 times]
Loading /Users/me/Dropbox/org-brain/.org-brain-data.el (source)...done
Mark set [4 times]

and keeps printing. It's pretty annoying since it writes it to minibuffer and when I use it (minibuffer) it is getting override with one of that message above and I have to C-g in order to continue my work with minibuffer. It happens once per 3-5 seconds. I can't understand what is the trigger. There is trigger for sure since it doesn't happen initially...

What I've found is org-brain--vis-pinned function is trying to load data file. Sure I can pass another parameter to load function to avoid Loading...done message but it doesn't seems like a solution.
It would be great to know why is this loop is running... moreover I don't know how to remove Mark set message which is triggered by one of save-excursion calls.

Could you please help me understand and fix this issue?

Hook on node creation

(please forgive me, as I'm not a heavy elisp'er)

Looking at the code, it appears to me that when you are creating a new child/whatever node it is being written to the buffer directly without using any of the org-mode hooks/functionality.

I have an org-mode hook that writes a date property when I capture an item. I would love to somehow have this run when I create a new child or whatever.

i.e.:

(add-hook 'org-capture-before-finalize-hook 'add-property-with-date-captured)

I'm not sure if there is already a way to do this that I'm not seeing, or maybe there would be a way for org-brain to create a node via org instead of manually?

Or something else :-)

Performance issues?

Thank you for your work on this project. I am hopeful that we can improve its
performance. I am retrofitting, so to speak, my collection of org files into the
org-brain way of doing things. Running org-brain-visualize on a small file with
only 3 subtrees, each small, takes quite a long time. [Aside: I have
approximately 700 org files in my org directory.] I ran M-x elp-instrument-package RET org-brain and then M-x elp-results and discovered the following

Function name Call Count Elapsed Time Average Time
org-brain-visualize 1 33.7054 33.7054
org-brain-parents 1 18.14708 18.14708
org-brain-keywords 397 15.416008000 0.0388312544
org-brain-pins 1 14.345758 14.345758
org-brain-title 25 1.1664720000 0.0466588800
org-brain-insert-visualize-button 12 0.5735349999 0.0477945833
org-brain-files 3 0.2527109999 0.0842369999
org-brain-path-entry-name 1116 0.0291099999 2.608...e-05
org-brain-entry-path 401 0.0151009999 3.765...e-05
org-brain-resources 1 0.014433 0.014433
org-brain-children 1 0.010491 0.010491
org-brain-visualize-mode 1 0.00368 0.00368
org-brain-insert-resource-button 2 0.000214 0.000107

which shows, I think, that org-brain-parents, org-brain-children, and org-brain-pins are the
bottlenecks.

I forked the project and implemented/committed caching for org-brain files, children, and parents resulting in a 2x speed up. I'll try to get a pull request together soon, otherwise please just port the changes over. This update should help everyone, especially people with a large org file repo.

After the cache implementation, and a cache miss which initiates building of the cache, we have much better numbers

Function name Call Count Elapsed Time Average Time
org-brain-visualize 1 15.835363 15.835363
org-brain-keywords 401 15.787954999 0.0393714588
org-brain-pins 1 14.634235 14.634235
org-brain-title 27 1.1756829999 0.0435438148
org-brain-insert-visualize-button 13 0.5837049999 0.0449003846
org-brain-entry-path 404 0.0253169999 6.266...e-05
org-brain-files 1 0.020009 0.020009
org-brain-path-entry-name 374 0.0194809999 5.208...e-05
org-brain-resources 1 0.01172 0.01172
org-brain-visualize-mode 1 0.001636 0.001636
org-brain-insert-resource-button 2 0.000133 6.65e-05
org-brain-children 1 2e-06 2e-06
org-brain-parents 1 1e-06 1e-06

Now I've added the ability to pin through the org-brain-visualize interface,
bound to "P". Doing so allows consistent caching and validation of
org-brain-pins, which I have also now implemented. We now have an enormous
increase in speed:

Function name Call Count Elapsed Time Average Time
org-brain-visualize 1 1.018994 1.018994
org-brain-title 28 0.8870419999 0.0316800714
org-brain-keywords 28 0.8867950000 0.0316712500
org-brain-insert-visualize-button 14 0.3781 0.0270071428
org-brain-resources 1 0.008334 0.008334
org-brain-entry-path 31 0.0016150000 5.209...e-05
org-brain-visualize-mode 1 0.001558 0.001558
org-brain-insert-resource-button 2 4.9e-05 2.45e-05
org-brain-parents 1 3e-06 3e-06
org-brain-children 1 3e-06 3e-06
org-brain-pins 1 2e-06 2e-06

I think this is getting quite usable.

Cache invalidation happens at the correct times. If you make changes to pins or
brainchildren outside the org-brain-visualize interface, I've added M-x
org-brain-invalidate-all-caches. You shouldn't need to use that if you use the
org-brain-visualize interface/mode/keybindings though.

Open current entry for editing -> empty

Hi

Thanks for sharing org-brain. It is a fantastic addition to org-mode that I use on almost daily basis.
Installed the latest version from Melpa and started to work on a org-brain file with a couple of child entries.
All org files are stored in ~/org/brain/
First time I created the org-brain file using the shortcut 'o' (org-brain-goto-current) opened the file in the split screen with the ID information.
After closing emacs and trying it again it with org-brain-visualize and trying to edit an entry (with shortcut 'o') it opened an empty file in the split screen.
When I open the created org files in emacs buffer first (so not using org-brain to select them) org-brain-goto-current does open the files with ID info.
So there is a workaround by manually opening all org files in emacs, but I assume org-brain should be able to find and open the child files with IDs automatically.

Using org-brain-update-id-locations resulted in "10 unique files scanned for IDs" but didn't solve the problem.

Rename files

Include a command to rename file entries, so that the file still works as an entry across org-brain.

create children from `brain:` links in would-be parent (backlinks)

I'd like inserting brain: links to automatically create a parent -> child relation a la backlinking ([where link is inserted] -> [where link points]).

Initially I thought this was the work of org-brain-insert-link. But I can see how this would be unwanted behavior.
Is the right thing to create a function org-brain-insert-childlink?
Is it reasonable to use buffer-file-name and org-brain-new-child?
It seems like it will be straightforward forward but i'm not yet up and running with org-brain or elisp and not sure where the dragons are. Any hints?

duplicate entry

the original org file:

`#+BRAIN_CHILDREN: 9f9b95a6-439f-4332-8e9a-02c789a9b2ef

  • Test

  • a
    :PROPERTIES:
    :ID: 9f9b95a6-439f-4332-8e9a-02c789a9b2ef
    :BRAIN_PARENTS: test
    :END:
    `

after visualize:

`PINNED:

test

a a `

Create parent directory?

directory-files-recursively: Opening directory: No such file or directory, c:/msys32/home/feng/org/brain

Can't deploy by Travis CI

Hello.When I add the config which auto install 'org-brain' by the function 'package-install',my Emacs App can start up correct. But the Travis CI tell me 'The log length has exceeded the limit of 4 MB (this usually means that the test suite is raising the same exception over and over).'
Can you help me, thanks.
The log page: https://travis-ci.org/emuio/emacs.d/jobs/222531880

Brain-visualize stealing focus

After I activate brain-visualize, after some time (not immediately) it starts to steal focus from any other buffer after some time. I.e. no matter in which buffer am I, brain-visualize opens up and takes the point away from its current focus and puts it onto the central topic in the map.

Killing the visualize buffer doesn't help - it still returns and continues stealing focus. The only way out is to restart emacs (and not run brain-visualize)

I have no idea what could be the reason here. Do you have an idea what could be the issue here?

Symbol's function definition is void.

First of all, I really like the concept of org-brain very much, it is a great idea and I hope it will continue to evolve.

I have installed org-mode in spacemacs, however org-brain-visualize does not seem to work,

Symbol's function definition is void: aa2u

Creating a link seems to work at first, however, after a restart the link does not anymore, and it wants to create a new heading:

No match - create this as a new heading?

From your readme, the following is also not accepted in .spacemacs (emacs complains). It only works by inserting these lines into the brackets of (defun org-brain/init-org-brain () )

(use-package org-brain :ensure t
  :init
  (setq org-brain-path "directory/path/where-i-want-org-brain")
  ;; For Evil users
  (eval-after-load 'evil
    (evil-set-initial-state 'org-brain-visualize-mode 'emacs))
  :config
  (setq org-id-track-globally t)
  (setq org-id-locations-file "~/.emacs.d/.org-id-locations")
  (push '("b" "Brain" plain (function org-brain-goto-end)
          "* %i%?" :empty-lines 1)
        org-capture-templates)
  (setq org-brain-visualize-default-choices 'all)
  (setq org-brain-title-max-length 12))

May be, it was not installed correctly? ( dotspacemacs-additional-packages in .spacemacs)

Bindining org-brain-visualize-back in ryo

I rebind many keys org-brain in ryo (as you can see I'm a fan of your work :)).
Everything works except org-brain-visualize-back. Here is an example what I do

(ryo-modal-major-mode-keys
   'org-brain-visualize-mode
   ("e" org-brain-new-child)
   ("a" org-brain-visualize-back))

org-brain-new-child works but not org-brain-visualize-back (unknown function nil...)

Thank you!

Activate Window on 'visualize'

After calling org-brain-visualize a new window opens with the found item. This window is deactivated by default. It should be activated.

Edit visualize buffer ala wdired

When you invoke wdired in a dired buffer, you can edit the displayed filenames directly in the buffer, and they will be renamed upon saving. Would be cool if org-brain could do the same.

Visualize (consistent portions of) the whole mind map

I really would like to use org-brain as a mind-mapping tool for brainstorming (I believe this is crucial for all the people using the GTD system which are a consistent part of org-mode users) but the portion of the map which is currently visualized is too small (in my opinion) for this use... Is it possible to improve the visualization in order to be similar to other mind-mapping softwares like freemind...?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.