Re: [BUG] tangle breaks fortran modules [9.7-pre (release_9.6.7-581-gd38ca5)]

2023-09-05 Thread Ihor Radchenko
Paul Stansell  writes:

> ...  I was not aware of ":main no"

Yeah. We don't have any documentation for ob-fortran, unfortunately.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at .
Support Org development at ,
or support my work at 



Re: [BUG] tangle breaks fortran modules [9.7-pre (release_9.6.7-581-gd38ca5)]

2023-09-05 Thread Paul Stansell
>
> Meanwhile, you can set :main no as default header argument for fortran.
>

Thanks for taking another look.  I was not aware of ":main no", but it's a
perfectly good fix for my problem.


Re: [BUG] tangle breaks fortran modules [9.7-pre (release_9.6.7-581-gd38ca5)]

2023-09-05 Thread Ihor Radchenko
Paul Stansell  writes:

>>
>> I opened the latest Org git repo, ran make repro, opened the file,
>> clicked on "tangle" link, moved to the linked source code, and executed
>> it. It worked.
>>
>> So, I am unable to reproduce the problem on my system.
>>
>
> Thanks for investigating.  Can you please post your tangled file named
> circle.f90.
>
> Mine looks like this
>
> program main

Never mind my previous message. I forgot the provided init.el file,
which makes all the difference.

Confirmed.

By default, ob-fortran (and at least ob-C) wrap the src block body to
become a standalone function unless you put :main no header argument.

The default behaviour is mostly useful during execution, but not when
tangling.

I will need to think about the best way to approach this. A tentative
fix would be handling :main header argument only during block evaluation.

Meanwhile, you can set :main no as default header argument for fortran.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at .
Support Org development at ,
or support my work at 



Re: [BUG] tangle breaks fortran modules [9.7-pre (release_9.6.7-581-gd38ca5)]

2023-09-04 Thread Paul Stansell
>
> I opened the latest Org git repo, ran make repro, opened the file,
> clicked on "tangle" link, moved to the linked source code, and executed
> it. It worked.
>
> So, I am unable to reproduce the problem on my system.
>

Hello Ihor,

Thanks for investigating.  Can you please post your tangled file named
circle.f90.

Mine looks like this

program main
MODULE Circle
  implicit None
  public :: area
contains
  function area(r)
  implicit none
  real, intent(in) :: r
  real :: area
  area = 3.14159 * r**2
  return
  end function area
END MODULE Circle
end program main

which is broken because org/babel has added the first and last lines.

Thanks,

Paul


Re: [BUG] tangle breaks fortran modules [9.7-pre (release_9.6.7-581-gd38ca5)]

2023-09-04 Thread Ihor Radchenko
Paul Stansell  writes:

> The attached file is an example of how tangle wraps the Fortran module in
>
>   program main
>   end program main
>
> which prevents the code from compiling.
>
> There are more instructions on how to reproduce the bug in the attached
> bug.org file.

I opened the latest Org git repo, ran make repro, opened the file,
clicked on "tangle" link, moved to the linked source code, and executed
it. It worked.

So, I am unable to reproduce the problem on my system.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at .
Support Org development at ,
or support my work at 



[BUG] tangle breaks fortran modules [9.7-pre (release_9.6.7-581-gd38ca5)]

2023-09-03 Thread Paul Stansell
Hello,

The attached file is an example of how tangle wraps the Fortran module in

  program main
  end program main

which prevents the code from compiling.

There are more instructions on how to reproduce the bug in the attached
bug.org file.

Paul



Emacs  : GNU Emacs 28.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.37, cairo version 1.16.0)
 of 2023-03-16, modified by Debian
Package: Org mode version 9.7-pre (release_9.6.7-581-gd38ca5 @
/home/ps/.emacs.d_Kubuntu-23.04/org-mode-git/lisp/)

current state:
==
(setq
 org-link-elisp-confirm-function 'yes-or-no-p
 org-bibtex-headline-format-function 'org-bibtex-headline-format-default
 org-log-done 'time
 org-fontify-done-headline nil
 org-log-into-drawer t
 org-startup-folded t
 org-persist-after-read-hook '(org-element--cache-persist-after-read)
 org-format-latex-options '(:foreground "Yellow" :background default :scale
1.2
:html-foreground "Black" :html-background
"Transparent"
:html-scale 1.07 :matchers ("begin" "$1" "$"
"$$" "\\(" "\\["))
 org-export-before-parsing-hook '(org-attach-expand-links)
 org-cycle-tab-first-hook '(org-babel-hide-result-toggle-maybe
