From a8d70521fa5827617267b32f196e8510e7090579 Mon Sep 17 00:00:00 2001 From: tammasloughran Date: Thu, 18 Feb 2021 23:33:15 +0100 Subject: [PATCH 1/3] Fortran snippets changes --- snippets/fortran.snippets | 142 +++++++++++++++++++++++++++++--------- 1 file changed, 108 insertions(+), 34 deletions(-) diff --git a/snippets/fortran.snippets b/snippets/fortran.snippets index 8cb6f9a75..639208b84 100644 --- a/snippets/fortran.snippets +++ b/snippets/fortran.snippets @@ -1,30 +1,32 @@ +# Implicit none snippet impl implicit none - ${0} + ${0} +# Program snippet prog program ${1:main} ${0} end program $1 -snippet mod +# Module +snippet modu module ${1:modulename} ${0} end module $1 +# Procedure declaration snippet proc - procedure ${1:name} - ${0} - end procedure $1 -snippet iface + procedure (${1:procname}) :: ${0} +# Interface +snippet inter interface ${1:name} ${0} end interface $1 +# Documentation snippet doc - ! """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - ! File: ${2:`vim_snippets#Filename('$1')`} - ! Author: `g:snips_author` - ! Email: `g:snips_email` - ! Github: `g:snips_github` - ! Description: $1 - ! """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + !! File: ${2:`vim_snippets#Filename('$1')`} + !! Author: `g:snips_author` + !! Email: `g:snips_email` + !! Github: `g:snips_github` + !! Description: $1 ${0} snippet dox !> @brief ${1} @@ -36,68 +38,140 @@ snippet doxp !> @param[${1}]${0} # Variables definitions # Boolean -snippet bool +snippet log logical :: ${0} # Integer snippet int integer :: ${0} +# Real snippet real real :: ${0} # Double Precision snippet double double precision :: ${0} +# Complex +snippet comp + complex :: ${0} # Char -snippet str - character(len=${1:*}) :: ${0:} +snippet char + character (len=${1::}) :: ${0:} # Types snippet type - type(${1:name}) + type (${1:typename}) :: ${0} +snippet typed + type :: ${1:name} ${0} - end type -snippet const + end type ${1} +# Parameter +snippet param ${1:type}, parameter :: $2 = ${0} +# Array snippet arr - ${1:type}, ${2:allocatable, }dimension(${3::}) :: ${0} + ${1:type}, ${2:allocatable, }dimension (${3::}) :: ${0} +# Dummy arguments snippet intent - ${1:type}, intent(inout) :: ${0} -# Array -snippet / - (/ $1 /) ${2:,&} ${0} + ${1:type}, intent (${2:inout}) :: ${0} +snippet class + class (${1:ClassType}) :: ${0} +# Implied do +snippet imdo + (${1} ${2:i}, $2=${3:start},${4:stop},${5:step}) +# If snippet if if (${1:condition}) then ${0} end if +# If else +snippet ifel + if (${1:condition1}) then + ${2} + else if (${3:condition2}) then + ${3} + else + ${4} + end if +# Select case snippet case select case (${1:expr}) case ($2) case default $3 end select ${0} +# select type +snippet selt + select type (${1:expr}) + $2 is ($3) + class default + $4 + end select ${0} +# Do loop snippet do - do ${1:i} = ${2:start}, ${3:end}, ${4:incr} + do ${1:i}=${2:start},${3:end},${4:incr} ${0} end do +# Do while snippet dow do while (${1:condition}) $2 end do +# Subroutine snippet sub subroutine ${1:name}($2) ${0} end subroutine $1 +# Function snippet func - function ${1:name}($2) result($3) + function ${1:name}($2) result ($3) ${0} end function $1 +# Print snippet pr - write(*,*) ${0} -snippet dpr - write(*,*) '$1 = ', $1 -snippet read - read(unit = ${1:fp}, file = ${2:filename}, iostat = ${3:ierr}) ${0} + print *, ${0} +# Write (standard out) +snippet wr + write (*,*) ${0} +# Write variable +snippet wrv + write (*,*) '$1 = ', $1 +# Write full snippet write - write(unit = ${1:fp}, file = ${2:filename}, iostat = ${3:ierr}) ${0} + write (unit=${1:fp}, file=${2:filename}, iostat=${3:ierr}) ${0} +# Read +snippet read + read (unit=${1:fp}, file=${2:filename}, iostat=${3:ierr}) ${0} +# Open snippet open - open(unit = ${1:fp}, file = ${2:filename}, status = ${3:unknown}, iostat = ${4:ierr}) ${0} + open (unit=${1:fp}, file=${2:filename}, status=${3:unknown}, iostat=${4:ierr}) ${0} +# Close snippet close - close(unit = ${1:fp}) ${0} + close (unit=${1:fp}) ${0} +# Class module with a single attribute and method +snippet classmod + module ${1:ClassName}_m + implicit none + private + + type, public :: $1 + ${2} :: ${3:attribute} + contains + procedure :: ${4:constructor} + procedure :: ${5:method} + end type $1 + + interface $1 + module procedure $4 + end interface + contains + type ($2) function $4($3${6}) + $4%$3 = $3 + ${7} + end function $4 + + subroutine $5(self) + class ($1), intent (inout) :: self + ${0} + end subroutine $5 + end module $1_m +# Use +snippet use + use ${1:module}, only: ${0} From e2986e84c0be61b8e015cf97f8d28b4a0fe77682 Mon Sep 17 00:00:00 2001 From: tammasloughran Date: Wed, 3 Mar 2021 21:54:54 +0100 Subject: [PATCH 2/3] Submodule snippet --- snippets/fortran.snippets | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/snippets/fortran.snippets b/snippets/fortran.snippets index 639208b84..c4382521a 100644 --- a/snippets/fortran.snippets +++ b/snippets/fortran.snippets @@ -12,6 +12,11 @@ snippet modu module ${1:modulename} ${0} end module $1 +# submodule +snippet submod + submodule (${1:parent}) ${2:submodulename} + ${0} + end submodule ${2} # Procedure declaration snippet proc procedure (${1:procname}) :: ${0} @@ -38,7 +43,7 @@ snippet doxp !> @param[${1}]${0} # Variables definitions # Boolean -snippet log +snippet logi logical :: ${0} # Integer snippet int @@ -70,7 +75,7 @@ snippet arr ${1:type}, ${2:allocatable, }dimension (${3::}) :: ${0} # Dummy arguments snippet intent - ${1:type}, intent (${2:inout}) :: ${0} + ${1:datatype}, intent (${2:inout}) :: ${0} snippet class class (${1:ClassType}) :: ${0} # Implied do @@ -91,7 +96,7 @@ snippet ifel ${4} end if # Select case -snippet case +snippet sel select case (${1:expr}) case ($2) case default From 1dc5bae45bb02b728dfa88f086daeca0ce801a52 Mon Sep 17 00:00:00 2001 From: tammasloughran Date: Sat, 6 Mar 2021 18:25:53 +0100 Subject: [PATCH 3/3] Duplicate snippets for multiple triggers --- snippets/fortran.snippets | 44 +++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/snippets/fortran.snippets b/snippets/fortran.snippets index c4382521a..480960ebe 100644 --- a/snippets/fortran.snippets +++ b/snippets/fortran.snippets @@ -8,6 +8,10 @@ snippet prog ${0} end program $1 # Module +snippet mod + module ${1:modulename} + ${0} + end module $1 snippet modu module ${1:modulename} ${0} @@ -19,12 +23,16 @@ snippet submod end submodule ${2} # Procedure declaration snippet proc - procedure (${1:procname}) :: ${0} + procedure(${1:type}) :: ${0} # Interface snippet inter interface ${1:name} ${0} end interface $1 +snippet iface + interface ${1:name} + ${0} + end interface $1 # Documentation snippet doc !! File: ${2:`vim_snippets#Filename('$1')`} @@ -43,6 +51,8 @@ snippet doxp !> @param[${1}]${0} # Variables definitions # Boolean +snippet bool + logical :: ${0} snippet logi logical :: ${0} # Integer @@ -59,10 +69,12 @@ snippet comp complex :: ${0} # Char snippet char - character (len=${1::}) :: ${0:} + character(len=${1::}) :: ${0:} +snippet str + character(len=${1::}) :: ${0:} # Types snippet type - type (${1:typename}) :: ${0} + type(${1:typename}) :: ${0} snippet typed type :: ${1:name} ${0} @@ -77,7 +89,7 @@ snippet arr snippet intent ${1:datatype}, intent (${2:inout}) :: ${0} snippet class - class (${1:ClassType}) :: ${0} + class(${1:ClassType}) :: ${0} # Implied do snippet imdo (${1} ${2:i}, $2=${3:start},${4:stop},${5:step}) @@ -102,6 +114,12 @@ snippet sel case default $3 end select ${0} +snippet case + select case (${1:expr}) + case ($2) + case default + $3 + end select ${0} # select type snippet selt select type (${1:expr}) @@ -111,7 +129,7 @@ snippet selt end select ${0} # Do loop snippet do - do ${1:i}=${2:start},${3:end},${4:incr} + do ${1:i} = ${2:start}, ${3:end}, ${4:incr} ${0} end do # Do while @@ -126,7 +144,7 @@ snippet sub end subroutine $1 # Function snippet func - function ${1:name}($2) result ($3) + function ${1:name}($2) result($3) ${0} end function $1 # Print @@ -134,22 +152,22 @@ snippet pr print *, ${0} # Write (standard out) snippet wr - write (*,*) ${0} + write(*,*) ${0} # Write variable snippet wrv - write (*,*) '$1 = ', $1 + write(*,*) '$1 = ', $1 # Write full snippet write - write (unit=${1:fp}, file=${2:filename}, iostat=${3:ierr}) ${0} + write(unit=${1:fp}, file=${2:filename}, iostat=${3:ierr}) ${0} # Read snippet read - read (unit=${1:fp}, file=${2:filename}, iostat=${3:ierr}) ${0} + read(unit=${1:fp}, file=${2:filename}, iostat=${3:ierr}) ${0} # Open snippet open - open (unit=${1:fp}, file=${2:filename}, status=${3:unknown}, iostat=${4:ierr}) ${0} + open(unit=${1:fp}, file=${2:filename}, status=${3:unknown}, iostat=${4:ierr}) ${0} # Close snippet close - close (unit=${1:fp}) ${0} + close(unit=${1:fp}) ${0} # Class module with a single attribute and method snippet classmod module ${1:ClassName}_m @@ -173,7 +191,7 @@ snippet classmod end function $4 subroutine $5(self) - class ($1), intent (inout) :: self + class($1), intent(inout) :: self ${0} end subroutine $5 end module $1_m