org-babel-header-arg-expand)
 org-archive-hook '(org-attach-archive-delete-maybe)
 org-file-apps '((auto-mode . emacs) ("\\.odt\\'" . "libreoffice %s")
 ("\\.docx\\'" . "libreoffice %s") ("\\.xlsx\\'" .
"libreoffice %s")
 ("\\.png\\'" . "xv %s") ("\\.jpg\\'" . "xv %s")
("\\.jpeg\\'" . "xv %s")
 ("\\.webp\\'" . "xv %s") ("\\.pdf\\'" . "okular \"%s\"")
 ("\\.xoj" . "xournal %s") ("\\.xopp" . "xournalpp %s"))
 org-odt-format-inlinetask-function
'org-odt-format-inlinetask-default-function
 org-ascii-format-drawer-function #[771 " \207" [] 4 "\n\n(fn NAME CONTENTS
WIDTH)"]
 org-cycle-hook '(org-cycle-hide-archived-subtrees
org-cycle-show-empty-lines
  org-cycle-optimize-window-after-visibility-change
  org-cycle-display-inline-images)
 org-persist-before-read-hook '(org-element--cache-persist-before-read)
 org-mode-hook '(#[0 "\300\301\302\303\304$\207"
   [add-hook change-major-mode-hook org-fold-show-all
append local] 5]
 #[0 "\300\301\302\303\304$\207"
   [add-hook change-major-mode-hook
org-babel-show-result-all append local]
   5]
 org-babel-result-hide-spec org-babel-hide-all-hashes)
 org-babel-load-languages '((R . t) (emacs-lisp . t) (gnuplot . t) (octave
. t) (python . t)
(fortran . t) (sql . t) (ditaa . t) (dot . t)
(shell . t))
 org-latex-format-drawer-function #[514 "\207" [] 3 "\n\n(fn _ CONTENTS)"]
 org-latex-format-headline-function
'org-latex-format-headline-default-function
 org-confirm-shell-link-function 'yes-or-no-p
 org-adapt-indentation t
 org-html-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME CONTENTS)"]
 outline-isearch-open-invisible-function 'outline-isearch-open-invisible
 org-highlight-latex-and-related '(latex)
 org-odt-format-headline-function 'org-odt-format-headline-default-function
 org-agenda-before-write-hook '(org-agenda-add-entry-text)
 org-babel-tangle-lang-exts '(("fortran" . "F90") ("python" . "py")
("emacs-lisp" . "el")
  ("elisp" . "el"))
 org-src-mode-hook '(org-src-babel-configure-edit-buffer
org-src-mode-configure-edit-buffer)
 org-confirm-elisp-link-function 'yes-or-no-p
 org-clock-out-remove-zero-time-clocks t
 org-hide-leading-stars t
 org-todo-keywords '((sequence "TODO(t!)" "MAYBE(m!)" "STARTED(s!)"
"WAITING(w@/!)" "|"
  "DONE(d)" "INFO(i!)" "CANCELLED(c@)" "UNFINISHED(u@)"
"ABANDONED(a@)")
 )
 org-id-link-to-org-use-id t
 org-speed-command-hook '(org-speed-command-activate
org-babel-speed-command-activate)
 org-html-format-inlinetask-function
'org-html-format-inlinetask-default-function
 org-ascii-format-inlinetask-function 'org-ascii-format-inlinetask-default
 org-odt-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME CONTENTS)"]
 org-confirm-babel-evaluate nil
 org-fold-core-isearch-open-function 'org-fold--isearch-reveal
 org-clock-in-switch-to-state "STARTED"
 org-clock-persist 'history
 org-latex-format-inlinetask-function
'org-latex-format-inlinetask-default-function
 org-persist-before-write-hook '(org-element--cache-persist-before-write)
 org-tab-first-hook '(org-babel-hide-result-toggle-maybe
org-babel-header-arg-expand)
 org-link-shell-confirm-function 'yes-or-no-p
 org-babel-pre-tangle-hook '(save-buffer)
 org-clock-display-default-range 'untilnow
 org-agenda-loop-over-headlines-in-active-region nil
 org-todo-keyword-faces '(("TODO" :foreground "light pink" :weight bold)
  ("MAYBE" :foreground "light pink" :weight bold)
  ("STARTED" :foreground "gold" :weight bold)
  ("DONE" :foreground "light green" :weight bold)